|
|
@@ -97,6 +97,16 @@ class PurchaseClearClass extends BaseClass
|
|
|
public static function thirdPay($payWay, $orderSn, $totalFee, $attach, $transactionId)
|
|
|
{
|
|
|
$info = self::getByCondition(['orderSn' => $orderSn], true);
|
|
|
+ $isOldSnPay = false; // 标记是否使用了老单号支付
|
|
|
+ if (empty($info)) {
|
|
|
+ // 尝试从 Redis 读取老单号映射,防止用户支付了已失效的旧单号导致回调找不到订单
|
|
|
+ $redisKey = 'hd_clear_old_sn_map_' . $orderSn;
|
|
|
+ $orderId = Yii::$app->redis->executeCommand('GET', [$redisKey]);
|
|
|
+ if (!empty($orderId)) {
|
|
|
+ $info = self::getById($orderId);
|
|
|
+ $isOldSnPay = true; // 确认为老单号支付
|
|
|
+ }
|
|
|
+ }
|
|
|
if (empty($info)) {
|
|
|
$msg = "没有找到清算订单 orderSn:{$orderSn} {$attach}";
|
|
|
noticeUtil::push($msg, '15280215347');
|
|
|
@@ -113,6 +123,13 @@ class PurchaseClearClass extends BaseClass
|
|
|
//临时解决微信一秒内通知二次问题
|
|
|
$id = $info->id;
|
|
|
$info = self::getLockById($id);
|
|
|
+
|
|
|
+ // 如果是老单号支付,将数据库中的 orderSn 修正为实际支付的老单号,并同步更新关联表的 clearSn
|
|
|
+ if ($isOldSnPay) {
|
|
|
+ $info->orderSn = $orderSn;
|
|
|
+ OrderCgClearClass::updateClearSnByClearId($id, $orderSn);
|
|
|
+ }
|
|
|
+
|
|
|
$info->payWay = $payWay;
|
|
|
$info->onlinePay = dict::getDict('onlinePay', 'yes');
|
|
|
$info->thirdNo = $transactionId;
|