jtping
V2EX  ›  问与答

微信支付回调问题

  •  1
     
  •   jtping · Jan 13, 2021 · 5325 views
    This topic created in 1981 days ago, the information mentioned may be changed or developed.

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

    满足以下几点:

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

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

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

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

    Supplement 1  ·  Jan 14, 2021
    支付问题解决了

    我来说一下具体经过吧

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

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

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

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

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

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

    我去支付平台看了下 是有订单生成的 状态是未支付
    jtping
        44
    jtping  
    OP
       Jan 13, 2021
    @rogwan 嗯 我再试试看
    jtping
        45
    jtping  
    OP
       Jan 13, 2021
    @rogwan 不过是能够调起支付界面的 是输入密码后 支付动画结束 提示系统繁忙的
    phpcxy
        46
    phpcxy  
       Jan 13, 2021
    原来是还未支付成功,那就还没到回调那一步了
    jtping
        47
    jtping  
    OP
       Jan 13, 2021
    @phpcxy 我一开始理解的是 要回调了之后才会成功...
    qiayue
        48
    qiayue  
    PRO
       Jan 13, 2021
    daijialong
        49
    daijialong  
       Jan 13, 2021
    接口用什么语言写的?
    jtping
        50
    jtping  
    OP
       Jan 13, 2021
    xiangpeng
        51
    xiangpeng  
       Jan 13, 2021 via iPhone
    用户正常支付完才回调,订单状态未支付的话先排查支付问题吧
    sevenzhou1218
        52
    sevenzhou1218  
       Jan 13, 2021
    题外话,话说你不轮询吗?
    daijialong
        53
    daijialong  
       Jan 13, 2021
    @jtping 微信官方文档上看是 xml 方式传参 试着不指定请求的 Content-Type
    ByteChen
        54
    ByteChen  
       Jan 13, 2021
    在商户平台设置 apiv3key 了吗
    jtping
        55
    jtping  
    OP
       Jan 14, 2021
    @ByteChen 设置了的
    jtping
        56
    jtping  
    OP
       Jan 14, 2021
    @daijialong 我调的是 v3 版本的接口
    jtping
        57
    jtping  
    OP
       Jan 14, 2021
    @xiangpeng 嗯 开始是我理解错了 现在在往这个方向找
    jtping
        58
    jtping  
    OP
       Jan 14, 2021
    @sevenzhou1218 轮询啥...
    Achiii
        59
    Achiii  
       Jan 14, 2021
    支付成功才会回调。然后回调后处理业务逻辑把订单状态改成已支付....
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   970 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 19:39 · PVG 03:39 · LAX 12:39 · JFK 15:39
    ♥ Do have faith in what you're doing.