电子面单打印商家请求参数错误申请的交易订单和已存在的交易订单号存在交叉
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电子面单打印商家请求参数错误申请的交易订单和已存在的交易订单号存在交叉相关的知识,希望对你有一定的参考价值。
参考技术A 这个时候最好的处理方式就是去电话给软件公司的客服,这个时候软件公司的技术人员都是24小时值班的,要是没有,看来亲只能更换软件啦,富润科技家的软件吧,全途还是免费的,他们家双十一的技术都是24小时值班的圆通电子面单接口申请案例(PHP)
电子面单是一种通过热敏纸打印输出纸质物流面单的物流服务。通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍。电子面单以接口形式嵌入到自己的系统、网站上,可以在自己的平台操作打印电子面单。
1.接口描述
接口支持的消息接收方式:HTTPPOST
请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"
API地址:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx
接口提供:快递鸟
2.请求系统级参数
参数名称 | 类型 | 说明 | 必须要求 |
RequestData | String | 请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。 | R |
EBusinessID | String | 商户ID,请在我的服务页面查看。 | R |
RequestType | String | 请求指令类型:1007 | R |
DataSign | String | 数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后进行URL(utf-8)编码。详细过程请查看Demo。 | R |
DataType | String | 请求、返回数据类型:只支持JSON格式 | O |
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)
3.PHP对接源码
<?php /** * * 快递鸟电子面单接口 * * @技术QQ: 4009633321 * @技术QQ群: 200121393 * @see: http://www.kdniao.com/MiandanAPI.aspx * @copyright: 深圳市快金数据技术服务有限公司 * * ID和Key请到官网申请:http://www.kdniao.com/ServiceApply.aspx */ //电商ID defined(‘EBusinessID‘) or define(‘EBusinessID‘, ‘请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx‘); //电商加密私钥,快递鸟提供,注意保管,不要泄漏 defined(‘AppKey‘) or define(‘AppKey‘, ‘请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx‘); //请求url,接口正式地址:http://api.kdniao.cc/api/Eorderservice defined(‘ReqURL‘) or define(‘ReqURL‘, ‘http://testapi.kdniao.cc:8081/api/Eorderservice‘); //调用获取物流轨迹 //------------------------------------------------------------- //构造电子面单提交信息 $eorder = []; $eorder["ShipperCode"] = "SF"; $eorder["OrderCode"] = "PM201604062341"; $eorder["PayType"] = 1; $eorder["ExpType"] = 1; $sender = []; $sender["Name"] = "李先生"; $sender["Mobile"] = "18888888888"; $sender["ProvinceName"] = "李先生"; $sender["CityName"] = "深圳市"; $sender["ExpAreaName"] = "福田区"; $sender["Address"] = "赛格广场5401AB"; $receiver = []; $receiver["Name"] = "李先生"; $receiver["Mobile"] = "18888888888"; $receiver["ProvinceName"] = "李先生"; $receiver["CityName"] = "深圳市"; $receiver["ExpAreaName"] = "福田区"; $receiver["Address"] = "赛格广场5401AB"; $commodityOne = []; $commodityOne["GoodsName"] = "其他"; $commodity = []; $commodity[] = $commodityOne; $eorder["Sender"] = $sender; $eorder["Receiver"] = $receiver; $eorder["Commodity"] = $commodity; //调用电子面单 $jsonParam = json_encode($eorder, JSON_UNESCAPED_UNICODE); //$jsonParam = JSON($eorder);//兼容php5.2(含)以下 echo "电子面单接口提交内容:<br/>".$jsonParam; $jsonResult = submitEOrder($jsonParam); echo "<br/><br/>电子面单提交结果:<br/>".$jsonResult; //解析电子面单返回结果 $result = json_decode($jsonResult, true); echo "<br/><br/>返回码:".$result["ResultCode"]; if($result["ResultCode"] == "100") { echo "<br/>是否成功:".$result["Success"]; } else { echo "<br/>电子面单下单失败"; } //------------------------------------------------------------- /** * Json方式 查询订单物流轨迹 */ function submitEOrder($requestData){ $datas = array( ‘EBusinessID‘ => EBusinessID, ‘RequestType‘ => ‘1007‘, ‘RequestData‘ => urlencode($requestData) , ‘DataType‘ => ‘2‘, ); $datas[‘DataSign‘] = encrypt($requestData, AppKey); $result=sendPost(ReqURL, $datas); //根据公司业务处理返回的信息...... return $result; } /** * post提交数据 * @param string $url 请求Url * @param array $datas 提交的数据 * @return url响应返回的html */ function sendPost($url, $datas) { $temps = array(); foreach ($datas as $key => $value) { $temps[] = sprintf(‘%s=%s‘, $key, $value); } $post_data = implode(‘&‘, $temps); $url_info = parse_url($url); if($url_info[‘port‘]==‘‘) { $url_info[‘port‘]=80; } echo $url_info[‘port‘]; $httpheader = "POST " . $url_info[‘path‘] . " HTTP/1.0\r\n"; $httpheader.= "Host:" . $url_info[‘host‘] . "\r\n"; $httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n"; $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n"; $httpheader.= "Connection:close\r\n\r\n"; $httpheader.= $post_data; $fd = fsockopen($url_info[‘host‘], $url_info[‘port‘]); fwrite($fd, $httpheader); $gets = ""; $headerFlag = true; while (!feof($fd)) { if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) { break; } } while (!feof($fd)) { $gets.= fread($fd, 128); } fclose($fd); return $gets; } /** * 电商Sign签名生成 * @param data 内容 * @param appkey Appkey * @return DataSign签名 */ function encrypt($data, $appkey) { return urlencode(base64_encode(md5($data.$appkey))); } /************************************************************** * * 使用特定function对数组中所有元素做处理 * @param string &$array 要处理的字符串 * @param string $function 要执行的函数 * @return boolean $apply_to_keys_also 是否也应用到key上 * @access public * *************************************************************/ function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { static $recursive_counter = 0; if (++$recursive_counter > 1000) { die(‘possible deep recursion attack‘); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; } /************************************************************** * * 将数组转换为JSON字符串(兼容中文) * @param array $array 要转换的数组 * @return string 转换得到的json字符串 * @access public * *************************************************************/ function JSON($array) { arrayRecursive($array, ‘urlencode‘, true); $json = json_encode($array); return urldecode($json); } ?>
以上是关于电子面单打印商家请求参数错误申请的交易订单和已存在的交易订单号存在交叉的主要内容,如果未能解决你的问题,请参考以下文章