12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace app\api\controller;
- use addons\shopro\exception\Exception;
- use addons\shopro\model\Order;
- use addons\shopro\model\User;
- use think\Db;
- use think\Log;
- class Express extends Base
- {
- protected $noNeedLogin = ['callback'];
- protected $noNeedRight = ['*'];
- /**
- * @ApiInternal
- * 物流信息订阅回调接口
- */
- public function callback()
- {
- $requestData = $this->request->post();
- $expressLib = new \app\api\library\Express();
- // 信息记录日志
- // \think\Log::write('expresscallback:'. json_encode($requestData));
- $express = $requestData['lastResult'];
- // 查找包裹
- $orderExpress = \addons\shopro\model\OrderExpress::with('order')->where('express_code', $express['com'])
- ->where('express_no', $express['nu'])
- ->find();
- if (!$orderExpress) {
- // 包裹不存在,记录日志信息,然后继续下一个
- \think\Log::write('orderExpressNotFound:' . json_encode($requestData));
- return $expressLib->setPushResult(true);
- }
- //注意:对于status= abort(message中包含“3天查询无记录”或者“60天无变化”)的快递单,也需要返回成功接收的响应报文及代码。
- if ($requestData['status'] == 'abort') {
- // 失败了
- if (isset($requestData['message']) && ($requestData['message'] == '3天查询无记录' || $requestData['message'] == '60天无变化')) {
- // 需要重新订阅
- $expressLib->subscribe([
- 'express_code' => $express['com'],
- 'express_no' => $express['nu']
- ], $orderExpress, $orderExpress->order, $this->request->domain());
- }
- \think\Log::write('orderExpressReason:' . json_encode($requestData));
- return $expressLib->setPushResult(true);
- }
- //更新物流信息
- $expressLib->checkAndAddTracesByArray($orderExpress, $express);
- return $expressLib->setPushResult(true);
- }
- }
|