|
@@ -106,6 +106,16 @@ async function pollOrderPaymentStatus(orderId, logger) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
|
|
+ const existing = await db.query('SELECT state FROM orders WHERE orderId = ?', [orderId])
|
|
|
|
|
+ if (!existing?.length) {
|
|
|
|
|
+ logger.warn(`订单不存在,停止轮询:${orderId}`)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Number(existing[0].state) !== 0) {
|
|
|
|
|
+ logger.info(`订单已处理(state=${existing[0].state}),停止轮询:${orderId}`)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
const queryData = await queryPaymentOrder(orderId, logger)
|
|
const queryData = await queryPaymentOrder(orderId, logger)
|
|
|
logger.info(`轮询订单支付状态,订单号:${orderId},尝试次数:${retry + 1},查询结果:${JSON.stringify(queryData)}`)
|
|
logger.info(`轮询订单支付状态,订单号:${orderId},尝试次数:${retry + 1},查询结果:${JSON.stringify(queryData)}`)
|
|
|
|
|
|
|
@@ -154,9 +164,10 @@ async function pollOrderPaymentStatus(orderId, logger) {
|
|
|
|
|
|
|
|
logger.info(`订单处理成功:${out_trade_no}`)
|
|
logger.info(`订单处理成功:${out_trade_no}`)
|
|
|
return
|
|
return
|
|
|
- } else {
|
|
|
|
|
- logger.warn(`订单不存在或已处理:${out_trade_no}`)
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ logger.info(`支付网关已确认付款,订单已由其他进程/回调处理,停止轮询:${out_trade_no}`)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 未支付,继续轮询
|
|
// 未支付,继续轮询
|
|
@@ -206,9 +217,6 @@ class CreateOrder extends API {
|
|
|
super()
|
|
super()
|
|
|
this.setPath('/Order/CreateOrder')
|
|
this.setPath('/Order/CreateOrder')
|
|
|
this.setMethod('POST')
|
|
this.setMethod('POST')
|
|
|
-
|
|
|
|
|
- // 启动订单支付 MQ 消费者(只会启动一次)
|
|
|
|
|
- startOrderPaymentWorker(this.logger)
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async onRequest(req, res) {
|
|
async onRequest(req, res) {
|
|
@@ -406,3 +414,4 @@ class CreateOrder extends API {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
module.exports.CreateOrder = CreateOrder
|
|
module.exports.CreateOrder = CreateOrder
|
|
|
|
|
+module.exports.startOrderPaymentWorker = startOrderPaymentWorker
|