今天,我們要來簡單說明一下,在於 MedusaJS
中 Payment Module
中粗略的付款流程是怎什麼。
當使用者對於滿足購物後,會前往結帳,前往結帳的第一個動作,會建立一個 Payment Collection(收款作業)
Payment Collection(付款)
,他會將購物車或者訂單來的付款細節資料進行儲存,
還包括 以下列項:
Payment Session(付款工作階段)
傳來的授權成功或者失敗的回應。Payment(支付記錄)
的狀態。Payment Provider(第三方金流)
對於 Payment Session(付款工作階段)
發送要求時的處理狀態。還有 MedusaJS
的 Payment Collection
是支援分割付款的,假如你買 1000 個商品,
你可以分 600、400 以不同第三方金流去處理。
建立好 Payment Collection(付款)
後,接下來就是根據使用者付款的方式,建立一個 Payment Session(付款工作階段)
。
Payment Session(付款工作階段)
就是開始對第三方金流進行對話,我們先來說說關於此 Payment Session(付款工作階段)
會有的資料屬性。
id
,方便跟蹤。注意:這個 Payment Session(付款工作階段)
的 data(資料)
前端也是可以存取。所以只要將可公開的部分讓前端存取就好,例如 進入與 第三方金流上次溝通紀錄點的鑰匙(token)
。
Payment Session(付款工作階段)
也會儲存 與第三方金流的交流status(狀態)
,有以下狀態:
pending(等待授權)
require_more(需要更多資訊)
authorized(授權)
error(付款時發生錯誤)
cancel(已取消)
當 Payment Session(付款工作階段)
的狀態是 authorized
,會建立一個 Payment data model,這筆付款可以被 capture(確認)
或者refund(退款)
。
以下介紹一下 Payment
與 Payment session(付款工作階段)
等等的關聯性
Payment
建立是與 Payment session(付款工作階段)
關聯的,所以 他們屬於同一個 Payment Collection(付款)
。Payment
也會與 Payment Session(付款工作階段)
溝通的 Payment Provider(第三方支付)
有關聯。Payment
也會多儲存 Payment Session(付款工作階段)
的 資料屬性。再來說明一下 capture(確認)
以及 refund(退款)
是什麼
當訂單 出貨 或 到貨 時,可以點選 capture(確認)
表示請款(補份或全部)。
當訂單被 取消 或 退貨 時 ,可以點選 refund(退款)
表示 退款(部分或全部)。
在 MedusaJS
中,只有一家金流插件可以馬上下載並且使用,就是 stripe
。
其他的都要自己寫程式串接。所以這次介紹了流程,也是方便各位如果要自己實作金流串接前,想了解一下支付過程。
明天玩玩看系統的付款流程 ლ(・´ェ`・ლ)