|
@@ -1,7 +1,94 @@
|
|
|
<?php
|
|
|
/**
|
|
|
- * Created by PhpStorm.
|
|
|
- * User: Administrator
|
|
|
- * Date: 2015/12/22
|
|
|
- * Time: 13:56
|
|
|
- */
|
|
|
+ * 物流推送
|
|
|
+ *
|
|
|
+ *
|
|
|
+ *
|
|
|
+ *
|
|
|
+ * by Jeff Wan
|
|
|
+ */
|
|
|
+
|
|
|
+defined('InShopNC') or exit('Access Invalid!');
|
|
|
+class deliveryLogic {
|
|
|
+ private static $appURL = '';
|
|
|
+
|
|
|
+ private static $appkey = '';
|
|
|
+ private static $appPassWord = '';
|
|
|
+
|
|
|
+ private function _getSign($data){
|
|
|
+ return md5(self::$appkey . self::$appPassWord . json_encode($data));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function putOrder($pay_sn, $trade_no) {
|
|
|
+ $order_list = Model('order')->getNormalOrderList(array('pay_sn'=> $pay_sn), $this->page, '*', 'order_id desc', '', array('order_address', 'order_goods'));
|
|
|
+ $delivery_order_list = array();
|
|
|
+ foreach ($order_list as $order_info) {
|
|
|
+ if ($order_info['order_state'] === '20') {
|
|
|
+ $delivery_order = array();
|
|
|
+ $delivery_order['tid'] = $order_info['order_sn'];
|
|
|
+ $delivery_order['total_fee'] = $order_info['order_amount'];
|
|
|
+ $delivery_order['discount_fee'] = ''; //待运营有折扣活动需计算优惠金额
|
|
|
+ $delivery_order['post_fee'] = $order_info['shipping_fee'];
|
|
|
+ $delivery_order['created'] = date('Y-m-d H:i:s', $order_info['add_time']);
|
|
|
+ $delivery_order['pay_time'] = date('Y-m-d H:i:s',$order_info['payment_time']);
|
|
|
+ $delivery_order['buyer_message'] = '';
|
|
|
+ $delivery_order['express_code'] = '';
|
|
|
+ $delivery_order['pay_account_type'] = $order_info['payment_code'] == 'wxpay' ? '微信支付': '支付宝';
|
|
|
+ $delivery_order['pay_account_id'] = '';
|
|
|
+ $delivery_order['pay_account_no'] = $trade_no;
|
|
|
+ $delivery_order['buyer_nick'] = $order_info['buyer_name'] === 'anonymous' ? 'anonymous'.'_'. $order_info['buyer_id'] : $order_info['buyer_name'];
|
|
|
+ $delivery_order['buyer_email'] = $order_info['buyer_email'];
|
|
|
+ $delivery_order['trade_memo'] = '';
|
|
|
+ $delivery_order['receiver_name'] = $order_info['reciver_name'];
|
|
|
+ $delivery_area = explode(' ', $order_info['reciver_info']['area']);
|
|
|
+ $delivery_order['receiver_state'] = $delivery_area[0];
|
|
|
+ $delivery_order['receiver_city'] = $delivery_area[1];
|
|
|
+ $delivery_order['receiver_district'] = $delivery_area[2];
|
|
|
+ $delivery_order['receiver_address'] = $order_info['reciver_info']['street'];
|
|
|
+ $delivery_order['receiver_zip'] = '000000';
|
|
|
+ $delivery_order['receiver_mobile'] = $order_info['reciver_info']['mob_phone'];
|
|
|
+ $delivery_order['receiver_phone'] = $order_info['reciver_info']['tel_phone'];
|
|
|
+ $delivery_order['order_size'] = count($order_info['extend_order_goods']);
|
|
|
+ $delivery_order['orderList'] = array();
|
|
|
+ foreach($order_info['extend_order_goods'] as $key => $goods){
|
|
|
+ $delivery_goods = array();
|
|
|
+ $delivery_goods['oid'] = $order_info['order_sn'] . $key;
|
|
|
+ $delivery_goods['tid'] = $order_info['order_sn'];
|
|
|
+ $delivery_goods['title'] = $goods['goods_name'];
|
|
|
+ $delivery_goods['price'] = $goods['goods_price'];
|
|
|
+ $delivery_goods['num'] = $goods['goods_num'];
|
|
|
+ $goods_serial = Model('goods')->getGoodsInfo(array('goods_id'=>$goods['goods_id']));
|
|
|
+ $delivery_goods['outer_sku_id'] = $goods_serial['goods_serial'];
|
|
|
+ $delivery_goods['outer_sku_properties_name'] = $goods['goods_name'];
|
|
|
+ $delivery_goods['buyer_nick'] = $order_info['buyer_name'] === 'anonymous' ? 'anonymous'.'_'. $order_info['buyer_id'] : $order_info['buyer_name'];
|
|
|
+ array_push($delivery_order['orderList'] , $delivery_goods);
|
|
|
+ }
|
|
|
+ array_push($delivery_order_list, $delivery_order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data = array('type' => 'PUT_TRADE', 'data' => $delivery_order_list);
|
|
|
+ $sign = $this->_getSign($data);
|
|
|
+ $result = json_decode($this->_postData($sign, json_encode($data)));
|
|
|
+ return $result['data'][0];
|
|
|
+ }
|
|
|
+
|
|
|
+ private function _postData($sign, $data_json){
|
|
|
+ $postData = array();
|
|
|
+ $postData['v_appkey'] = self::$appkey;
|
|
|
+ $postData['v_sign'] = $sign;
|
|
|
+ $postData['data'] = $data_json;
|
|
|
+ $encodeData = "" ;
|
|
|
+ foreach ( $postData as $k => $v )
|
|
|
+ {
|
|
|
+ $encodeData .= " $k = " . urlencode ( $v ) . " & " ;
|
|
|
+ }
|
|
|
+ $ch = curl_init();
|
|
|
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
|
|
+ curl_setopt($ch, CURLOPT_POST, TRUE);
|
|
|
+ curl_setopt($ch, CURLOPT_POSTFIELDS, substr ( $encodeData , 0 ,- 1 ) );
|
|
|
+ curl_setopt($ch, CURLOPT_URL, self::$appURL);
|
|
|
+ $ret = curl_exec($ch);
|
|
|
+ curl_close($ch);
|
|
|
+ return $ret;
|
|
|
+ }
|
|
|
+}
|