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


    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
    ";
    45         $httpheader .= "Host:" . $url_info['host'] . "
    ";
    46         $httpheader .= "Content-Type:application/x-www-form-urlencoded
    ";
    47         $httpheader .= "Content-Length:" . strlen($post_data) . "
    ";
    48         $httpheader .= "Connection:close
    
    ";
    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 == "
    " || $header == "
    ")) {
    56                 break;
    57             }
    58         }
    59         while (!feof($fd)) {
    60             $gets .= fread($fd, 128);
    61         }
    62         fclose($fd);
    63 
    64         return $gets;
    65     }

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

    人生得意须尽欢,莫使金樽空对月.
  • 相关阅读:
    19凡路国庆小作业的题解集合(qwq只是我出的题,我会标明出处的)
    一个for打印99乘法表(这是一种实现方式,可以多种方式的)
    采访学长所得
    洛谷P1028 数的计算
    ccf 2019_03_2 二十四点
    ccf 201812-1 小明上学
    洛谷P3387 【模板】缩点
    洛谷P3216 [HNOI2011]数学作业
    洛谷P1471 方差
    HDU 4114 Disney's FastPass
  • 原文地址:https://www.cnblogs.com/luojie-/p/8537676.html
Copyright © 2020-2023  润新知