• 微信 支付宝 同时支付一个订单的解决方案


    举个例子:

      我们的应用同时的接入了支付宝和微信。有 2 种 或者更多的三方支付方式。这时候有一个很明显的问题, 一个订单 如果同时 使用微信支付 和 支付宝支付 就会支付两次( 同时的 意思是指,支付宝支付以后,在异步通知没有回来的时候 ,客户端有使用微信支付了一次 )。

    这种情况我们能怎么办呢? 

      1 正常支付毁掉会在几秒内回来,所以 如果在一个订单 有使用支付宝支付欲望的时候( 获取签名的时候 ),锁定订单 10 秒钟,然这个10 秒钟内不能使用别的凡是支付。

        缺点: 用户在企图换另一种支付方式的时候回等待10秒。 

      2 我们想,我们的用户都是正常人,正常情况不会 在支付宝 通知没有回来的情况下,在使用微信支付一次。但是我们不能避免用户这么做,我们可以吧这个种极端的情况记录清楚,然后给用户退款。

        实现:如果我们支付通知回来以后,直接去更新订单状态,那么 支付宝的通知来了以后吧订单改成 支付完成。这时候 微信的 通知来了。我们检查订单状态是完成,正常我们会直接返回完成,不做任何处理(  因为只支付一次,通知也可能来多次 ,比如以前的 同步通知和异步通知 )

        这时候应该怎么办呢? 我们应该 在订单之外再记录 一个 支付记录。 上面的 只会回来以后 我们应该写一条支付成功的支付记录。 并且记做业务处理状态是未完成,然后去处理 订单状态,处理以后吧支付记录改成成功,当微信的通知来的时候,我们在写一条支付记录,这条记录是未完成,然后去处理订单,发现订单已经支付完成,那么这个 条支付记录就保留未完成的状态,并且这种记录应该 给用户 原路退回。

  • 相关阅读:
    vue使用bus总线,实现非父子组件间的通信
    vue的$on,$emit的使用
    vue中使用v-bind="$attrs"和v-on="$listeners"进行多层组件监听
    手机端页面,点击手机号拨打电话
    Google Chrome 错误代码“STATUS_INVALID_IMAGE_HASH”
    Nuxt项目启动或打包时,显示内存不足溢出问题解决方案
    使用van-tabbar底部导航栏,会覆盖页面内容解决方法
    微信公众号配置
    文件在线预览kkFileView的使用
    akka-typed(7)
  • 原文地址:https://www.cnblogs.com/cxygg/p/10644081.html
Copyright © 2020-2023  润新知