hupun.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. declare (strict_types=1);
  3. namespace library\lib;
  4. // +----------------------------------------------------------------------
  5. // | [ WE CAN DO IT MORE SIMPLE ]
  6. // +----------------------------------------------------------------------
  7. // | Copyright (c) 2018-2020 rights reserved.
  8. // +----------------------------------------------------------------------
  9. // | Author: TABLE ME
  10. // +----------------------------------------------------------------------
  11. // | Date: 2020-10-22 09:24
  12. // +----------------------------------------------------------------------
  13. class hupun {
  14. private $config;
  15. public function __construct()
  16. {
  17. $this->config = config('hupun');
  18. }
  19. //推送订单到ERP
  20. public function tradesErp($data){
  21. $d['tradeID'] = $data['order_id'];//第三方交易号
  22. $d['shopNick'] = '飞播';//对应到ERP中的店铺昵称
  23. $d['status'] = 2;
  24. $d['createTime'] = $data['time'] * 1000;//下单时间
  25. $d['payTime'] = $data['payTime'] * 1000;//支付时间
  26. $d['modifyTime'] = time() * 1000;//时间戳
  27. $d['storeID'] = $data['storeID'];//仓库编码
  28. $d['sellerMemo'] = $data['mono'];
  29. $d['shippingType'] = 0;//发货类型:0:快递;
  30. $d['totalFee'] = $data['pro_price'];//商品总金额,不含邮费
  31. $d['postFee'] = $data['exp_price'];//邮费
  32. $d['buyer'] = $data['ts_name'];//买家
  33. $d['receiverName'] = $data['name'];//收货人
  34. $d['receiverProvince'] = $data['province'];//收件省
  35. $d['receiverCity'] = $data['city'];//收件市
  36. $d['receiverArea'] = $data['area'];//收件区
  37. $d['receiverAddress'] = $data['address'];//收货地址
  38. $d['receiverMobile'] = $data['mobile'];//收货手机号码
  39. $d['hasRefund'] = 0;
  40. //子订单
  41. $d['orders'] = [
  42. ['tradeID' => $data['order_id'],
  43. 'orderID' => $data['in_order_id'],
  44. 'itemID' => $data['csno'],
  45. 'itemCode' => $data['csno'],
  46. 'itemTitle' => $data['pro_title'],
  47. 'skuCode' => '无',
  48. 'status' => '2',
  49. 'price' => $data['pro_price'],
  50. 'size' => 1,
  51. 'buyerMessage' => $data['mono'],
  52. 'imageUrl' => $data['pro_img'],
  53. 'payment' => $data['pro_price']]
  54. ];
  55. $save['trades'] =json_encode([$d],\JSON_UNESCAPED_UNICODE);
  56. //https://erp-open.hupun.com/api/v1/trades/open
  57. $dd = $this->getXac('https://erp-open.hupun.com/api/v1/trades/open',$save);
  58. return json_decode($dd,true);
  59. }
  60. /**
  61. * 查询订单号
  62. */
  63. public function orderFind($orderIds){
  64. $d['shop_type'] = 100;
  65. $d['shop_nick'] = '飞播';
  66. $d['trade_ids'] = $orderIds;
  67. $post = $this->getParam($d);
  68. $post_string = http_build_query($post, '', '&');
  69. //$post_string = urldecode($post_string);
  70. $dd = $this->httpGet('https://erp-open.hupun.com/api/v1/trades/erp/status?'.$post_string);
  71. return json_decode($dd,true);
  72. }
  73. /**
  74. * 推送产品信息
  75. * @param $data
  76. */
  77. public function addProduct($data){
  78. $d['itemID'] = $data['code'];
  79. $d['shopNick'] = '飞播';
  80. $d['title'] = $data['title'];
  81. $d['itemCode'] = $data['code'];
  82. $d['price'] = $data['price'];
  83. $d['quantity'] = $data['quantity'];
  84. $d['itemURL'] = $data['url'];
  85. $d['barcode'] = $data['csno'];
  86. $d['imageURL'] = $data['img'];
  87. $d['status'] = $data['status'];//状态,0:已删除,1:在售,2:待售,仓库中
  88. $d['createTime'] = $data['time'] * 1000;
  89. $d['modifyTime'] = time() * 1000;
  90. $d['skus'] = [];
  91. $save['items'] =json_encode([$d],\JSON_UNESCAPED_UNICODE);
  92. $dd = $this->getXac('https://erp-open.hupun.com/api/v1/items/open',$save);
  93. return json_decode($dd,true);
  94. }
  95. /**
  96. * 生成字符串
  97. * @param $save
  98. * @return mixed
  99. */
  100. private function getParam($save){
  101. $time = time();
  102. $save['app_key'] = $this->config['app_key'];
  103. $save['format'] = 'json';
  104. $save['timestamp'] = $time * 1000;
  105. $save['sign'] = $this->sign($save);
  106. return $save;
  107. }
  108. /**
  109. * MD5 加密
  110. * @param $data
  111. */
  112. private function sign($data){
  113. ksort($data);
  114. $str = '';
  115. foreach ($data as $k => $v) {
  116. $str .= $k.$v;
  117. }
  118. return strtoupper(md5($this->config['app_secret'] . $str .$this->config['app_secret']));
  119. }
  120. private function getXac($url,$data){
  121. $post = $this->getParam($data);
  122. return $this->curlPost($url,$post);
  123. }
  124. private function httpGet($url) {
  125. $curl = curl_init();
  126. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  127. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  128. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  129. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  130. curl_setopt($curl, CURLOPT_URL, $url);
  131. $res = curl_exec($curl);
  132. curl_close($curl);
  133. return $res;
  134. }
  135. function curlPost($url, $post_data = array(), $timeout = 5, $data_type = "") {
  136. //支持json数据数据提交
  137. if($data_type == 'json'){
  138. $post_string = json_encode($post_data);
  139. }elseif($data_type == 'array') {
  140. $post_string = $post_data;
  141. }elseif(is_array($post_data)){
  142. $post_string = http_build_query($post_data, '', '&');
  143. $post_string = urldecode($post_string);
  144. }
  145. $ch = curl_init(); // 启动一个CURL会话
  146. curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址
  147. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查 // https请求 不验证证书和hosts
  148. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
  149. // curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
  150. //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  151. //curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  152. curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的Post请求
  153. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); // Post提交的数据包
  154. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // 设置超时限制防止死循环
  155. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  156. //curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  157. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
  158. //curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //模拟的header头
  159. $result = curl_exec($ch);
  160. // 打印请求的header信息
  161. //$a = curl_getinfo($ch);
  162. //var_dump($a);
  163. curl_close($ch);
  164. return $result;
  165. }
  166. }