|
|
@@ -636,43 +636,48 @@ class IntraCityController extends BaseController
|
|
|
*/
|
|
|
public function actionCallback()
|
|
|
{
|
|
|
- try {
|
|
|
- $callbackData = Yii::$app->request->post();
|
|
|
- if (empty($callbackData)) {
|
|
|
- $postStr = file_get_contents('php://input');
|
|
|
- // 处理转义字符,将JSON字符串正确解析为数组
|
|
|
- $postStr = stripslashes($postStr);
|
|
|
- $callbackData = json_decode($postStr, true);
|
|
|
+ $callbackData = Yii::$app->request->post();
|
|
|
+ if (empty($callbackData)) {
|
|
|
+ $postStr = file_get_contents('php://input');
|
|
|
+ // 处理转义字符,将JSON字符串正确解析为数组
|
|
|
+ $postStr = stripslashes($postStr);
|
|
|
+ $callbackData = json_decode($postStr, true);
|
|
|
|
|
|
- if (empty($callbackData)) {
|
|
|
- util::fail('回调请求的数据为空');
|
|
|
- }
|
|
|
+ if (empty($callbackData)) {
|
|
|
+ util::fail('回调请求的数据为空');
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ // 从配置中获取安全token
|
|
|
+ // $token = Yii::$app->params['wx_intracity_token'] ?? 'your_token_here';
|
|
|
+ // $result = IntraCityExpress::handleOrderCallback($callbackData, $token);
|
|
|
|
|
|
- // 从配置中获取安全token
|
|
|
- // $token = Yii::$app->params['wx_intracity_token'] ?? 'your_token_here';
|
|
|
- // $result = IntraCityExpress::handleOrderCallback($callbackData, $token);
|
|
|
+ // 记录回调日志
|
|
|
+ Yii::info('同城配送回调:' . json_encode($callbackData, JSON_UNESCAPED_UNICODE));
|
|
|
|
|
|
- // 记录回调日志
|
|
|
- Yii::info('同城配送回调:' . json_encode($callbackData, JSON_UNESCAPED_UNICODE));
|
|
|
+ $storeOrderId = isset($callbackData['store_order_id']) ? $callbackData['store_order_id'] : 0;
|
|
|
+ $wxStoreId = isset($callbackData['wx_store_id']) ? $callbackData['wx_store_id'] : ''; //微信门店编号
|
|
|
+ if (empty($storeOrderId) || empty($wxStoreId)) {
|
|
|
+ return $this->asJson(['return_code' => 1, 'return_msg' => '请求参数不正确']);
|
|
|
+ }
|
|
|
|
|
|
- $storeOrderId = isset($callbackData['store_order_id']) ? $callbackData['store_order_id'] : 0;
|
|
|
- $wxStoreId = $callbackData['wx_store_id'];
|
|
|
|
|
|
+ try {
|
|
|
// 使用 storeOrderId 与 wxStoreId 去查询 xhExpressOrder 表
|
|
|
$eo = ExpressOrderClass::getByCondition(['storeOrderId' => $storeOrderId, 'wxStoreId' => $wxStoreId], true, false);
|
|
|
if (empty($eo)) {
|
|
|
Yii::error('订单不存在.store_order_id: ' . $storeOrderId . ',wx_store_id: ' . $wxStoreId);
|
|
|
- echo Json::encode([
|
|
|
- 'return_code' => 1,
|
|
|
- 'return_msg' => '系统错误'
|
|
|
- ]);
|
|
|
- exit();
|
|
|
+ return $this->asJson(['return_code' => 1, 'return_msg' => '系统错误']);
|
|
|
}
|
|
|
// 从 $storeOrderId 提取 orderId
|
|
|
$arr = explode('_', $storeOrderId);
|
|
|
$orderId = intval($arr[0]);
|
|
|
+ if ($orderId == 0) {
|
|
|
+ Yii::error('订单号为0. store_order_id: ' . $storeOrderId . ',wx_store_id: ' . $wxStoreId);
|
|
|
+ return $this->asJson(['return_code' => 1, 'return_msg' => '系统错误']);
|
|
|
+ }
|
|
|
|
|
|
+ $tx = Yii::$app->db->beginTransaction(); // ====================== 开启事务
|
|
|
$msg = ''; // 发通知的内容(默认为空,根据情况生成。没有内容则不会发通知)
|
|
|
$orderStatus = intval($callbackData['order_status']);
|
|
|
switch ($orderStatus) {
|
|
|
@@ -756,28 +761,15 @@ class IntraCityController extends BaseController
|
|
|
if (!$re) {
|
|
|
noticeUtil::push('同城配送回调更新订单状态失败. store_order_id:' . $storeOrderId . ',wx_store_id:' . $wxStoreId . ',status:' . $eo->status);
|
|
|
Yii::error('更新订单状态失败. store_order_id:' . $storeOrderId . ',wx_store_id:' . $wxStoreId . ',status:' . $eo->status);
|
|
|
- $re = [
|
|
|
- 'return_code' => 0,
|
|
|
- 'return_msg' => 'OK'
|
|
|
- ];
|
|
|
- echo Json::encode($re);
|
|
|
- exit();
|
|
|
+ $tx->rollBack(); // ====================== 事务回滚
|
|
|
+ return $this->asJson(['return_code' => 1, 'return_msg' => '系统错误']);
|
|
|
}
|
|
|
|
|
|
- $result = [
|
|
|
- 'return_code' => 0,
|
|
|
- 'return_msg' => 'OK'
|
|
|
- ];
|
|
|
- echo Json::encode($result);
|
|
|
- exit();
|
|
|
+ $tx->commit(); // ====================== 事务提交
|
|
|
+ return $this->asJson(['return_code' => 0, 'return_msg' => 'OK']); // 成功状态的返回数据
|
|
|
} catch (\Exception $e) {
|
|
|
Yii::error('同城配送回调处理异常:' . $e->getMessage());
|
|
|
-
|
|
|
- echo Json::encode([
|
|
|
- 'return_code' => 1,
|
|
|
- 'return_msg' => '系统错误'
|
|
|
- ]);
|
|
|
- exit();
|
|
|
+ return $this->asJson(['return_code' => 1, 'return_msg' => '系统错误']);
|
|
|
}
|
|
|
}
|
|
|
|