delivery.logic.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * 物流推送
  4. *
  5. *
  6. *
  7. *
  8. * by Jeff Wan
  9. */
  10. defined('InShopNC') or exit('Access Invalid!');
  11. class deliveryLogic {
  12. private static $appURL = 'http://oms.shtest.lrlz.com:49521/lrlzApiRest/router/rest';
  13. private static $appkey = '2015panda';
  14. private static $appPassWord = 'nEs5vu86JSjh89WPW4de2d3e87rwli3e8rw';
  15. private function _getSign($data){
  16. return md5(self::$appkey . self::$appPassWord . json_encode($data));
  17. }
  18. public function putOrder($pay_sn, $trade_no) {
  19. $order_list = Model('order')->getNormalOrderList(array('pay_sn'=> $pay_sn), $this->page, '*', 'order_id desc', '', array('order_address', 'order_goods'));
  20. $delivery_order_list = array();
  21. foreach ($order_list as $order_info) {
  22. if ($order_info['order_state'] === '20') {
  23. $delivery_order = array();
  24. $delivery_order['tid'] = $order_info['order_sn'];
  25. $delivery_order['total_fee'] = $order_info['order_amount'];
  26. $delivery_order['discount_fee'] = '';
  27. $delivery_order['post_fee'] = $order_info['shipping_fee'];
  28. $delivery_order['created'] = date('Y-m-d H:i:s', $order_info['add_time']);
  29. $delivery_order['pay_time'] = date('Y-m-d H:i:s',$order_info['payment_time']);
  30. $delivery_order['buyer_message'] = '';
  31. $delivery_order['express_code'] = '';
  32. $delivery_order['pay_account_type'] = $order_info['payment_code'] == 'wxpay' ? '微信支付': '支付宝';
  33. $delivery_order['pay_account_id'] = '';
  34. $delivery_order['pay_account_no'] = $trade_no;
  35. $delivery_order['buyer_nick'] = $order_info['buyer_name'] === 'anonymous' ? 'anonymous'.'_'. $order_info['buyer_id'] : $order_info['buyer_name'];
  36. $delivery_order['buyer_email'] = $order_info['buyer_email'];
  37. $delivery_order['trade_memo'] = '';
  38. $delivery_order['receiver_name'] = $order_info['reciver_name'];
  39. $delivery_area = explode("\t", $order_info['reciver_info']['area']);
  40. $delivery_order['receiver_state'] = $delivery_area[0];
  41. $delivery_order['receiver_city'] = $delivery_area[1];
  42. $delivery_order['receiver_district'] = $delivery_area[2];
  43. $delivery_order['receiver_address'] = $order_info['reciver_info']['street'];
  44. $delivery_order['receiver_zip'] = '000000';
  45. $delivery_order['receiver_mobile'] = $order_info['reciver_info']['mob_phone'];
  46. $delivery_order['receiver_phone'] = $order_info['reciver_info']['tel_phone'];
  47. $delivery_order['order_size'] = count($order_info['extend_order_goods']);
  48. $delivery_order['orderList'] = array();
  49. foreach($order_info['extend_order_goods'] as $key => $goods){
  50. $delivery_goods = array();
  51. $delivery_goods['oid'] = $order_info['order_sn'] . $key;
  52. $delivery_goods['tid'] = $order_info['order_sn'];
  53. $delivery_goods['title'] = $goods['goods_name'];
  54. $delivery_goods['price'] = $goods['goods_price'];
  55. $delivery_goods['num'] = $goods['goods_num'];
  56. $goods_serial = Model('goods')->getGoodsInfo(array('goods_id'=>$goods['goods_id']));
  57. $delivery_goods['outer_sku_id'] = $goods_serial['goods_serial'];
  58. $delivery_goods['outer_sku_properties_name'] = $goods['goods_name'];
  59. $delivery_goods['buyer_nick'] = $order_info['buyer_name'] === 'anonymous' ? 'anonymous'.'_'. $order_info['buyer_id'] : $order_info['buyer_name'];
  60. array_push($delivery_order['orderList'] , $delivery_goods);
  61. }
  62. array_push($delivery_order_list, $delivery_order);
  63. }
  64. }
  65. $data = array('type' => 'PUT_TRADE', 'data' => $delivery_order_list);
  66. $sign = $this->_getSign($data);
  67. $headers = array('v_appkey: '.self::$appkey, 'v_sign: '.$sign, 'Content-Type: application/json');
  68. $result = json_decode($this->_http_json_post(self::$appURL, json_encode($data), $headers));
  69. return $result;
  70. }
  71. private function _http_json_post($url, $params = array(), $headers = array())
  72. {
  73. if (!function_exists('curl_init')) {
  74. return NULL;
  75. }
  76. $ci = curl_init();
  77. curl_setopt($ci, CURLOPT_URL, $url);
  78. if ($headers) {
  79. curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
  80. }
  81. curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
  82. curl_setopt($ci, CURLOPT_POST, 1);
  83. curl_setopt($ci, CURLOPT_POSTFIELDS, $params);
  84. $response = curl_exec($ci);
  85. if($response){
  86. curl_close($ci);
  87. return $response;
  88. } else {
  89. $error = curl_errno($ci);
  90. curl_close($ci);
  91. return array('curl error code: '.$error);
  92. }
  93. }
  94. }