|
@@ -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;
|
|
|
|
+ }
|
|
|
|
+}
|