Quellcode durchsuchen

增加微信订单发货同步接口

xuhanyu vor 1 Jahr
Ursprung
Commit
cefc096e08
1 geänderte Dateien mit 174 neuen und 0 gelöschten Zeilen
  1. 174 0
      app/store/service/wxApi/WxOrderLogistics.php

+ 174 - 0
app/store/service/wxApi/WxOrderLogistics.php

@@ -0,0 +1,174 @@
+<?php
+namespace app\store\service\store;
+
+use app\common\service\BaseService;
+use app\common\service\MpWxService;
+use app\api\model\Wxapp as WxappModel;
+/**
+ * 物流发货logic
+ * Class WxOrderLogistics
+ * @package app\store\service\wxApi
+ */
+class WxOrderLogistics extends BaseService
+{
+    /**
+     * 发货订单信息,如果发货物流公司是顺丰,必须保证有发件人和收件人信息
+     * @param $orderTransId
+     * @param $expressCompany
+     * @param $trackingNo
+     * @param $goodsDesc
+     * @param $payerOpenId
+     * @param $consignorContact
+     * @param $receiverContact
+     * @return object
+     */
+    public static function orderDeliveryByTransId($orderTransId, $expressCompany, $trackingNo, $goodsDesc, $payerOpenId, $consignorContact, $receiverContact)
+    {
+        $weixinToken = MpWxService::weixinTokenCache();
+        $accessToken = $weixinToken['access_token'];
+        $url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=".$accessToken;
+
+        $params['access_token'] = $accessToken;
+        $params['order_key'] = [
+            'order_number_type' => 2,
+            'transaction_id' => $orderTransId,
+        ];
+        $params['logistics_type'] = 1; 
+        $params['delivery_mode'] = 1;
+        $params['is_all_delivered'] = true;
+
+        $shippingInfo = [
+            'tracking_no' => $trackingNo,
+            'express_company' => $expressCompany,
+            'item_desc' => $goodsDesc,
+        ];
+
+        if ($consignorContact != null || $receiverContact != null) {
+            $shippingInfo['contact'] = [];
+            if ($consignorContact != null) {
+              $shippingInfo['contact']['consignor_contact'] = $consignorContact;
+            }
+
+            if ($receiverContact != null) {
+              $shippingInfo['contact']['receiver_contact'] = $receiverContact;
+            }
+        }
+
+        $params['shipping_list'] = [$shippingInfo];
+
+        $nowStr = date('Y-m-d H:i:s');
+        $data = explode($nowStr, ' ')
+        $params['upload_time'] = $data[0].'T'.$data[1].'.000+08:00';
+        $params['payer'] = [
+            'openid' => $payerOpenId
+        ];
+
+        $ret = curl_post($url, json_encode($params));
+        $arr = json_decode($ret);
+
+        return $arr;
+    }
+
+    /**
+     * 发货订单信息,如果发货物流公司是顺丰,必须保证有发件人和收件人信息
+     * @param $outTradeNo
+     * @param $expressCompany
+     * @param $trackingNo
+     * @param $goodsDesc
+     * @param $payerOpenId
+     * @param $consignorContact
+     * @param $receiverContact
+     * @return object
+     */
+    public static function orderDeliveryByOutTradeNo($outTradeNo, $expressCompany, $trackingNo, $goodsDesc, $payerOpenId, $consignorContact, $receiverContact)
+    {
+        $weixinToken = MpWxService::weixinTokenCache();
+        $accessToken = $weixinToken['access_token'];
+        $url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=".$accessToken;
+
+        $params['access_token'] = $accessToken;
+
+        $mchId = WxappModel::getWxappCache($order['store_id']);
+
+        $params['order_key'] = [
+            'order_number_type' => 1,
+            'mchid' => $mchId,
+            'out_trade_no' => $outTradeNo,
+        ];
+        $params['logistics_type'] = 1; 
+        $params['delivery_mode'] = 1;
+        $params['is_all_delivered'] = true;
+
+        $shippingInfo = [
+            'tracking_no' => $trackingNo,
+            'express_company' => $expressCompany,
+            'item_desc' => $goodsDesc,
+        ];
+
+        if ($consignorContact != null || $receiverContact != null) {
+            $shippingInfo['contact'] = [];
+            if ($consignorContact != null) {
+              $shippingInfo['contact']['consignor_contact'] = $consignorContact;
+            }
+
+            if ($receiverContact != null) {
+              $shippingInfo['contact']['receiver_contact'] = $receiverContact;
+            }
+        }
+
+        $params['shipping_list'] = [$shippingInfo];
+
+        $nowStr = date('Y-m-d H:i:s');
+        $data = explode($nowStr, ' ')
+        $params['upload_time'] = $data[0].'T'.$data[1].'.000+08:00';
+        $params['payer'] = [
+            'openid' => $payerOpenId
+        ];
+
+        $ret = curl_post($url, json_encode($params));
+        $arr = json_decode($ret);
+
+        return $arr;
+    }
+
+    /**
+     * 根据transId获得订单状态,状态字段:order_state:订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
+     * @param $transId
+     * @return object
+     */
+    public static function getOrderStatusByTransId($transId) {
+        $weixinToken = MpWxService::weixinTokenCache();
+        $accessToken = $weixinToken['access_token'];
+        $url = "https://api.weixin.qq.com/wxa/sec/order/get_order?access_token=".$accessToken;
+
+        $params['access_token'] = $accessToken;
+
+        $params['transaction_id'] = $transId;
+
+        $ret = curl_post($url, json_encode($params));
+        $arr = json_decode($ret);
+
+        return $arr;
+    }
+
+        /**
+     * 根据outTradeNo获得订单状态,状态字段:order_state:订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
+     * @param $outTradeNo
+     * @return object
+     */
+    public static function getOrderStatusByOutTradeNo($outTradeNo) {
+        $weixinToken = MpWxService::weixinTokenCache();
+        $accessToken = $weixinToken['access_token'];
+        $url = "https://api.weixin.qq.com/wxa/sec/order/get_order?access_token=".$accessToken;
+
+        $params['access_token'] = $accessToken;
+        $mchId = WxappModel::getWxappCache($order['store_id']);
+        $params['merchant_id'] = $mchId;
+        $params['merchant_trade_no'] = $outTradeNo;
+
+        $ret = curl_post($url, json_encode($params));
+        $arr = json_decode($ret);
+
+        return $arr;
+    }
+}