Express.php
2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
namespace addons\groupon\controller;
use addons\groupon\exception\Exception;
use addons\groupon\model\Order;
use addons\groupon\model\User;
use think\Db;
use think\Log;
class Express extends Base
{
protected $noNeedLogin = ['callback'];
protected $noNeedRight = ['*'];
/**
* 物流信息订阅回调接口
*/
public function callback()
{
$requestData = $this->request->post();
$expressLib = new \addons\groupon\library\Express();
// 信息记录日志
// \think\Log::write('expresscallback:'. json_encode($requestData));
$data = json_decode(html_entity_decode($requestData['RequestData']), true);
$expressData = $data['Data'];
foreach ($expressData as $key => $express) {
$order_code = $express['OrderCode'] ?? '';
$orderExpress = null;
if (substr($order_code, 0, 1) == 'S') {
// 门店包裹
$orderExpress = \addons\groupon\model\OrderStoreExpress::where('code', $order_code)->find();
}
if (!$orderExpress) {
// 包裹不存在,记录日志信息,然后继续下一个
\think\Log::write('orderExpressNotFound:' . json_encode($express));
continue;
}
if (!$express['Success']) {
// 失败了
if (isset($express['Reason']) && ($express['Reason'] == '三天无轨迹' || $express['Reason'] == '七天无轨迹')) {
// 需要重新订阅
$expressLib->subscribe([
'express_code' => $express['ShipperCode'],
'express_no' => $express['LogisticCode'],
'order_code' => $orderExpress->code ? $orderExpress->code : ''
], $orderExpress, $orderExpress->order ?? null);
}
\think\Log::write('orderExpressReason:' . json_encode($express));
continue;
}
$expressLib->checkAndAddTraces($orderExpress, $express);
}
$result = $expressLib->setPushResult(true);
return json($result);
}
}