日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于微信支付、退款的一个取消预约的方案

發布時間:2024/3/13 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于微信支付、退款的一个取消预约的方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前提

本方案是基于 「微信非付款碼支付」 進行設計的。

二、業務場景

首先,大家先大概了解下「預約」和「取消預約」兩個流程。

  • 預約
  • 取消預約
  • 三、遇到的問題

    試想如下場景:

    用戶預約,拉起微信支付后選擇支付,但是在支付回調通知前,用戶又發起了取消。此時該如何實現取消邏輯呢?

    此時,訂單的狀態處于 “待支付”,是允許取消還是不允許取消呢?首先,說下 “不允許取消” 這種情況在業務上是不可能成立的,為什么這么說呢?因為,只有那些處于 “支付中” 狀態的訂單不允許取消才合理,而我們只有 “待支付”、“支付成功” 狀態,我們無法得到 “支付中” 這個狀態。

    所以,只能允許取消!!!!

    如果允許取消的話,是退款還是不退款呢?通過當前訂單狀態 “待支付”,我們也沒辦法判斷用戶是取消支付了(未發生真正的支付不需要進行退款),還是支付了但我方系統還未得到支付回調通知(發生了真正的支付需要進行退款)。

    分別在 “取消支付”、“支付了我方系統還未得到支付回調通知” 兩個場景下分別進行 退款、不退款 都會出現那些問題呢?

    操作訂單狀態取消支付支付了我方系統還未得到支付回調通知
    不退款待支付 => 取消因為根本沒發生實際的支付,所以不退款是合理的訂單雖然成功取消了,但由于不退款,造成用戶無法得到退款的錢
    退款待支付 => 取消因為根本沒發生實際的支付,所以所有退款都會失敗1、退款失敗(那些在微信端還在支付中的訂單);2、退款成功(剛好支付完成且成功)

    四、方案設計

  • 用戶在前端觸發「取消」

  • 支付回調通知

    判斷 “支付成功” 的交易是否有對應的「由于取消產生的待退款任務」,如果存在,則需要進行退庫退款。

    至此,通過以上 2 步,我們來看看可能會出現的所有場景,如下:

    這里需要重點說明的是 場景四。由于并發的情況,會造成一個本該被處理的「由于取消產生的待退款任務」可能永遠都無法被處理的情況產生。

  • 定時任務

    為了解決 場景四 的問題,我們還需要一個定時任務來進行最后的兜底處理。

  • 總結

    以上是生活随笔為你收集整理的基于微信支付、退款的一个取消预约的方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。