WxOrderLogistics.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace app\store\service\wxApi;
  3. use app\common\service\BaseService;
  4. use app\common\service\MpWxService;
  5. use app\api\model\Wxapp as WxappModel;
  6. use think\facade\Log;
  7. /**
  8. * 物流发货logic
  9. * Class WxOrderLogistics
  10. * @package app\store\service\wxApi
  11. */
  12. class WxOrderLogistics extends BaseService
  13. {
  14. /**
  15. * 发货订单信息,如果发货物流公司是顺丰,必须保证有发件人和收件人信息,并且发件人收件人信息需要打掩码:`189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024
  16. * @param $orderTransId
  17. * @param $expressCompany
  18. * @param $trackingNo
  19. * @param $goodsDesc
  20. * @param $payerOpenId
  21. * @param $consignorContact
  22. * @param $receiverContact
  23. * @return object
  24. */
  25. public static function orderDeliveryByTransId($orderTransId, $expressCompany, $trackingNo, $goodsDesc, $payerOpenId, $consignorContact, $receiverContact)
  26. {
  27. $weixinToken = MpWxService::weixinTokenCache();
  28. $accessToken = $weixinToken['access_token'];
  29. $url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=".$accessToken;
  30. $params['access_token'] = $accessToken;
  31. $params['order_key'] = [
  32. 'order_number_type' => 2,
  33. 'transaction_id' => $orderTransId,
  34. ];
  35. $params['logistics_type'] = 1;
  36. $params['delivery_mode'] = 1;
  37. $params['is_all_delivered'] = true;
  38. $shippingInfo = [
  39. 'tracking_no' => $trackingNo,
  40. 'express_company' => $expressCompany,
  41. 'item_desc' => $goodsDesc,
  42. ];
  43. if ($consignorContact != null || $receiverContact != null) {
  44. $shippingInfo['contact'] = [];
  45. if ($consignorContact != null) {
  46. $shippingInfo['contact']['consignor_contact'] = $consignorContact;
  47. }
  48. if ($receiverContact != null) {
  49. $shippingInfo['contact']['receiver_contact'] = $receiverContact;
  50. }
  51. }
  52. $params['shipping_list'] = [$shippingInfo];
  53. $nowStr = date('Y-m-d H:i:s');
  54. $data = explode(' ',$nowStr);
  55. $params['upload_time'] = $data[0].'T'.$data[1].'.000+08:00';
  56. $params['payer'] = [
  57. 'openid' => $payerOpenId
  58. ];
  59. dd($params);
  60. $ret = curl_post($url, json_encode($params));
  61. $arr = json_decode($ret);
  62. return $arr;
  63. }
  64. /**
  65. * 发货订单信息,如果发货物流公司是顺丰,必须保证有发件人和收件人信息,并且发件人收件人信息需要打掩码:`189****1234, 021-****1234, ****1234, 0**2-***1234, 0**2-******23-10, ****123-8008` 值限制: 0 ≤ value ≤ 1024
  66. * @param $storeId
  67. * @param $outTradeNo
  68. * @param $expressCompany
  69. * @param $trackingNo
  70. * @param $goodsDesc
  71. * @param $payerOpenId
  72. * @param $consignorContact
  73. * @param $receiverContact
  74. * @return object
  75. */
  76. public static function orderDeliveryByOutTradeNo($storeId,$outTradeNo, $expressCompany, $trackingNo, $goodsDesc, $payerOpenId, $consignorContact, $receiverContact)
  77. {
  78. $weixinToken = MpWxService::weixinTokenCache();
  79. $accessToken = $weixinToken['access_token'];
  80. $url = "https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=".$accessToken;
  81. $params['access_token'] = $accessToken;
  82. $wxConfig = WxappModel::getWxappCache($storeId);
  83. $params['order_key'] = [
  84. 'order_number_type' => 1,
  85. 'mchid' => $wxConfig['mchid'],
  86. 'out_trade_no' => $outTradeNo,
  87. ];
  88. $params['logistics_type'] = 1;
  89. $params['delivery_mode'] = 1;
  90. $params['is_all_delivered'] = true;
  91. $shippingInfo = [
  92. 'tracking_no' => $trackingNo,
  93. 'express_company' => $expressCompany,
  94. 'item_desc' => $goodsDesc,
  95. ];
  96. if ($consignorContact != null || $receiverContact != null) {
  97. $shippingInfo['contact'] = [];
  98. if ($consignorContact != null) {
  99. $shippingInfo['contact']['consignor_contact'] = $consignorContact;
  100. }
  101. if ($receiverContact != null) {
  102. $shippingInfo['contact']['receiver_contact'] = $receiverContact;
  103. }
  104. }
  105. $params['shipping_list'] = [$shippingInfo];
  106. $nowStr = date('Y-m-d H:i:s');
  107. $data = explode($nowStr, ' ');
  108. $params['upload_time'] = $data[0].'T'.$data[1].'.000+08:00';
  109. $params['payer'] = [
  110. 'openid' => $payerOpenId
  111. ];
  112. $ret = curl_post($url, json_encode($params));
  113. $arr = json_decode($ret);
  114. return $arr;
  115. }
  116. /**
  117. * 根据transId获得订单状态,状态字段:order_state:订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
  118. * @param $transId
  119. * @return object
  120. */
  121. public static function getOrderStatusByTransId($transId) {
  122. $weixinToken = MpWxService::weixinTokenCache();
  123. $accessToken = $weixinToken['access_token'];
  124. $url = "https://api.weixin.qq.com/wxa/sec/order/get_order?access_token=".$accessToken;
  125. $params['access_token'] = $accessToken;
  126. $params['transaction_id'] = $transId;
  127. $ret = curl_post($url, json_encode($params));
  128. $arr = json_decode($ret);
  129. return $arr;
  130. }
  131. /**
  132. * 根据outTradeNo获得订单状态,状态字段:order_state:订单状态枚举:(1) 待发货;(2) 已发货;(3) 确认收货;(4) 交易完成;(5) 已退款。
  133. * @param $storeId
  134. * @param $outTradeNo
  135. * @return object
  136. */
  137. public static function getOrderStatusByOutTradeNo($storeId, $outTradeNo) {
  138. $weixinToken = MpWxService::weixinTokenCache();
  139. $accessToken = $weixinToken['access_token'];
  140. $url = "https://api.weixin.qq.com/wxa/sec/order/get_order?access_token=".$accessToken;
  141. $params['access_token'] = $accessToken;
  142. $wxConfig = WxappModel::getWxappCache($storeId);
  143. $params['merchant_id'] = $wxConfig['mchid'];
  144. $params['merchant_trade_no'] = $outTradeNo;
  145. $ret = curl_post($url, json_encode($params));
  146. $arr = json_decode($ret);
  147. return $arr;
  148. }
  149. public static function getDeliveryList(){
  150. $weixinToken = MpWxService::weixinTokenCache();
  151. $accessToken = $weixinToken['access_token'];
  152. $url = 'https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/get_delivery_list?access_token='.$accessToken;
  153. //$params = [];
  154. Log::info($url);
  155. $ret = curl_post($url, '{}');
  156. return json_decode($ret);
  157. }
  158. }