首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
华为云
V2EX  ›  问与答

微信支付完成后在回调过程中完成业务操作(比如增加账户余额),还需要去查每个订单的状态保险下吗?

  •  
  •   coolair · 41 天前 · 493 次点击
    这是一个创建于 41 天前的主题,其中的信息可能已经有所发展或是发生改变。
    会出现回调丢了的情况吗?

    这个微信的订单可以不管吗,比如没有支付,我回头在生成过一个订单让他支付我自己的业务订单,不去管微信订单 2 个小时会不会超时,每次都生成新的可以吗?
    8 回复  |  直到 2018-09-12 09:26:25 +08:00
        1
    mydns   41 天前
    最好查一下每个订单的状态是不是真的支付了 避免他人伪造数据 post 到你的接收地址
        2
    shoaly   41 天前
    不需要, 因为本身是有验签的, 注意核对金额就行了
        3
    hlwjia   41 天前
    微信生成的那个订单应该是不会超时的,你应该要主动去关闭他。

    你应该有你系统内的一个 order id,不想影响效率,可以定期检查一个 order id 是否已经支付,支付了的话,就可以把其他的微信订单都关闭了。
        4
    p2pCoder   41 天前 via Android
    金融系统不要相信对接的系统是把幂等完全做好的
        5
    cpdyj0   41 天前
    和钱沾边的系统小心点不为过
        6
    qiayue   41 天前
    自己这边一定要有一个订单表,一个订单生成一条记录
    拿微信支付举例
    1、用户点击支付时,先判断是否已经调用 [统一下单] 接口生成了预支付标识( prepay_id ),未生成或者超过 2 小时则重新调用 [统一下单] 接口,已生成则下一步
    2、传入 prepay_id 等信息,唤起支付
    3、用户支付
    4、用户支付完成,微信回调你的 [支付通知] 接口,把支付信息告诉你(包含了微信支付订单号 transaction_id 和你自己的订单号 out_trade_no ),你此时可以需要判断用户支付金额是否跟你自己的订单里保存的金额一致,如果一致则认为支付成功,才去进行下一步业务处理
    第 4 步为了确保万无一失,也可以传 transaction_id 或 out_trade_no 调用 [查询订单] 接口判断该微信支付订单的状态。
        7
    passerbytiny   40 天前
    不需要。

    回调是微信服务器调用你的服务器,只有在你的服务器不正常的时候,回调才会丢。

    你必须完全信任微信回调的时候已经支付成功了。如果你不信任微信只会在支付成功后才发起回调,那么你的任何附加措施(本例即查询订单状态)也就都是不可信任的。

    你在回调的时候查询订单状态以及商户余额,都没有意义。分布式异步情况下,很有可能:微信确认支付完成后,不等商户余额到账和订单状态改变,就立刻就发起回调,而此时你去查订单状态和商户余额,是查询不到任何东西的。
        8
    rogwan   40 天前 via Android
    你的服务器对回调请求不返回正常状态,回调会重复请求,除非你自己的服务器挂的太久了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   764 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 18:56 · PVG 02:56 · LAX 11:56 · JFK 14:56
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1