Skip to content

后台“重发回调”允许对子订单重发,空 notify_url 会进入无效重试 #45

@jiamovo

Description

@jiamovo

当前子订单创建时会把 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 判断

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions