当使用钱海支付通道进行支付成功之后,如果订单发货后则变更为completed,这个时候需要把对应订单的物流单号及平台上传到钱海后台,这样才能允许该笔订单资金的提取。没有这个运单号或者失败,则无法代表发货了或者客户收到货,在处理争议以及处理提现的时候都会出现问题。

而上传物流单号则是通过物流的api上传的,经过研究得出一下示例代码,具体如下:

<?php
/*表sales_flat_order新加状态字段logitstatu,默认是0
ALTER TABLE `sales_flat_order` ADD COLUMN `logitstatu` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'oc_shipping';*/
set_time_limit(0);
$dir = dirname(dirname(__FILE__));
require_once($dir .'/app/Mage.php');
//require_once($dir .'/vendor/autoload.php');umask(0);
Mage::app();define("ACCOUNT", "****");
define("TERMINAL", "****");
define("SECURE_CODE", "****");
define("BILL_API", "https://query.oceanpayment.com/service/check/normal");
define("OC_API", "https://query.oceanpayment.com/service/uploadTrackingNo");$read =Mage::getSingleton("core/resource")->getConnection('core_read');
$write=Mage::getSingleton("core/resource")->getConnection('core_write');
$datetimes=date('Y-m-d',strtotime("-30 day"));
$datetimes="2018-12-25 00:00:00";$sql="SELECT a.entity_id,a.increment_id,a.logitstatu,b.parent_id,b.method FROM `sales_flat_order` as a LEFT JOIN `sales_flat_order_payment` as b ON a.entity_id=b.parent_id WHERE a.logitstatu=0 AND a.created_at>'{$datetimes}' AND a.status='complete' AND b.method='oceanpayment_creditcard' ORDER BY a.entity_id ASC;";
$result=$read->fetchAll($sql);
foreach($result as $k=>$v){$singValue=ACCOUNT.TERMINAL.$v['increment_id'].SECURE_CODE;$singValue=hash("sha256", $singValue);$ordata=array("account" =>ACCOUNT,"terminal" =>TERMINAL,"signValue" => $singValue,"order_number" =>$v['increment_id']);$arr = curl_post($ordata,BILL_API);if($arr["paymentInfo"]["payment_id"]){//根据订单号查询物流单号$pid=$read->fetchAll("SELECT track_number FROM `sales_flat_shipment_track` WHERE `order_id`=".$v['entity_id']);//$order=get_object_vars($pid);$tracknumber=$pid['0']['track_number'];if($tracknumber){//获取唯一支付ID$payment_id=$arr["paymentInfo"]["payment_id"];if(strlen($tracknumber)==12){$tracking_site="http://www.sf-express.com/us/en/dynamic_function/waybill/#search/bill-number/";}else{$tracking_site="https://www.17track.net/en#nums";}$tracking_handle="cherry";$values=ACCOUNT.TERMINAL.$payment_id.$tracknumber.$tracking_site.$tracking_handle.SECURE_CODE;$singValue=hash("sha256", $values);$data=array("account" => ACCOUNT,"terminal" => TERMINAL,"signValue" => $singValue,"payment_id" => $payment_id,"tracking_number" => $tracknumber,"tracking_site" => $tracking_site,"tracking_handler" => $tracking_handle);$arr = curl_post($data,OC_API);$tracking_results=$arr["tracking_results"];if ($tracking_results != 1) {file_put_contents("oc_shipping_log.txt",date("Y-m-d H:i:s")."  order:{$v['increment_id']}  "."fail"."\r\n",FILE_APPEND);}else{//上传成功更改状态$sql="update sales_flat_order set logitstatu=1 where entity_id=".$v['entity_id'];$write->query($sql);file_put_contents("oc_shipping_log.txt",date("Y-m-d H:i:s")." order:{$v['increment_id']}  "."success"."\r\n",FILE_APPEND);echo "OK:".$v['increment_id']."\r\n";}}}sleep(3);
}function curl_post($ordata,$url){//调用curl方法$ch = curl_init();//设置抓取的urlcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($ordata));curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 30);$response = curl_exec($ch);curl_close($ch);if (curl_errno($ch)) {$txt = date("Y-m-d H:i:s").'Curl Error:'.curl_error($ch);//捕抓异常//异常数据写入日志file_put_contents("curl_error.txt",date("Y-m-d H:i:s")."\n捕抓异常".$txt,FILE_APPEND);exit;}else{$apiobj=simplexml_load_string($response);$response=json_encode($apiobj);$response=json_decode($response,true);//file_put_contents("curl_error.txt",date("Y-m-d H:i:s")."\n".json_encode($response['paymentInfo']),FILE_APPEND);return $response;}
}
?>

说明:***是钱海给的账户号及秘钥。该文件基于magento1.9开发,使用方式为防止在网站目录下的shell文件夹下,然后启动定时任务执行即可。成功后会给该笔订单增加标记,方便下一次查询的时候不再执行。其他系统的原理类似,只要更换里面的部分写法即可。

other|钱海物流接口上传运单号开发相关推荐

  1. [WebApi]WebApi通过接口上传文件-单文件 多文件上传 文件下载

    WebApi通过接口上传文件 单文件上传(ajax,Form表单都适用) 1.html 2.javascript 3.C# Form表单之单文件上传 1.html 2.javascript 3.C# ...

  2. 免费对接快递数据物流信息接口【快递鸟单号查询API】

    近年来,我国电商产业的迅猛发展也推动着物流行业需求的增加,其中电商平台根据快递单号查询物流信息数据的需求就是基本需求,用户下单后商家把货物有没有及时的按要求发出去,就需要通过物流轨迹的揽件状态来判断, ...

  3. 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传

    [vue开发问题-解决方法](九)使用element upload自定义接口上传文件,input多文件上传 参考文章: (1)[vue开发问题-解决方法](九)使用element upload自定义接 ...

  4. tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied

    tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied 这是因 ...

  5. 苹果cms请求接口上传异常是怎么回事

    用苹果cmsv10做视频网站时候出现这个现象,其实解决方法挺简单的,以下方法是演示通过宝塔操作. 1.检查文件夹的权限,如果权限正常请重新确定保存下.如果这样还不能上传图片的话,请参考方法2: 2.修 ...

  6. 图片预览与图片通过预留接口上传

    提示:图片预览与图片通过预留接口上传的笔记 图片前端预览: 前提:通过input[type=file]让用户选择文件,通过事件对象.target.files拿到用户选择的"文件对象" ...

  7. PHP接口上传文件图片详解

    简介   PHP在处理POST文件上传使用一个文件上传变量$_FILES 和 $HTTP_POST_FILES(已弃用).相同点:$FILES和$HTTP_POST_FILES包含相同的信息.不同点: ...

  8. 【Flask】 结合wtforms的文件上传表单

    表单中的文件上传 基本的表单渲染,表单类设置等等就不多说了,参看另一个文章即可.但是那篇文章里没有提到对于FileField,也就是上传文件的表单字段是如何处理,后端又是如何实现接受上传过来的文件的. ...

  9. SpringMVC之表单提交===③===多文件上传表单

    上文简单介绍了springmvc单文件上传表单 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台 ...

  10. SpringMVC之多文件上传表单

    上文简单介绍了springMVC之单文件上传 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台申 ...

最新文章

  1. 不认识java代码_程序员进阶:优雅的代码对于一个架构师的重要性
  2. 572. Subtree of Another Tree
  3. 12个超炫数据可视化工具_Python5个数据可视化工具
  4. mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解
  5. java如何遍历combobox_如何通过COMBOBOX设置Java中的框架标题?
  6. 阿里云安装mysql5.7_同一服务器上二进制安装mysql5.7和mysql5.6
  7. 完美使用application cache几点心得
  8. 分段锁——ConcurrentHashMap
  9. 小甲鱼鱼c论坛python作业_[全套55讲]鱼C论坛小甲鱼Python课后题试题.doc
  10. 最新黑马java十次方社交项目教程
  11. Mybatis使用关联查询由于表名字段重复导致的问题
  12. CES2013前瞻:1080p屏幕手机集中爆发
  13. 网线插座接法,网线模块制作及其安装步骤(图解)
  14. 我老板:你根本不懂 React!
  15. Blackbox_exporter概述
  16. 量化(3): 量化校准
  17. 【剑指Offer】个人学习笔记_61_扑克牌中的顺子
  18. 用帕斯卡定理证明圆和切线有关的问题
  19. Spring-Cloud-Gateway 源码解析-转自芋道源码
  20. [运放滤波器]5_滤波器的分类

热门文章

  1. linux mint借用deepin-wine安装QQ/微信
  2. 【GAN】生成式对抗网络论文笔记及TF2代码实现
  3. 数学之美(Beauty Of Mathematics)
  4. 机器学习之朴素贝叶斯、贝叶斯信念网络
  5. 使用代理服务器是否安全?
  6. 图像处理学习路线总结 python
  7. 如何将 png/jpg 图片转换为 eps
  8. 住宅和公寓有什么区别
  9. ERP软件公司选型的重要根据
  10. 【C语言作业】一个数如果恰好等于它的因子之和,这个数就称为完整数。例如6的因子为1、2、3,而6=1+2+3,因此6是完数,编程找出1000之内的所有完整数