V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whuanghkl
V2EX  ›  Java

请求组合支付(混合支付)的问题

  •  
  •   whuanghkl · 2017-07-19 13:55:32 +08:00 · 3260 次点击
    这是一个创建于 2685 天前的主题,其中的信息可能已经有所发展或是发生改变。

    账户余额扣款+支付宝支付 最大的问题就是: 先扣账户余额还是先去第三方支付?

    分析: 一方支付失败(或未完成支付),该如何退款的问题? 延伸出两个问题: (1)如何判断支付失败? (2)如何退款? 有两种退款: (a)账户余额退款;(因为是我们自己的账户,所以较容易控制) (b)支付宝退款(不好控制);

    我的思路: 先从账户余额扣款,如果扣款成功,则发起第三方支付; 1,如果账户余额扣款失败,则不发起第三方支付; 2,如果账户余额扣款成功,第三方支付失败(用户取消支付或余额不足),怎么办? 关键问题是:支付失败,不会收到通知.

    我的方案:

    1,发起第三方支付的时候,账户余额扣款,扣款的金额存储在订单信息中, 此时账户为冻结状态 2,第三方支付完成,则账户解除冻结同时修改订单状态为已支付; 3,第三方支付失败,账户依然是冻结,因为支付失败,不会收到通知; 4,如果超过 24 小时,支付宝仍然没有支付完成,则回滚账户余额,同时解除冻结 5,用户主动取消订单,同 4 处理

    大家有什么好的建议?

    6 条回复    2017-10-12 17:05:43 +08:00
    wangdu2012
        1
    wangdu2012  
       2017-07-19 17:12:30 +08:00 via iPhone
    这不是电商里面很常见的问么?
    Annual
        2
    Annual  
       2017-07-19 18:44:23 +08:00 via Android
    为什么不判断用户还差多少钱,支付成功后再扣除用户余额,而且现在的支付成功会有返回信息呀。
    或者账单模式支付?
    ryd994
        3
    ryd994  
       2017-07-20 05:49:45 +08:00
    发起支付时锁定账户余额,第三方支付不完成,这部分余额就不可用。第三方一直失败就等用户自己手动取消。
    ryd994
        4
    ryd994  
       2017-07-20 05:50:41 +08:00
    不要冻结整个账户,万一用户中途充钱了呢?
    domty
        5
    domty  
       2017-07-20 10:18:55 +08:00
    考虑弄两个余额,一个是总的,一个是可用的。
    发起付款时锁定需要支付的一部分余额,第三方支付失败锁定的这部分余额解锁,超时未支付同理解锁。

    余额扣款和第三方支付回调应该时处于同一个过程中的。

    你这样直接冻结整个账号锁定粒度太大了,用户肯定会有意见的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:31 · PVG 19:31 · LAX 03:31 · JFK 06:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.