当前子订单创建时会把 notify_url 置空,并把 callback_confirm 设为 Ok,目的是明确“不对子订单单独回调”。但后台“重发回调”接口没有排除这种子订单。
相关代码:
src/model/service/order_service.go:413-430
src/model/data/order_admin_data.go:118-128
src/model/data/order_data.go:95-108
src/mq/worker.go:168-185
当前行为:
- 子订单创建时
NotifyUrl 被写成空字符串
ReopenOrderCallback() 只检查 status = pay_success,没有检查这条订单是否本来就不该回调
- 被重开后的订单会重新进入
GetPendingCallbackOrders()
- worker 取到后仍会走
sendOrderCallback(),最终对空 notify_url 发起无意义失败流程
影响:
- 管理员如果在后台对已支付子订单点击“重发回调”,会触发一轮无效重试
- 日志里会出现失败噪音,
callback_num 也会被递增
- 对运维来说,这类订单本来就不该进入 resend callback 范围,现在界面和后端行为不一致
建议:
- “重发回调”前先过滤掉
notify_url 为空的订单,或至少排除子订单
- 更稳妥的做法是把“是否允许重发回调”做成显式条件,而不是只按
status = pay_success 判断
当前子订单创建时会把
notify_url置空,并把callback_confirm设为Ok,目的是明确“不对子订单单独回调”。但后台“重发回调”接口没有排除这种子订单。相关代码:
src/model/service/order_service.go:413-430src/model/data/order_admin_data.go:118-128src/model/data/order_data.go:95-108src/mq/worker.go:168-185当前行为:
NotifyUrl被写成空字符串ReopenOrderCallback()只检查status = pay_success,没有检查这条订单是否本来就不该回调GetPendingCallbackOrders()sendOrderCallback(),最终对空notify_url发起无意义失败流程影响:
callback_num也会被递增建议:
notify_url为空的订单,或至少排除子订单status = pay_success判断