<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 訂單與支付設計 **last update: 2022-06-06 10:23:11** ---- [TOC=3,8] ---- ### 支付與訂單的 #### 生命周期 1. 訂單創建,待支付(支付單創建) ... 支付回執來了 2. 支付單 達成 [支付確認 pay_ack] 3. 業務單 達成 [支付確認 pay_ack] 4. 業務單 履行業務職責(如果有業務職責邏輯的話) 5. 業務單 如果履行業務職責 失敗,那么 ~~要針對 此 支付單進行退款~~ 可以進行補單(重新履行業務) 6. 業務單 如果成功履行了,那么訂單交易完成的邏輯就執行了,如處理充值到賬 ---- #### 業務的冪等性 1. 支付單/業務單 [支付確認 pay_ack] 只能達成一次 ,即業務履行必須只能一次 2. 退款是針對 支付單 一對一的,~~一個支付單只能創建一次退款單(退款記錄)~~ 可以退款多次(總退款金額不超過訂單交易金額) ---- #### 支付單與業務訂單的關系 1. 組合支付單表示 業務單最終的 [支付確認 pay_ack] 可能由多個支付單共同達成 2. 業務單的 每個不同 支付渠道/金額 對應一個 支付單 3. 支付單 直面第三方支付(流水號即為商戶訂單號),業務單 與 支付單 是 可能一對多的 ---- ### 表重要字段 ``` 業務訂單表: status: 訂單狀態:0-創建,1-已取消,2-交易失敗,3-交易完成 pay_status: 支付狀態:0-待支付,1-已支付,2-已取消支付(訂單取消/關閉時 標記為取消支付) is_there_refund: 訂單是否有退款記錄(注意不一定有退款記錄就表示此訂單無效) amount: 應付金額 (交易金額) ``` ``` 支付單(流水)表 pay_status: 支付狀態:0-待支付,1-已支付,2-已取消支付(訂單取消/關閉時 標記為取消支付) is_compose: 是否為組合支付訂單 is_there_refund: 訂單是否有退款記錄(注意不一定有退款記錄就表示此訂單無效) order_id: 業務單id amount: 應付金額 ``` ``` 退款記錄表 flowing_id: 支付單id desc: 退款說明原因 ``` 注意: 1. 如果系統提供 “標記為已支付” 這樣的功能,那么這個操作 只能更改業務訂單表,不能更新支付單表,否則回執時 對支付單支付狀態檢查時,我們不知道是否為渠道重試了 2. 對于 業務單,系統其他后臺功能 “標記為已支付” 等功可能會更新其支付狀態 3. 對于 支付單,pay_status 是否 達成了 [支付確認 pay_ack] (達成 是由用戶完成支付后渠道回執來的) ---- ### 收到回執時,如何區分重試和重復支付 #### 有支付單的設計: 1. 發現 支付單 已經達成 [支付確認 pay_ack] 就為重試 2. 發現 業務單 已經達成 [支付確認 pay_ack] 就為重復支付(可能是由于舊支付單,如砍價造成的,或者是多渠道重復支付了) #### 沒有支付單設計的: 1. [支付確認 pay_ack] 達成時 記錄下對應的渠道 2. 收到回執時判斷達成的渠道是否為當前渠道 3. 是 即為重試,否就為其它渠道重復支付,應該安排退款。 ---- ### 擴展 [聊聊對賬系統的設計方案](https://mp.weixin.qq.com/s/47s0YdRM6u1JNngNe6yghg)(樓下小黑哥) [聊聊對賬系統的設計方案 - 知乎](https://zhuanlan.zhihu.com/p/55573709)(樓下小黑哥) [支付對賬系統怎么設計?](https://mp.weixin.qq.com/s?__biz=MzU3NDY4NzQwNQ==&mid=2247483860&idx=1&sn=e5b8a68b7ede74dae33e60fa69ddedca&scene=21#wechat_redirect)(無敵碼農) [咱們聊聊對賬系統該如何設計](https://juejin.cn/post/6844903618680733704)(AskHarries - 掘金) > 廣義的對賬,所有跨應用的數據交互,理論上都應該進行對賬。所以對賬也**可以分為信息流對賬,資金流對賬。信息流對賬也一般用在自己內部系統的對賬**,比如支付系統的**支付數據和業務系統的業務數據進行對賬,保證資金交易和業務交易的一致性**。資金流對賬也就是支付系統和銀行或者第三方支付系統之間的資金交易對賬。 [對賬處理 - Cocolian Framework | 可可鏈](http://doc.cocolian.cn/essay/recon/2016/10/10/account-2-reconciliation/)(鳳凰老熊) [移動端支付系統如何設計有效地防重失效機制?](https://mp.weixin.qq.com/s?__biz=MzU3NDY4NzQwNQ==&mid=2247483673&idx=1&sn=abc81adf43f999f9ba535721a73de702&chksm=fd2fd0dbca5859cd7a90e09e6b4a3af7b5e8a8a89b09fbaf73f987d4def3a5cfe6f33c4c161d&scene=21#wechat_redirect)(無敵碼農) [## 鎖住余額,為何還會更新異常?](https://mp.weixin.qq.com/s?__biz=MzIzMTgwODgyMw==&mid=2247483935&idx=1&sn=176c01be1a220071e78d60e6d295c34e&chksm=e89fc847dfe841515bf8901ec7ee7ca3102731cdb475275093f2d07ac9a6bb10d54ce37beed9&scene=178&cur_album_id=1337216649245655040#rd)(樓下小黑哥) [Redis 分布式鎖使用不當,釀成一個重大事故,超賣了100瓶飛天茅臺!!!](https://mp.weixin.qq.com/s/oQKK83Syi29JLzWkEM0P2g) [財務對賬系統 | 人人都是產品經理](http://www.woshipm.com/tag/%E8%B4%A2%E5%8A%A1%E5%AF%B9%E8%B4%A6%E7%B3%BB%E7%BB%9F) -----
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看