|
@@ -36,6 +36,10 @@ class PaymentOrderService extends BaseService
|
|
|
const STATUS_USER = 4; // 待用户提交凭证
|
|
const STATUS_USER = 4; // 待用户提交凭证
|
|
|
const STATUS_AUDIT = 5; //待人工审核
|
|
const STATUS_AUDIT = 5; //待人工审核
|
|
|
const STATUS_CANCEL = 6; //已撤回
|
|
const STATUS_CANCEL = 6; //已撤回
|
|
|
|
|
+ const STATUS_TIMEOUT = 7; //超时(在线充值处理中超过 PAY_TIMEOUT_MINUTES 未支付,仍可接收迟到的回调)
|
|
|
|
|
+
|
|
|
|
|
+ const PAY_TIMEOUT_MINUTES = 30;
|
|
|
|
|
+ const PAY_OPEN_STATUSES = [self::STATUS_PROCESS, self::STATUS_TIMEOUT]; // 在线充值可接收回调/查询入账的状态
|
|
|
|
|
|
|
|
public static string $MODEL = PaymentOrder::class;
|
|
public static string $MODEL = PaymentOrder::class;
|
|
|
|
|
|
|
@@ -500,7 +504,7 @@ class PaymentOrderService extends BaseService
|
|
|
]);
|
|
]);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
- if ($info->status != self::STATUS_PROCESS) {
|
|
|
|
|
|
|
+ if (!in_array((int)$info->status, self::PAY_OPEN_STATUSES, true)) {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -545,7 +549,7 @@ class PaymentOrderService extends BaseService
|
|
|
]);
|
|
]);
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
- if ($info->status != self::STATUS_PROCESS) {
|
|
|
|
|
|
|
+ if (!in_array((int)$info->status, self::PAY_OPEN_STATUSES, true)) {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -575,7 +579,7 @@ class PaymentOrderService extends BaseService
|
|
|
if (bccomp(JdPayService::amount($info->amount), JdPayService::amount($params['amount'] ?? 0), 2) !== 0) {
|
|
if (bccomp(JdPayService::amount($info->amount), JdPayService::amount($params['amount'] ?? 0), 2) !== 0) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
- if ($info->status != self::STATUS_PROCESS) {
|
|
|
|
|
|
|
+ if (!in_array((int)$info->status, self::PAY_OPEN_STATUSES, true)) {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -616,7 +620,7 @@ class PaymentOrderService extends BaseService
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if ($info->status != self::STATUS_PROCESS) {
|
|
|
|
|
|
|
+ if (!in_array((int)$info->status, self::PAY_OPEN_STATUSES, true)) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -665,7 +669,7 @@ class PaymentOrderService extends BaseService
|
|
|
{
|
|
{
|
|
|
return DB::transaction(function () use ($info, $payAmount, $status, $successStatus, $failStatus, $params) {
|
|
return DB::transaction(function () use ($info, $payAmount, $status, $successStatus, $failStatus, $params) {
|
|
|
$order = PaymentOrder::where('id', $info->id)->lockForUpdate()->first();
|
|
$order = PaymentOrder::where('id', $info->id)->lockForUpdate()->first();
|
|
|
- if (!$order || (int)$order->type !== self::TYPE_PAY || $order->status != self::STATUS_PROCESS) {
|
|
|
|
|
|
|
+ if (!$order || (int)$order->type !== self::TYPE_PAY || !in_array((int)$order->status, self::PAY_OPEN_STATUSES, true)) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1508,7 +1512,7 @@ class PaymentOrderService extends BaseService
|
|
|
$msg = [];
|
|
$msg = [];
|
|
|
$msg['code'] = self::NOT;
|
|
$msg['code'] = self::NOT;
|
|
|
$info = self::findOne(['id' => $id]);
|
|
$info = self::findOne(['id' => $id]);
|
|
|
- if ($info && $info->status == self::STATUS_PROCESS) {
|
|
|
|
|
|
|
+ if ($info && (int)$info->type === self::TYPE_PAY && in_array((int)$info->status, self::PAY_OPEN_STATUSES, true)) {
|
|
|
if (NoPayService::isRechargeChannel($info->channel)) {
|
|
if (NoPayService::isRechargeChannel($info->channel)) {
|
|
|
$ret = NoPayService::queryPayOrder($info->order_no, (string)$info->member_id);
|
|
$ret = NoPayService::queryPayOrder($info->order_no, (string)$info->member_id);
|
|
|
Log::channel('payment')->info('NO支付查询订单', $ret);
|
|
Log::channel('payment')->info('NO支付查询订单', $ret);
|