微信支付回调问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jtping
V2EX    问与答

微信支付回调问题

  •  1
     
  •   jtping 2021-01-13 11:20:08 +08:00 4906 次点击
    这是一个创建于 1764 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样的最近在调小程序的支付接口,其他步骤基本上都已经没问题了,但是服务器端接收不到微信的回调请求,导致一直不能成功支付

    满足以下几点:

    1.外网能通过回调地址直接访问,没有登陆拦截

    2.请求格式为 https://xxxx.com/xxx/xxx 没有携带任何参数

    3.服务器端入方向的所有端口都对外开放

    找了一天了,还是找不到问题在哪,希望知道的大神指导指导我

    第 1 条附言    2021-01-14 11:59:33 +08:00
    支付问题解决了

    我来说一下具体经过吧

    最开始我因为不熟悉微信支付流程,以为是回调方法的问题,实际上订单并没有支付成功,所以不可能会回调

    最开始用的是微信支付的 V3 版本,因为版本的原因,所以用了 RSA 加密,可能是 RSA 加密我哪一步出了问题,所以导致支付失败(微信支付的提示也太不友好了,就提示一个系统繁忙,目前也没找到具体原因)

    之后我改用老版本的微信支付,加密算法也改成 MD5 了,然后就解决了
    第 2 条附言    2021-01-14 12:00:31 +08:00
    感谢各位大神指导!
    59 条回复    2021-01-14 09:50:59 +08:00
    yimity
        1
    yimity  
       2021-01-13 11:37:12 +08:00
    你在外网直接访问给微信的回调接口能不能访问到?
    ivanMeng
        2
    ivanMeng  
       2021-01-13 11:40:41 +08:00
    1.查看 nginx 日志是否有回调访问日志。
    2.代码之中提供 log 记录。
    3.微信本身存在问题几率极低。回调时间是逐渐变长。要开始的 15s/15s/30s......等
    4.增加主动查账业务 然后进行修改订单进行你接下来的业务
    jtping
        3
    jtping  
    OP
       2021-01-13 11:40:41 +08:00
    @yimity 能直接访问 但是微信回调就没反应
    qiayue
        4
    qiayue  
    PRO
       2021-01-13 11:42:00 +08:00
    先看 nginx 确认微信到底有没有调你的接口。
    另外,回调地址是你下单时填进去的,会不会你填的是另一个地址。
    jtping
        5
    jtping  
    OP
       2021-01-13 11:43:52 +08:00
    看了一下 nginx 日志里没有记录
    jtping
        6
    jtping  
    OP
      &bsp;2021-01-13 11:45:25 +08:00
    @qiayue 没有记录 下单时回调地址我输出了一下 没错的
    jtping
        7
    jtping  
    OP
       2021-01-13 11:47:29 +08:00
    @ivanMeng 没有微信回调请求的记录 我能确定回调方法没被调用
    R18
        8
    R18  
       2021-01-13 11:48:05 +08:00   1
    查下 CDN 的 WAF 是不是被拦截了。我前段时间才遇到过某家支付的回调被 CF 的 WAF 拦截掉了。
    hlwjia
        9
    hlwjia  
    PRO
       2021-01-13 11:52:19 +08:00   1
    如果是之前没成功过,那就是微信支付后台哪里没配置白名单吧。

    如果是之前可以成功,突然不行了,那目前确实看不出哪里出问题(假设你那边已经排查完整)
    jtping
        10
    jtping  
    OP
       2021-01-13 11:53:43 +08:00
    @R18 我去看看!
    jtping
        11
    jtping  
    OP
       2021-01-13 12:01:11 +08:00
    @hlwjia 白名单是配了的 我去检查检查
    justseemore
        12
    justseemore  
       2021-01-13 12:01:30 +08:00
    let's encrypt 的证书 大概率会被拦截
    1iuh
        13
    1iuh  
       2021-01-13 12:05:05 +08:00
    服务在哪里?
    qiayue
        14
    qiayue  
    PRO
       2021-01-13 12:17:38 +08:00
    @jtping 后面解决问题了,麻烦在这里说下具体是什么问题,并 @楼上各位通知下大家
    jtping
        15
    jtping  
    OP
       2021-01-13 12:18:19 +08:00
    @1iuh 阿里云上
    jtping
        16
    jtping  
    OP
       2021-01-13 12:18:49 +08:00
    @qiayue okok
    Drumming
        17
    Drumming  
       2021-01-13 12:20:27 +08:00
    @zpfhbyx 这个坑似曾相识...好像遇到过...想不起来了...
    jtping
        18
    jtping  
    OP
       2021-01-13 12:26:44 +08:00
    @zpfhbyx DigiCert 的 手动狗头
    justseemore
        19
    justseemore  
       2021-01-13 12:46:34 +08:00
    @Drumming oscp 被 gg 之后。。
    micean
        20
    micean  
       2021-01-13 12:56:22 +08:00
    如果是沙箱的话,可以考虑是腾讯自己的问题,去开发社区问问吧。
    phpcxy
        21
    phpcxy  
       2021-01-13 13:11:29 +08:00
    试试先不用 https,直接 http 来一发
    rogwan
        22
    rogwan  
       2021-01-13 13:20:45 +08:00
    先去微信账户看下对账记录,确定付款状态;然后再检查有没有回调的请求;最后再看服务器处理请求成功的业务逻辑是不是写对了。
    TimPeake
        23
    TimPeake  
       2021-01-13 13:41:25 +08:00
    域名白名单之类的
    jtping
        24
    jtping  
    OP
       2021-01-13 13:59:16 +08:00
    @micean 测试环境
    jtping
        25
    jtping  
    OP
       2021-01-13 14:00:52 +08:00
    @rogwan 微信那边支付订单已经创建了 处于等待支付状态
    jtping
        26
    jtping  
    OP
       2021-01-13 14:04:05 +08:00
    @phpcxy 一开始我也以为是这个问题 后来看到说已经支持 https 了 就没在意 我去试试吧
    rogwan
        27
    rogwan  
       2021-01-13 14:14:06 +08:00 via Android
    @jtping 现在支付都还是待付款状态,那你应该检查支付环节,支付环节走完才会到回调。
    jtping
        28
    jtping  
    OP
       2021-01-13 14:19:01 +08:00
    @rogwan 调起支付输入密码后(不管密码对错) 微信提示系统繁忙 大概是这么个样子
    radiocontroller
        29
    radiocontroller  
       2021-01-13 14:19:36 +08:00
    现在钱还没付掉?
    ReinerShir
        30
    ReinerShir  
       2021-01-13 14:20:00 +08:00
    我记得测试环境沙箱模式是不能支付的,那么也就无法触发支付成功回调啊?
    jtping
        31
    jtping  
    OP
       2021-01-13 14:24:09 +08:00
    @radiocontroller 对的 微信那边处于待支付状态
    jtping
        32
    jtping  
    OP
       2021-01-13 14:25:13 +08:00
    @ReinerShir 不是沙箱模式
    Lemeng
        33
    Lemeng  
       2021-01-13 14:31:43 +08:00
    是不是账号状态异常
    yxzblue
        34
    yxzblue  
       2021-01-13 14:33:50 +08:00
    微信回调是 POST 请求
    jtping
        35
    jtping  
    OP
       2021-01-13 14:48:42 +08:00
    @yxzblue 我这边 post get 都接收的
    rogwan
        36
    rogwan  
       2021-01-13 14:51:45 +08:00 via Android
    @jtping 你可以看下微信报错的具体 error code,会提示错误类型的。猜测可能是你没有按微信要求生成正确的密钥证书,或者是支付开发者 ID 权限开通的不够。
    hlwjia
        37
    hlwjia  
    PRO
       2021-01-13 14:51:49 +08:00
    啊。你用户那边都没支付成功啊? 那个回调是用户支付成功后才有的。

    如果 client 那边的支付出问题了,那估计是调用问题,参数啥的都检查一遍
    jtping
        38
    jtping  
    OP
       2021-01-13 14:56:33 +08:00
    @Lemeng 指的是微信账号吗
    jtping
        39
    jtping  
    OP
       2021-01-13 15:08:50 +08:00
    @rogwan 小程序那边给的报错是这个 requestPayment:fail cancel 支付取消了
    jtping
        40
    jtping  
    OP
       2021-01-13 15:10:57 +08:00
    @hlwjia 参数格式应该是没问题的 会不会是加密方式 我这边用的是 RSA
    qiayue
        41
    qiayue  
    PRO
       2021-01-13 15:11:38 +08:00   1
    @jtping 支付取消,当然就没回调。
    你们自己付款测试,别等用户付。
    rogwan
        42
    rogwan  
       2021-01-13 16:23:48 +08:00 via Android   1
    @jtping 大概率是 #40 楼的问题,你重新走一遍生成加密证书再试。
    jtping
        43
    jtping  
    OP
       2021-01-13 16:32:37 +08:00
    @qiayue
    我们自己测试的

    密码输入后 一直是支付动画 然后就说系统繁忙

    我去支付平台看了下 是有订单生成的 状态是未支付
    jtping
        44
    jtping  
    OP
       2021-01-13 16:35:45 +08:00
    @rogwan 嗯 我再试试看
    jtping
        45
    jtping  
    OP
       2021-01-13 16:36:26 +08:00
    @rogwan 不过是能够调起支付界面的 是输入密码后 支付动画结束 提示系统繁忙的
    phpcxy
        46
    phpcxy  
       2021-01-13 16:38:02 +08:00
    原来是还未支付成功,那就还没到回调那一步了
    jtping
        47
    jtping  
    OP
       2021-01-13 16:40:56 +08:00
    @phpcxy 我一开始理解的是 要回调了之后才会成功...
    qiayue
        48
    qiayue  
    PRO
       2021-01-13 17:18:01 +08:00
    daijialong
        49
    daijialong  
       2021-01-13 17:57:18 +08:00
    接口用什么语言写的?
    jtping
        50
    jtping  
    OP
       2021-01-13 18:03:29 +08:00
    xiangpeng
        51
    xiangpeng  
       2021-01-13 18:14:51 +08:00 via iPhone
    用户正常支付完才回调,订单状态未支付的话先排查支付问题吧
    sevenzhou1218
        52
    sevenzhou1218  
       2021-01-13 18:16:17 +08:00
    题外话,话说你不轮询吗?
    daijialong
        53
    daijialong  
       2021-01-13 18:18:01 +08:00
    @jtping 微信官方文档上看是 xml 方式传参 试着不指定请求的 Content-Type
    ByteChen
        54
    ByteChen  
       2021-01-13 19:10:40 +08:00
    在商户平台设置 apiv3key 了吗
    jtping
        55
    jtping  
    OP
       2021-01-14 09:24:09 +08:00
    @ByteChen 设置了的
    jtping
        56
    jtping  
    OP
       2021-01-14 09:24:43 +08:00
    @daijialong 我调的是 v3 版本的接口
    jtping
        57
    jtping  
    OP
       2021-01-14 09:25:39 +08:00
    @xiangpeng 嗯 开始是我理解错了 现在在往这个方向找
    jtping
        58
    jtping  
    OP
       2021-01-14 09:26:08 +08:00
    @sevenzhou1218 轮询啥...
    Achiii
        59
    Achiii  
       2021-01-14 09:50:59 +08:00
    支付成功才会回调。然后回调后处理业务逻辑把订单状态改成已支付....
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5564 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 06:33 PVG 14:33 LAX 22:33 JFK 01:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86