zoukankan      html  css  js  c++  java
  • 支付需要考虑场景

    生成支付签名

    1.根据订单号查询最新支付单是否有待支付的支付单

    2.如果有待支付支付单,触发一次主动查询,避免回调完了和支付成功主动查询查询结果失败的重复失败,导致用户重复支付

    3.如果此单查出已支付则直接修改订单状态提示此单已支付

    4.如果待支付支付单未支付,则判断是否超过超时失效 如果超过则提示支付超时,请重新下单

    5.如果超时则生成支付签名(可以本地缓存 或者每次实时请求支付系统生成,支付系统应该也会缓存)

    5.如果没有支付单,则创建支付单并落库,然后根据新的支付单 生成支付签名

    主动查询处理

    1.即支付成功,支付方通知我们成功我们控制跳转到对应的页面,或者支付方302重定向跳转到我们的确认页面,调用支付的主动查询,如果支付成功则更改状态为待支付下一状态(涉及修改状态加锁)

    异步回调通知处理

    1.异步回调查看订单是什么状态,如果是因为过期未支付的话,则触发自动退款(一般是主动查询为待支付,异步回调未回调,或者down机,处理失败,或者消费消息不及时,定时任务过期未支付)

    2.此接口不宜阻塞,收到回调消息,记录日志表,消息丢到MQ 异步处理 

    过期未支付处理

    1.正常未支付不需要关心

    2.如果是因为实际支付了,主动查询未支付,异步回调未回调,或者down机,处理失败,或者消费消息不及时。

    3.过期未支付逻辑触发时。主动查询一次,如果因为2这种情况导致的待支付,实际已经支付了。根据业务评估自动退款 还是判定支付成功改为待发货

    4.比如这种业务场景,有限制多少公里15分钟必须送到。如果没有送到,就会赔钱。如果过期未支付逻辑触发时 再修改为待发货,就会导致送货超时赔钱

    涉及到的表

    订单表,支付单表,退款单表(售后表)

    支付临界时间

    生成支付签名都需要传递超时时间,且当前系统也会有个超时时间。可以比第三方支付大几秒。让三方支付抛出超时

  • 相关阅读:
    游戏中转轮抽奖的算法实现[转]
    前端的一份配置(备份)
    [转]Jquery通用开源框架之【ejq.js】
    【完整靠谱版】结合公司项目,仔细总结自己使用百度编辑器实现FTP上传的完整过程
    用Putty连接Linux
    使用Nginx的proxy_cache缓存功能取代Squid
    nginx for windows 配置多域名反向代理
    详细解析用Squid实现反向代理的方法
    用Squid和DNSPod打造自己的CDN详细教程
    WINDOWS下的squid
  • 原文地址:https://www.cnblogs.com/LQBlog/p/13839999.html
Copyright © 2011-2022 走看看