Ship.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. /*
  3. |--------------------------------------------------------------------------
  4. | 发货 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%B8%80%E3%80%81%E5%8F%91%E8%B4%A7%E4%BF%A1%E6%81%AF%E5%BD%95%E5%85%A5%E6%8E%A5%E5%8F%A3
  5. |--------------------------------------------------------------------------
  6. */
  7. namespace Wechat_applet\Src;
  8. use Dever;
  9. use Token\Lib\Wechat;
  10. use Token\Lib\Core;
  11. class Ship
  12. {
  13. # 获取物流
  14. public function delivery($method, $project_id = 1)
  15. {
  16. return Core::run($project_id, 'delivery', '', 'ship.deliveryAction', 'wechat_applet', $method, true);
  17. }
  18. public function deliveryAction($project_id, $data, $method = false)
  19. {
  20. Dever::load($method, $data);
  21. }
  22. # 发货信息录入
  23. public function add($order_id, $project_id = 1, $method = 1)
  24. {
  25. return Core::run($project_id, 'ship', 'ship.addParam', '', 'wechat_applet', array($method, $order_id), true);
  26. }
  27. public function addParam($param)
  28. {
  29. list($method, $order_id) = $param;
  30. if ($method == 1) {
  31. $config = Dever::db('pay/account')->find(5);
  32. $order = Dever::db('order/sell')->find($order_id);
  33. if ($order['price'] <= 0 || $order['price'] - $order['tk_cash'] <= 0) {
  34. return false;
  35. }
  36. $order_goods = Dever::db('order/sell_goods')->select(array('order_id' => $order_id));
  37. $state = true;
  38. # 检测是否都发完货了
  39. if ($order_goods) {
  40. foreach ($order_goods as $k => $v) {
  41. if ($v['status'] != 2) {
  42. $state = false;
  43. }
  44. }
  45. } else {
  46. $state = false;
  47. }
  48. if (!$state) {
  49. return false;
  50. }
  51. $order_delivery = Dever::db('order/sell_delivery')->select(array('order_id' => $order_id));
  52. if (!$order_delivery) {
  53. return false;
  54. }
  55. $param = array();
  56. $param['order_key'] = array
  57. (
  58. 'order_number_type' => 1,
  59. 'mchid' => $config['mchid'],
  60. 'out_trade_no' => $order['order_num'],
  61. );
  62. $param['logistics_type'] = 1;
  63. $param['delivery_mode'] = 1;
  64. $param['shipping_list'] = array();
  65. $param['upload_time'] = date(DATE_RFC3339);
  66. $param['payer']['openid'] = Dever::load('user/lib/applet')->getOpenid($order['uid']);
  67. $address = Dever::load('user/lib/address')->get($order['id'], 'order/sell', $order['uid'], $order['address_id']);
  68. foreach ($order_delivery as $k => $v) {
  69. $express = Dever::db('goods/express')->find($v['base']);
  70. $info = explode(',', $v['info']);
  71. if ($v['order_goods_id'] && $v['order_goods_id'] > 0) {
  72. $order_goods = Dever::db('order/sell_goods')->find($v['order_goods_id']);
  73. $goods = Dever::load('goods/lib/info.getBaseInfo', $order_goods['goods_id'], $order_goods['sku_id']);
  74. $goods_name = $goods['aname'];
  75. } else {
  76. $goods_name = $order['name'];
  77. }
  78. foreach ($info as $k1 => $v1) {
  79. $send = array();
  80. $send['tracking_no'] = $v1;
  81. $send['express_company'] = $express['wechat_number'];
  82. $send['item_desc'] = $goods_name;
  83. $send['contact']['receiver_contact'] = Dever::hide($address['phone']);
  84. $param['shipping_list'][] = $send;
  85. }
  86. }
  87. if (count($param['shipping_list']) > 1) {
  88. $param['delivery_mode'] = 2;
  89. $param['is_all_delivered'] = true;
  90. } else {
  91. $param['is_all_delivered'] = false;
  92. }
  93. return $param;
  94. }
  95. if ($method == 2) {
  96. $config = Dever::db('pay/account')->find(5);
  97. $order = Dever::db('account/pay')->find($order_id);
  98. $param = array();
  99. $param['order_key'] = array
  100. (
  101. 'order_number_type' => 1,
  102. 'mchid' => $config['mchid'],
  103. 'out_trade_no' => $order['order_num'],
  104. );
  105. $param['logistics_type'] = 3;
  106. $param['delivery_mode'] = 1;
  107. $param['shipping_list'] = array();
  108. $param['upload_time'] = date(DATE_RFC3339);
  109. $param['payer']['openid'] = Dever::load('user/lib/applet')->getOpenid($order['uid']);
  110. return $param;
  111. }
  112. return false;
  113. }
  114. # 发货信息确认
  115. public function act($order_id, $project_id = 1, $method = 1)
  116. {
  117. return Core::run($project_id, 'ship_confirm', 'ship.actParam', '', 'wechat_applet', array($method, $order_id), true);
  118. }
  119. public function actParam($order_id)
  120. {
  121. list($method, $order_id) = $param;
  122. if ($method == 1) {
  123. $config = Dever::db('pay/account')->find(5);
  124. $order = Dever::db('order/sell')->find($order_id);
  125. if ($order['price'] <= 0 || $order['price'] - $order['tk_cash'] <= 0) {
  126. return false;
  127. }
  128. $param = array();
  129. $param['merchant_id'] = $config['mchid'];
  130. $param['merchant_trade_no'] = $order['order_num'];
  131. $param['received_time'] = time();
  132. return $param;
  133. }
  134. if ($method == 2) {
  135. $config = Dever::db('pay/account')->find(5);
  136. $order = Dever::db('account/pay')->find($order_id);
  137. if ($order['price'] <= 0 || $order['price'] - $order['tk_cash'] <= 0) {
  138. return false;
  139. }
  140. $param = array();
  141. $param['merchant_id'] = $config['mchid'];
  142. $param['merchant_trade_no'] = $order['order_num'];
  143. $param['received_time'] = time();
  144. return $param;
  145. }
  146. return false;
  147. }
  148. }