術語
在深入瞭解 API 的工作細節之前,有些事項需要您知曉。
- 收款方(或商戶)
-
希望透過 Payment Request API 接收資金的網站或應用的所有者,可以是個人或組織。
- 付款方
-
使用網站或應用進行購買的個人或組織。付款方會根據支付方式的要求進行身份驗證,然後授權支付。
- 支付方式
-
提交支付的工具,例如信用卡或線上支付服務。
- 支付方式提供商
-
提供使用特定支付方式提交支付所需技術的組織。例如,使用信用卡支付時,信用卡處理服務就是支付方式提供商。
- 支付處理程式
-
為了處理支付,需要與特定支付方式提供商進行互動的程式碼實現。
一些支付處理程式使用 商戶驗證,這是一個透過某種方式驗證商戶身份的過程,通常使用某種形式的加密響應,例如公鑰。經過驗證的商戶才能與支付處理程式互動。
支付方式識別符號
支付處理程式透過 支付方式識別符號 進行標識,這些識別符號是唯一標識支付處理程式的字串。它們可以是標準化的支付處理程式識別符號之一,也可以是由支付處理服務用來標識自身和處理支付的 URL。
標準化的支付方式識別符號
標準化的支付方式識別符號是指列在 支付方式登錄檔 中的那些。
secure-payment-confirmation-
標識 Secure Payment Confirmation 方法。此方法的支付請求資料由
SecurePaymentConfirmationRequest字典定義。有關更多資訊,請參閱 使用 Secure Payment Confirmation。 basic-card-
此支付方式識別符號旨在透過 Payment Request API 促進 Web 上的卡支付。Web Payments Working Group 已棄用此支付方式。
基於 URL 的支付方式識別符號
這些可能因服務的具體情況而有很大差異,並且給定的處理服務可能會使用多個 URL,具體取決於其 API 版本、通訊技術等。
https://apple.com/apple-pay-
使用 Apple Pay 服務處理支付。目前,Apple Pay 僅得到 Safari 的支援。
https://google.com/pay-
支付透過 Google Pay 處理。目前僅得到 Chrome 和基於 Chromium 的瀏覽器支援。
支付處理程式的職能
使用者代理 可能提供對特定型別支付的內建支援。此外,在支援的瀏覽器中,可以使用 Payment Handler API 來建立對其他支付方式提供商的支援。無論哪種情況,支付處理程式都負責:
- 確保支付能夠進行。 促成支付的條件因支付方式和使用者的支付請求而異;例如,如果使用者選擇使用收款方不接受的信用卡支付,則無法進行支付。
- 如果支付處理程式支援商戶驗證,則響應使用者代理發出的商戶驗證請求。 有關詳細資訊,請參閱 商戶驗證。
- 驗證使用者提供的資訊是否能產生有效交易。 這將導致建立並返回一個特定於支付方式的物件,其中包含處理交易所需的資訊。
商戶驗證
一些支付處理程式使用 *商戶驗證*,這是一個透過某種方式驗證商戶身份的過程,通常使用某種形式的加密挑戰。如果商戶未能成功驗證,則不允許使用該支付處理程式。
具體的驗證技術取決於支付處理程式,而商戶驗證是完全可選的。最終,網站或應用僅負責獲取商戶的驗證金鑰並將其傳遞到事件的 complete() 方法中。
paymentRequest.onmerchantvalidation = (event) => {
event.complete(fetchValidationData(event.validationURL));
};
在此示例中,fetchValidationData() 是一個函式,它從 validationURL 提供的地址載入特定於支付處理程式的標識資訊。請注意,此函式必須透過商戶伺服器進行,因為客戶端通常不會自行訪問驗證 URL。
透過將此資料(或解析為載入資料的 Promise)傳遞到 complete() 中,支付處理程式可以利用檢索到的資料以及任何其他支援的演算法和其他資料,來驗證商戶是否可以使用該支付處理程式。
因此,需要注意的是,除非使用者代理本身實現了支付處理程式,否則 使用者代理 永遠不會發送 merchantvalidation 事件。例如,Safari 內建了對 Apple Pay 的支援,因此 Apple Pay 支付處理程式使用它來確保 Apple Pay 可用於向商戶付款,透過向客戶端傳送 merchantvalidation 來指示客戶端獲取伺服器的驗證資料,並透過呼叫 complete() 將其傳遞給支付處理程式。
規範
| 規範 |
|---|
| Payment Request API |
| 支付方式識別符號 |