每天 8 点 01 分或者 8 点 02 分总会有一笔已经在例如在 2 点时回调过的订单再次二次回调。每天都是这个时间。就挺懵逼的。
1
RedBeanIce 2023-12-22 15:43:50 +08:00 1
这种固定时间出现的问题,一般都是定时任务引起的。。
(废话一句) |
2
IdJoel 2023-12-22 16:15:22 +08:00 2
回调的代码得幂等啊,你管他回调几遍呢
|
3
klo424 2023-12-22 16:20:59 +08:00 1
微信回调的机制就是这样啊!不过微信文档写的一直不咋地,新版文档写的比老版还烂。
以下是老版 V2 文档的内容: 注意: 1 、同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 2 、后台通知交互时,如果微信收到商户的应答不符合规范或超时,微信会判定本次通知失败,重新发送通知,直到成功为止(在通知一直不成功的情况下,微信总共会发起多次通知,通知频率为 15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m )这里通知发送可能会多台服务器进行发送,且发送时间可能会在几秒内,但微信不保证通知最终一定能成功。 3 、在订单状态不明或者没有收到微信支付结果通知的情况下,建议商户主动调用微信支付 [查询订单 API] 确认订单状态。 |
4
mmdsun 2023-12-22 17:14:00 +08:00 via iPhone 2
因为你第一次没有正常返回微信要求的响应吧,微信认为失败了就会重试。
|
5
estk 2023-12-22 18:51:41 +08:00 via iPhone 1
你没正确回复成功状态,对方会不定时尝试
|
6
dapang1221 2023-12-22 18:53:42 +08:00 1
SUCCESS
|
7
toby1902 2023-12-22 18:54:31 +08:00 2
终于有人也遇到了,哈哈哈
微信支付的一个坑: https://pay.weixin.qq.com/docs/merchant/development/interface-rules/signature-verification.html#%E5%BA%94%E5%AF%B9%E7%AD%BE%E5%90%8D%E6%8E%A2%E6%B5%8B%E6%B5%81%E9%87%8F 应对签名探测流量 为了确保商户系统的安全,微信支付会在极少数应答或通知回调中生成错误签名,以探测商户系统是否正确地验证了签名。 商户系统不应对探测流量进行特殊处理,而应将其视为正常的应答或通知回调,并对其签名进行验证。 在排查问题时,您可以通过查看签名值中的 WECHATPAY/SIGNTEST/ 前缀快速判断是否为探测流量。所有用于探测目的的签名值都会包含此前缀。 在验签失败的情况下,我们建议商户系统采取以下措施: 如果应答的签名验证失败,商户系统应舍弃该应答。为了提高用户体验,商户系统可以适当地重试,或者让用户重新发起请求。微信支付不会针对重试请求发起探测。 若通知回调的签名验证失败,商户系统应返回失败(即应答 4xx 或 5xx 的状态码),等待微信支付携带正确签名重新发送通知回调。 |
8
lianxiaoyi OP @toby1902 666 感谢老哥解惑。我靠,我这几天一直懵逼,每天很准时的晚上 8 点 2 分莫名就会出现一个二次回调。
|
9
lianxiaoyi OP @estk 都是正确回复了的,有位老哥已经解惑了
|
10
lianxiaoyi OP @IdJoel 如果回调时,检测到订单异常,会有一个提醒通知。
|
11
estk 2023-12-22 22:04:43 +08:00
@lianxiaoyi #9
那无所谓,只要你不要重复处理业务就行,通知就让它通知 |
12
moshiyeap100 2023-12-23 01:22:42 +08:00
对于支付来讲,重复回调直接丢弃就行了。 (注意,如果在某些国家某些类型的支付如果有 REVERSE/REFUND 之类的,这类肯定不能简单的视为重复回调)
|