关于快递鸟的顺丰电子面单打印

Posted 年华-夜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于快递鸟的顺丰电子面单打印相关的知识,希望对你有一定的参考价值。

1.form表单传递数据,到控制器,之后的复制操作

 1    顺丰信息
 2                     //快递信息
 3                     $eorder = [];
 4                     $eorder["ShipperCode"] = $express_number[$number];  //快递公司编码
 5                     $eorder["OrderCode"] = $ship_order_data[‘ship_order_number‘]; //发货单编号()
 6 
 7                     $eorder["PayType"] = 3;  //支付快递方式 1现付 2到付 3月结 4第三方
 8                     $eorder["ExpType"] = $express_type;  //快递类型 1次日达 2 隔日达
 9                     $eorder["IsReturnPrintTemplate"] = 1;  //是否需要电子面单 1需要 0不
10                     //目前接口中每家快递公司配置需求与值都不相同  部分需单独当地网点申请帐号密码
11                     if($number == 1){  //顺丰
12                         //  $eorder["MonthCode"] = ‘5270013057‘;  //月结卡号 月结类型必填
13                         $eorder["MonthCode"] = ‘5270325075‘;  //月结卡号 月结类型必填
14                     }
15 
16                     //发货信息
17                     $sender = [];
18                     $sender["Name"] = $ship_order_data[‘send_username‘];
19                     $sender["Mobile"] = $ship_order_data[‘send_phone‘];
20                     $sender["ProvinceName"] = $ship_order_data[‘send_province‘];
21                     $sender["CityName"] = $ship_order_data[‘send_city‘];
22                     $sender["ExpAreaName"] = $ship_order_data[‘send_exparea‘];
23                     $sender["Address"] = $ship_order_data[‘send_address‘];
24 //                $sender["Name"] = ‘豹子头‘;
25 //                $sender["Mobile"] = ‘13588243329‘;
26 //                $sender["ProvinceName"] = ‘江苏省‘;
27 //                $sender["CityName"] = ‘宿迁市‘;
28 //                $sender["ExpAreaName"] = ‘泗阳县‘;
29 //                $sender["Address"] = ‘淮海东路11号‘;
30                     //收货信息
31                     $receiver = [];
32                     $receiver["Name"] = $ship_order_data[‘username‘];
33                     $receiver["Mobile"] = $ship_order_data[‘phone‘];
34                     $receiver["ProvinceName"] = $ship_order_data[‘province‘];
35                     $receiver["CityName"] = $ship_order_data[‘city‘];
36                     $receiver["ExpAreaName"] = $ship_order_data[‘exparea‘];
37                     $receiver["Address"] = $ship_order_data[‘address‘];
38 //                $receiver["Name"] = ‘王先生‘;
39 //                $receiver["Mobile"] = ‘15282334566‘;
40 //                $receiver["ProvinceName"] = ‘四川省‘;
41 //                $receiver["CityName"] = ‘成都市‘;
42 //                $receiver["ExpAreaName"] = ‘青羊区‘;
43 //                $receiver["Address"] = ‘一环路东四段‘;
44 
45                     $commodityOne = [];
46                     $commodityOne["GoodsName"] = ‘衬衫*‘.$total_number.‘件‘;  //商品名 数量
47 //              dump($commodityOne);die;
48                     $commodity = [];
49                     $commodity[] = $commodityOne;
50 
51                     $eorder["Sender"] = $sender;
52                     $eorder["Receiver"] = $receiver;
53                     $eorder["Commodity"] = $commodity;
54 
55                     //备注
56                     $ship_order_data[‘ship_order_number‘];
57                     $eorder["Remark"] = db(‘ship_box‘)->where(‘ship_order_num‘, $ship)->value(‘box_num‘);
58                     $eorder["Remark"] .= ‘号框‘;
59 
60                     //调用电子面单
61                     $jsonParam = json_encode($eorder, JSON_UNESCAPED_UNICODE);
62                     //电子面单提交结果
63                     $jsonResult = $this->submitEOrder($jsonParam);
64                     //  dump($eorder);die;
65                     //解析电子面单返回结果
66                     $result = json_decode($jsonResult, true);
67 
68              echo "<script>alert(‘发货信息已成功提交至快递公司,请打印电子面单!‘);parent.location.reload();</script>";
69                         echo $result[‘PrintTemplate‘];//打印PrintTemplate的数据
70               echo "<script>print()</script>";

第二部.这是签名和提交的方法

 1  /**
 2      * Json方式 调用电子面单接口
 3      */
 4     public function submitEOrder($requestData)
 5     {
 6         $express_config = config(‘KUAIDINIAO‘);//信息配置在config的信息,你也可以写死
 7         $datas = array(//必须
 8             ‘EBusinessID‘ => $express_config[‘EBusinessID‘],
 9             ‘RequestType‘ => ‘1007‘,
10             ‘RequestData‘ => urlencode($requestData),
11             ‘DataType‘ => ‘2‘,
12         );
13         $datas[‘DataSign‘] = $this->encrypt($requestData, $express_config[‘AppKey‘]);//获取签名
14         $result = $this->sendPost($express_config[‘ReqURL‘], $datas);//提交数据
15         return $result;
16     }
17     /**
18      * 电商Sign签名生成
19      * @param data 内容
20      * @param appkey Appkey
21      * @return DataSign签名
22      */
23     public function encrypt($data, $appkey)
24     {
25         return urlencode(base64_encode(md5($data . $appkey)));
26     }
27     /**
28      *  post提交数据
29      * @param  string $url 请求Url
30      * @param  array $datas 提交的数据
31      * @return url响应返回的html
32      */
33     public function sendPost($url, $datas)
34     {
35         $temps = array();
36         foreach ($datas as $key => $value) {
37             $temps[] = sprintf(‘%s=%s‘, $key, $value);
38         }
39         $post_data = implode(‘&‘, $temps);
40         $url_info = parse_url($url);
41         if (empty($url_info[‘port‘])) {
42             $url_info[‘port‘] = 80;
43         }
44         $httpheader = "POST " . $url_info[‘path‘] . " HTTP/1.0\r\n";
45         $httpheader .= "Host:" . $url_info[‘host‘] . "\r\n";
46         $httpheader .= "Content-Type:application/x-www-form-urlencoded\r\n";
47         $httpheader .= "Content-Length:" . strlen($post_data) . "\r\n";
48         $httpheader .= "Connection:close\r\n\r\n";
49         $httpheader .= $post_data;
50         $fd = fsockopen($url_info[‘host‘], $url_info[‘port‘]);
51         fwrite($fd, $httpheader);
52         $gets = "";
53         $headerFlag = true;
54         while (!feof($fd)) {
55             if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {
56                 break;
57             }
58         }
59         while (!feof($fd)) {
60             $gets .= fread($fd, 128);
61         }
62         fclose($fd);
63 
64         return $gets;
65     }

 

快递鸟的顺丰比较简单,这就完成了,如果你有什么不理解的,可以给我留言

以上是关于关于快递鸟的顺丰电子面单打印的主要内容,如果未能解决你的问题,请参考以下文章

使用java Graphics 绘图工具生成顺丰快递电子面单

各种电子面单-Api接口(顺丰快递鸟菜鸟)

快递---快递鸟的电子面单取消操作-----------

顺丰电子面单api接口怎么接入?

查顺丰快递用啥接口?

免费顺丰快递单号查询电子面单api接口对接快递鸟API