WxOrderLogistics.php 5.8 KB

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