公司线上的商城 半个月 4000 笔订单 有接近 50 笔 客户付款了但是未显示付款成功 微信商户号确实有钱进去。回调业务逻辑很简单啊。
1
lelouchyang OP 虽然写 cron 可以把所有未支付订单 手动改了 但是 这不是解决问题方案啊
|
2
cloudzhou 2017-10-23 16:21:33 +08:00
调用微信同步接口,确认订单是否支付,更改状态
|
3
Light3 2017-10-23 16:21:41 +08:00
= = 你没有日志嘛 就是走接口的时候 把参数记录一下 写个日志 方便排查 具体原因..
如果没有 现在写 然后自己搞个测试商品 试试不就完了吗 |
4
lelouchyang OP @cloudzhou 不是同步不同步的问题是 问题可以各种姿势解决 但是 不走回调 确实很蛋疼
|
5
lelouchyang OP @Light3 测试了 n 次 都暴力测试过 回调都没问题。但是线下 1000 人同时付款 就出现这种问题 服务器是 16 核 32g 内存 带宽 50m
|
6
shmilyin 2017-10-23 16:25:04 +08:00
不走回调肯定是你这边的问题,写日志 调试回调的逻辑
|
7
lelouchyang OP 目前使用微信的查询接口 解决了这个 bug 但是 以前用的飞起的微信回调 notify 怎么会出现这种问题。
|
8
lelouchyang OP @shmilyin 不是不走回调。是 100 笔订单有一笔不走回调 ,我自己测试的时候 连续下了 20 笔订单 都能回调成功
|
9
m2276699 2017-10-23 16:27:05 +08:00
回调接口压测还原问题
|
10
lelouchyang OP @m2276699 服务器很给力啊。。。
|
11
ma125125t 2017-10-23 16:31:36 +08:00
微信有主动查询接口啊。
|
12
flyingfz 2017-10-23 16:32:58 +08:00
在 获取预支付 id 时, notifyUrl 的值 , 类似: https://some_domain/pay_notify/your_order_id
然后你的这个 回调接口 , 被微信调用时, 会有日志(nginx 等), 根据这个日志, 看看 回调请求, 是否真的到了你的服务器. |
13
lelouchyang OP @ma125125t 我知道啊 但是为什么 异步回调 会 1%概率失败呢
|
14
lizon 2017-10-23 16:34:09 +08:00
线上日志,回调的时候打印订单号
你先把问题定位,到底是回调的问题还是你本身业务系统的问题 |
15
m2276699 2017-10-23 16:42:55 +08:00
@lelouchyang 压测不限于检测服务器性能,并发问题、数据库是不是有问题,好多可能啊。我相信微信是会把请求发出去的,甚至发了多次,那么问题就是你的代码没有处理甚至没有进入你的代码。所以我觉得压测可以还原一下问题
|
16
2ME 2017-10-23 16:59:59 +08:00
应该是你回调的方法里和 redis 或者数据库交互有问题吧 比如事务并发过多丢失修改之类的?
以上是不负责任的猜测 .. 回调方法里写日志看看吧 |
17
6IbA2bj5ip3tK49j 2017-10-23 17:15:22 +08:00
微信支付验收案例里就有『支付成功,但没有回调』,
所以说没有收到回调在开发的时候就应该考虑进去。 |
18
lukunlin 2017-10-23 20:24:53 +08:00
回调处理再做看看吧~
|
19
webfrogs 2017-10-24 11:18:56 +08:00
不能完全信任回调。主动查询状态作为兜底方案是肯定要有的,尤其是做支付功能,更应该谨慎。
|
20
lelouchyang OP 各位老哥 问题找到了 我之前的订单生产逻辑是 年月日加上用户 id 加上随机数 正好几个人的随机数加上用户 id 而且还是统一时间注册的。。导致重复了订单。丢人了
|