使用 Web Payments 進行付款交易時,首先會探索您的付款應用程式。瞭解如何設定付款方式,讓商家和消費者透過您的付款應用程式付款。
發布日期:2017 年 9 月 27 日,上次更新日期:2025 年 7 月 1 日
如要搭配 Payment Request API 使用,付款應用程式必須與付款方式 ID 建立關聯。如要整合付款應用程式,商家會使用付款方式 ID 向瀏覽器指出這點。本文將說明付款應用程式的探索方式,以及如何設定付款應用程式,確保瀏覽器能正確探索及叫用該應用程式。
如果您剛接觸網路付款概念,或不瞭解如何透過付款應用程式進行付款交易,請先閱讀下列文章:
瀏覽器支援
Web Payments 包含幾種不同的技術,支援狀態取決於瀏覽器。
瀏覽器如何探索付款應用程式
所有付款應用程式都必須提供下列資訊:
- 網址式付款方式 ID
- 付款方式資訊清單 (第三方提供付款方式 ID 時除外)
- 網頁應用程式資訊清單
商家發起交易時,就會啟動探索程序:
- 瀏覽器會向付款方式 ID 網址傳送要求,並擷取付款方式資訊清單。
- 瀏覽器會從付款方式資訊清單判斷網頁應用程式資訊清單網址,並擷取網頁應用程式資訊清單。
- 瀏覽器會根據網頁應用程式資訊清單,決定要啟動 OS 付款應用程式還是網頁付款應用程式。
接下來的章節將詳細說明如何設定自己的付款方式,讓瀏覽器可以探索到。
步驟 1:提供付款方式 ID
付款方式 ID 是以網址為基礎的字串。舉例來說,Google Pay 的 ID 是 https://google.com/pay。只要付款應用程式開發人員能控管網址,並提供任意內容和 HTTP 標頭,就能選擇任何網址做為付款方式 ID。在本文中,我們將使用
https://bobbucks.dev/pay 做為付款方式 ID。
商家如何使用付款方式 ID
PaymentRequest 物件會使用付款方式 ID 清單建構,用來識別商家決定接受的付款應用程式。付款方式 ID 會設為 supportedMethods 屬性的值。例如:
[商家] 要求付款:
const request = new PaymentRequest([{
supportedMethods: 'https://bobbucks.dev/pay'
}], {
total: {
label: 'total',
amount: { value: '10', currency: 'USD' }
}
});
步驟 2:提供付款方式資訊清單
付款方式資訊清單是 JSON 檔案,用於定義哪些付款應用程式可以使用這項付款方式。
提供付款方式資訊清單
商家發起付款交易時,瀏覽器會將 HTTP HEAD 要求傳送至付款方式 ID 網址。付款方式 ID 網址會以 Link HTTP 標頭回應,指向瀏覽器可擷取付款方式資訊清單的網址。
設定付款方式伺服器,以含有 rel="payment-method-manifest" 屬性和付款方式資訊清單網址的 HTTP Link 標頭回應。舉例來說,如果資訊清單位於 https://bobbucks.dev/pay/payment-manifest.json,則回應標頭會包含:
Link: <https://bobbucks.dev/pay/payment-manifest.json>; rel="payment-method-manifest"
網址可以是完整網域名稱或相對路徑。如要查看範例,請檢查網路流量的 https://bobbucks.dev/pay。您也可以使用 curl 指令:
curl --include https://bobbucks.dev/pay
瀏覽器接著會將 HTTP GET 要求傳送至付款方式資訊清單網址。伺服器會傳回付款方式資訊清單主體。
付款方式資訊清單有兩個欄位,分別是 default_applications 和 supported_origins。
| 屬性名稱 | 說明 |
|---|---|
default_applications (必填) |
網址陣列,指向代管付款應用程式的網頁應用程式資訊清單。(網址可以是相對網址)。這個陣列應參照開發資訊清單、正式版資訊清單等。 |
supported_origins |
指向來源的網址陣列,這些來源可能代管實作相同付款方式的第三方付款應用程式。請注意,多個付款應用程式可以實作付款方式。 |
付款方式資訊清單檔案應如下所示:
[payment handler] /payment-manifest.json:
{
"default_applications": ["https://bobbucks.dev/manifest.json"],
"supported_origins": [
"https://alicepay.friendsofalice.example"
]
}
瀏覽器讀取 default_applications 欄位時,會找到支援的付款應用程式網頁應用程式資訊清單連結清單。
步驟 3:提供網路應用程式資訊清單
網頁應用程式資訊清單可用於定義網頁應用程式,這是廣泛使用的資訊清單檔案,可定義漸進式網頁應用程式 (PWA)。
典型的網頁應用程式資訊清單如下所示:
[payment handler] /manifest.json:
{
"name": "Pay with Bobpay",
"short_name": "Bobpay",
"description": "This is an example of the Payment Handler API.",
"icons": [
{
"src": "images/manifest/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "images/manifest/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"serviceworker": {
"src": "service-worker.js",
"scope": "/",
"use_cache": false
},
"start_url": "/",
"display": "standalone",
"theme_color": "#3f51b5",
"background_color": "#3f51b5",
"related_applications": [
{
"platform": "play",
"id": "com.example.android.samplepay",
"min_version": "1",
"fingerprints": [
{
"type": "sha256_cert",
"value": "4C:FC:14:C6:97:DE:66:4E:66:97:50:C0:24:CE:5F:27:00:92:EE:F3:7F:18:B3:DA:77:66:84:CD:9D:E9:D2:CB"
}
]
}
]
}
網頁應用程式資訊清單中描述的資訊,也會用於定義付款應用程式在付款要求使用者介面中的顯示方式。
| 屬性名稱 | 說明 |
|---|---|
name (必填)
|
做為付款應用程式名稱。 |
icons (必填)
|
做為付款應用程式圖示。只有 Chrome 會使用這些圖示;如果您未將這些圖示指定為付款工具的一部分,其他瀏覽器可能會將這些圖示做為備用圖示。 |
serviceworker
|
用於偵測以網頁式付款應用程式執行的服務工作人員。 |
serviceworker.src |
可下載服務工作人員指令碼的網址。 |
serviceworker.scope |
代表網址的字串,定義服務工作人員的註冊範圍。 |
serviceworker.use_cache |
可下載服務工作人員指令碼的網址。 |
related_applications
|
用於偵測做為 OS 提供付款應用程式的應用程式。 詳情請參閱 Android 付款應用程式開發人員指南。 |
prefer_related_applications
|
用於判斷同時提供作業系統提供的付款應用程式和網頁式付款應用程式時,要啟動哪個付款應用程式。 |
網頁應用程式資訊清單的 name 屬性會做為付款應用程式名稱,icons 屬性會做為付款應用程式圖示。
Chrome 如何判斷要啟動哪個付款應用程式
啟動平台專屬的付款應用程式
如要啟動平台專屬的付款應用程式,必須符合下列條件:
related_applications欄位是在網頁應用程式資訊清單中指定,且:- 已安裝應用程式的套件 ID 和簽章相符,且網頁應用程式資訊清單中的最低版本 (
min_version) 小於或等於已安裝應用程式的版本。
- 已安裝應用程式的套件 ID 和簽章相符,且網頁應用程式資訊清單中的最低版本 (
prefer_related_applications欄位為true。- 已安裝平台專屬的付款應用程式,且具備下列條件:
org.chromium.action.PAY的意圖篩選器。- 指定為
org.chromium.default_payment_method_name屬性值的付款方式 ID。
如要進一步瞭解如何設定這些項目,請參閱「Android 付款應用程式:開發人員指南」。
[payment handler] /manifest.json
"prefer_related_applications": true,
"related_applications": [{
"platform": "play",
"id": "xyz.bobpay.app",
"min_version": "1",
"fingerprints": [{
"type": "sha256_cert",
"value": "92:5A:39:05:C5:B9:EA:BC:71:48:5F:F2:05:0A:1E:57:5F:23:40:E9:E3:87:14:EC:6D:A2:04:21:E0:FD:3B:D1"
}]
}]
如果瀏覽器判斷平台專屬的付款應用程式可用,探索流程就會在此終止。否則,系統會繼續下一個步驟,也就是啟動網頁版付款應用程式。
啟動網頁版付款應用程式
網頁型付款應用程式應在網頁應用程式資訊清單的 serviceworker 欄位中指定。
[payment handler] /manifest.json:
"serviceworker": {
"src": "payment-handler.js"
}
瀏覽器會將 paymentrequest 事件傳送至服務工作站,啟動網路付款應用程式。不必事先註冊 Service Worker。可即時註冊。
瞭解特殊最佳化功能
瀏覽器如何略過付款要求 UI,直接啟動付款應用程式
在 Chrome 中,當呼叫 PaymentRequest 的 show() 方法時,Payment Request API 會顯示瀏覽器提供的 UI,也就是「Payment Request UI」。使用者可透過這個 UI 選擇付款應用程式。在付款要求 UI 中按下「繼續」按鈕後,系統會啟動所選的付款應用程式。
在啟動付款應用程式前顯示付款要求 UI,會增加使用者完成付款所需的步驟。為改善流程,瀏覽器可將填寫資訊的作業委派給付款應用程式,並在呼叫 show() 時直接啟動付款應用程式,而不顯示付款要求使用者介面。
如要直接啟動付款應用程式,必須符合下列條件:
show()會在使用者手勢 (例如滑鼠點擊) 觸發時啟動。- 只有一個付款應用程式符合下列條件:
- 支援要求的付款方式 ID。
何時會即時 (JIT) 註冊網頁型付款應用程式?
使用者不必事先明確造訪付款應用程式網站並註冊 Service Worker,即可啟動網頁型付款應用程式。使用者選擇透過網頁型付款應用程式付款時,可以即時註冊 Service Worker。註冊時間有兩種變化:
- 如果向使用者顯示付款要求 UI,系統會即時註冊應用程式,並在使用者點選「繼續」時啟動應用程式。
- 如果略過付款要求 UI,系統會即時註冊付款應用程式,並直接啟動。如要略過「付款要求」使用者介面,啟動即時註冊的應用程式,必須使用手勢,避免跨來源服務工作人員意外註冊。
後續步驟
現在付款應用程式已可供探索,請瞭解如何開發平台專屬的付款應用程式和網頁型付款應用程式。