DeliveryByF1.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types=1);
  12. namespace app\store\service\order;
  13. use app\common\library\express\Usps;
  14. use app\console\library\Tools;
  15. use app\store\model\{Order as OrderModel, order\Export as ExportModel, OrderAddress as OrderAddressModel};
  16. use app\common\library\helper;
  17. use app\common\service\BaseService;
  18. use app\common\service\Goods as GoodsService;
  19. use app\common\enum\order\{
  20. PayType as PayTypeEnum,
  21. PayStatus as PayStatusEnum,
  22. OrderSource as OrderSourceEnum,
  23. OrderStatus as OrderStatusEnum,
  24. DeliveryType as DeliveryTypeEnum,
  25. ReceiptStatus as ReceiptStatusEnum,
  26. DeliveryStatus as DeliveryStatusEnum,
  27. export\ExportStatus as ExportStatusEnum
  28. };
  29. use cores\exception\BaseException;
  30. use think\facade\Log;
  31. /**
  32. * 服务层:订单导出Excel
  33. * Class Export
  34. * @package app\store\service\order
  35. */
  36. class DeliveryByF1 extends BaseService
  37. {
  38. /**
  39. * 设置用户的会员等级
  40. * @param int $storeId
  41. * @return array|bool
  42. * @throws \think\db\exception\DataNotFoundException
  43. * @throws \think\db\exception\DbException
  44. * @throws \think\db\exception\ModelNotFoundException
  45. */
  46. public function orderCreateYundan(int $orderId)
  47. {
  48. $Usps = new Usps();
  49. // 请求查询接口
  50. $token = $Usps->getItdidaToken();
  51. if (empty($token)) {
  52. Log::error('无有效的Iddida token');
  53. return false;
  54. }
  55. $url = 'http://f1.itdida.com/itdida-api/yundans';
  56. $params =
  57. [
  58. "baoGuanFangShi" => 0,
  59. "baoGuoLeiXing" => 1,
  60. "cardType" => 0,
  61. "clientId" => $token,
  62. "danJianList" => [
  63. [
  64. "chang" => 1,
  65. "gao" => 1,
  66. "kuan" => 1,
  67. "origBoardNum" => 0,
  68. "shiZhong" => 0.5,
  69. "stackable" => true
  70. ]
  71. ],
  72. "eori" => "",
  73. "extraFreight" => 0,
  74. "freightPaymentWay" => 0,
  75. "fuShuiJin" => 0,
  76. "guoJia" => "US",
  77. "huoWuTeXing" => "带电",
  78. "ioss" => "",
  79. "jianShu" => 1,//to fix
  80. "kapaiWaybill" => false,
  81. //"keHuDanHao" => "",//todo fill
  82. //"maiJiaId" => "",//to fill
  83. "needDispatch" => false,
  84. "needValidateAddress" => false,
  85. "pushBackLabelAndInvoice" => false,
  86. "qiTaDanHao1" => "JCX0415047275YQ",
  87. "requiredChangeNo" => false,
  88. "requiredTrackNo" => true,
  89. "requiredZhuanDanFaPiao" => false,
  90. /* "shenBaoXinXiList" => [
  91. [
  92. "shenBaoBiZhong" => "USD",
  93. "shenBaoDanJia" => 0,//todo fill 申报单价
  94. "shenBaoHaiGuanBianMa" => "",
  95. "shenBaoJinE" => 0,////todo fill 申报金额
  96. "shenBaoPinMing" => "",//todo fill 品名
  97. "shenBaoShuLiang" => 1,
  98. "zhongWenPinMing" => ""//to fill
  99. ],
  100. ],*/
  101. "shouHuoQuDao" => "美国专线小包普货",
  102. "shouHuoShiZhong" => 0.500,
  103. //"shouJianRenChengShi" => "",//to fill收货城市
  104. //"shouJianRenDiZhi1" => "",//to fill收货地址
  105. "shouJianRenDiZhi2" => "",
  106. "shouJianRenDiZhi3" => "",
  107. //"shouJianRenDianHua" => "",//to fill收货电话
  108. "shouJianRenGongSi" => "",
  109. //"shouJianRenXingMing" => "",//to fill收货人姓名
  110. //"shouJianRenYouBian" => "",//to fill收货人邮编
  111. "skuText" => "null,null,null",
  112. "synPushBill" => false,
  113. "tradeTerms" => "",
  114. "useReferenceApi" => false,
  115. "wuLiuFangShi" => 2,
  116. //"zhouMing" => ""//to fill收货人州名
  117. ];
  118. $headers = [
  119. "Content-type: application/json;charset=utf-8",
  120. //'Content-Length: ' . strlen($data_string)),
  121. "Authorization: {$token}",
  122. "Accept: */*"
  123. ];
  124. $model = OrderModel::detail($orderId, ['goods', 'address']);
  125. $params['keHuDanHao'] = $model['order_no'];
  126. $params['maiJiaId'] = $model['user_id'];
  127. $params['zhouMing'] = $model['address']['region']['code'];
  128. $params['shouJianRenChengShi'] = $model['address']['city'];
  129. $params['shouJianRenYouBian'] = $model['address']['zip_code'];
  130. $params['shouJianRenDianHua'] = $model['address']['phone'];
  131. $params['shouJianRenDiZhi1'] = $model['address']['detail'];
  132. $params['shouJianRenXingMing'] = $model['address']['name'] . ' ' . $model['address']['last_name'];
  133. $goodsList = [];
  134. foreach ($model['goods'] as $good) {
  135. $goodsList[] = [
  136. "shenBaoBiZhong" => "USD",
  137. "shenBaoDanJia" => $good['goods_price'],//todo fill 申报单价
  138. "shenBaoHaiGuanBianMa" => "",
  139. "shenBaoJinE" => $good['total_price'],//todo fill 申报金额
  140. "shenBaoPinMing" => "vapor",//$good['goods_name'],//todo fill 品名
  141. "shenBaoShuLiang" => $good['total_num'],
  142. "zhongWenPinMing" => "电子烟"//todo fill
  143. ];
  144. }
  145. $params['shenBaoXinXiList'] = $goodsList;
  146. $resJson = curl_post($url, [$params], $headers);
  147. Log::write('itdida::' . $resJson);
  148. $res = json_decode($resJson, true);
  149. // 遍历整理数据
  150. if (isset($res['data']) && $res['data'][0]['code'] == 200) {
  151. if (!$model->delivery(['express_id' => 10001, 'express_no' => $res['data'][0]['zhuanDanHao']])) {
  152. Log::write('发货失败orderId:' . $model['order_id'], 'error');
  153. return ['code' => 200, 'message' => '发货成功',];
  154. }
  155. } else {
  156. Log::write('itdida运单失败::orderNo:' . $model['order_no'] . $resJson, 'error');
  157. return ['code' => 400, 'message' => $res['data'][0]['message']];
  158. }
  159. }
  160. }