關於快遞鳥的順豐電子面單打印


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"] = '527****057';  //月結卡號 月結類型必填
13                         $eorder["MonthCode"] = '527****075';  //月結卡號 月結類型必填
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"] = '135****3329';
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"] = '15****34566';
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     }

 

快遞鳥的順豐比較簡單,這就完成了,如果你有什么不理解的,可以給我留言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM