上篇講了透過 使用者驗證 來限制使用者使用我們的 API
另一個系統中常見的元件 (服務) 就是 支付服務 了, 由於近年來電子支付盛行, 有各式各樣的付款方式
不過筆者只有接過 Stripe, 其他沒有實務經驗, 所以會分成幾天介紹, 預計介紹以下幾種付款方式的原理
有些付款方式背後是使用相同的技術, 只是支援多種支付方式, 比如電子錢包可以用在 網頁支付 和 行動支付
不過感覺從 使用者端 介紹讀起來會比較有感覺, 所以先依照這個分類方式介紹XD
通常包含幾個角色
以下分別說明
作為 店家 和 Payment Processor 中間的 服務 (Gateway), 負責接受網站發送的 付款請求
並驗證 付款方式 的有效性如卡號, 有效期限等等
常見的有: Stripe, PayPal, Square, NewebPay (藍新金流, 台灣廠商蠻常見)
介於 Payment Gateway 和 銀行/信用卡發行商 之間, 負責整理 商家 的 付款請求 後轉發給 信用卡網路
(整理如驗證資料完整性, 反詐欺, 加密, 標準化請求, 檢查授權等等)
常見的有: Stripe, PayPal, Square, NewebPay (藍新金流, 台灣廠商蠻常見)
信用卡網路 主要負責處理 發卡銀行 和 收款銀行 的資金轉移
步驟如下
常見的有: Visa, MasterCard, American Express
就是 使用者 申辦信用卡的銀行 (也是開戶銀行)
比如國泰世華, 富邦, 中信等等
即 店家 的銀行戶頭 (不確定開業是不是要另外開戶?)
比如電商平台, 8591 等等可以線上輸入卡號的網站
行動支付也是很常聽到但涵蓋很廣的名稱, 一個判斷是否為行動支付的方式, 就是 "沒有該行動裝置的情況下能否付款"?
這裡想成手機就好~
行動支付生活中常見的有以下幾種
NFC (Near Field Communication) 在前篇 使用者驗證 中有提到, 是一種讓裝置間能夠交換資料的技術, 在驗證中我們是以 自然人憑證 舉例, 手機是作為 讀取器 讀取 自然人憑證 (都嵌有 NFC 晶片)
以支付來說, 支援行動支付的 店家 通常會有一個支付裝置 (Payment Device), 能夠讀取 使用者手機裡的 NFC 晶片進行交易
比如: 百貨公司櫃檯 (應該都支援?), 各種商店等等, 只要看到結帳櫃檯有上圖的機器就是了XD
這邊是指透過 QR Code (Quick Response Code) 支付
QR Code 是透過將資料 編碼 (Encode) 後, 用矩形呈現
行動裝置 在掃瞄到 QR Code 之後進行解碼 (Decode), 根據解碼的內容進行後續操作
比如若解碼為 URL, 則會打開瀏覽器; 若為開啟某個 App (也算 URL), 則會打開對應的 App (如 Line Pay)
程式內購買 的流程是根據平台如 Windows, MacOS, Mac Store, Apple Store, Google Play, Windows Store 等等
如果是行動裝置 (如手機) 的話, 假設程式都是從 Apple Store 或 Google Play 下載回來
那我們的 客戶端 只需要向商店發起支付請求即可, 後續的 驗證 和 扣款流程 都由商店處理 (幫我們發給 信用卡網路)
如果不是從商店安裝的 App (如 iOS TestFlight, android APK), 或是 PC 端 (如 Windows, MacOS) 程式
通常會走回上面的 網頁支付 (Webview), 使用者 在網頁輸入付款資訊後, 請求 Payment Gateway 進行後續付款流程