other|钱海物流接口上传运单号开发
当使用钱海支付通道进行支付成功之后,如果订单发货后则变更为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|钱海物流接口上传运单号开发相关推荐
- [WebApi]WebApi通过接口上传文件-单文件 多文件上传 文件下载
WebApi通过接口上传文件 单文件上传(ajax,Form表单都适用) 1.html 2.javascript 3.C# Form表单之单文件上传 1.html 2.javascript 3.C# ...
- 免费对接快递数据物流信息接口【快递鸟单号查询API】
近年来,我国电商产业的迅猛发展也推动着物流行业需求的增加,其中电商平台根据快递单号查询物流信息数据的需求就是基本需求,用户下单后商家把货物有没有及时的按要求发出去,就需要通过物流轨迹的揽件状态来判断, ...
- 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传
[vue开发问题-解决方法](九)使用element upload自定义接口上传文件,input多文件上传 参考文章: (1)[vue开发问题-解决方法](九)使用element upload自定义接 ...
- tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied
tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied 这是因 ...
- 苹果cms请求接口上传异常是怎么回事
用苹果cmsv10做视频网站时候出现这个现象,其实解决方法挺简单的,以下方法是演示通过宝塔操作. 1.检查文件夹的权限,如果权限正常请重新确定保存下.如果这样还不能上传图片的话,请参考方法2: 2.修 ...
- 图片预览与图片通过预留接口上传
提示:图片预览与图片通过预留接口上传的笔记 图片前端预览: 前提:通过input[type=file]让用户选择文件,通过事件对象.target.files拿到用户选择的"文件对象" ...
- PHP接口上传文件图片详解
简介 PHP在处理POST文件上传使用一个文件上传变量$_FILES 和 $HTTP_POST_FILES(已弃用).相同点:$FILES和$HTTP_POST_FILES包含相同的信息.不同点: ...
- 【Flask】 结合wtforms的文件上传表单
表单中的文件上传 基本的表单渲染,表单类设置等等就不多说了,参看另一个文章即可.但是那篇文章里没有提到对于FileField,也就是上传文件的表单字段是如何处理,后端又是如何实现接受上传过来的文件的. ...
- SpringMVC之表单提交===③===多文件上传表单
上文简单介绍了springmvc单文件上传表单 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台 ...
- SpringMVC之多文件上传表单
上文简单介绍了springMVC之单文件上传 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台申 ...
最新文章
- 不认识java代码_程序员进阶:优雅的代码对于一个架构师的重要性
- 572. Subtree of Another Tree
- 12个超炫数据可视化工具_Python5个数据可视化工具
- mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解
- java如何遍历combobox_如何通过COMBOBOX设置Java中的框架标题?
- 阿里云安装mysql5.7_同一服务器上二进制安装mysql5.7和mysql5.6
- 完美使用application cache几点心得
- 分段锁——ConcurrentHashMap
- 小甲鱼鱼c论坛python作业_[全套55讲]鱼C论坛小甲鱼Python课后题试题.doc
- 最新黑马java十次方社交项目教程
- Mybatis使用关联查询由于表名字段重复导致的问题
- CES2013前瞻:1080p屏幕手机集中爆发
- 网线插座接法,网线模块制作及其安装步骤(图解)
- 我老板:你根本不懂 React!
- Blackbox_exporter概述
- 量化(3): 量化校准
- 【剑指Offer】个人学习笔记_61_扑克牌中的顺子
- 用帕斯卡定理证明圆和切线有关的问题
- Spring-Cloud-Gateway 源码解析-转自芋道源码
- [运放滤波器]5_滤波器的分类