託管收銀台是什麼?託管支付頁與自建收銀台的區別、PCI 合規與品牌設置
託管收銀台(託管支付頁)是什麼、和自建收銀台有什麼區別、對 PCI 合規範圍有什麼影響,以及如何設置品牌、讓買家付款後回到你的網站。
本文目錄
託管收銀台(hosted payment page,也叫託管支付頁)是由支付服務商在自己的域名上運行的收銀台頁面。你不用在自己的網站上搭建卡號表單,而是把買家引導到服務商的頁面;買家在那裏付款,付完再回到你這裏。卡號是輸入在服務商的頁面上,而不是你的頁面上,這也是大多數小商戶和跨境商戶先選擇託管收銀台、而不是自建收銀台的主要原因。
這篇文章説明託管收銀台如何運作、和自建收銀台相比如何、對你的 PCI 合規範圍意味着什麼,以及如何讓託管收銀台看起來就是你自己的,並把買家帶回你的網站。
託管收銀台是如何運作的?
- 你的服務端創建訂單,傳入金額和幣種,拿到一個收銀台地址。
- 把買家重定向到這個地址。
- 買家在託管頁面上付款:銀行卡、錢包、3D Secure、重試,全部在那裏處理。
- 買家回到你的
return_url,同時 Webhook 通知你的服務端。
在 KukoPay,這只需要一次調用:
curl -X POST "https://api.kukopay.com/v1/orders" \
-H "Content-Type: application/json" \
-H "X-Api-Key: $KUKOPAY_API_KEY" \
-d '{
"out_trade_no": "ORD_20261104_0001",
"amount": 2990,
"currency": "USD",
"subject": "Premium plan",
"notify_url": "https://shop.example.com/webhooks/kukopay",
"return_url": "https://shop.example.com/orders/{OUT_TRADE_NO}/complete"
}'響應中的 checkout_url 會打開 checkout.kukopay.com 上的託管收銀台。快速接入 完整演示了整個過程。完全不寫代碼的話,收款鏈接 打開的也是同一個託管頁面。
託管收銀台和自建收銀台有什麼區別?
| 託管收銀台 | 自建收銀台 | |
|---|---|---|
| 買家在哪裏付款 | 服務商的頁面 | 你自己網站上的表單 |
| 卡號數據 | 從不經過你的服務器 | 經過或接近你的系統 |
| PCI 合規範圍 | 通常最小 | 更大,而且要你自己維護 |
| 開發工作量 | 一次 API 調用加一次跳轉 | 卡號表單、錢包、3D Secure 和各種錯誤狀態都要自己做並持續維護 |
| 外觀 | 標準佈局上展示你的名稱、Logo 和顏色 | 完全自定義 |
| 新增支付方式 | 不改代碼就會出現 | 每一種都是一次對接 |
當付款頁面本身就是你的產品、而你有團隊來維護時,自建收銀台更合適。對大多數商戶,尤其是跨境銷售、每個國家支付方式組合都不同的商戶,託管收銀台是更划算的選擇:服務商負責讓卡號表單、錢包和 3D Secure 正常運作,你專心做自己的產品。
託管收銀台對 PCI 合規意味着什麼?
PCI DSS 適用於所有接受銀行卡付款的商戶,但具體適用多少要求,取決於卡號數據流經哪裏。使用託管收銀台時,卡號輸入在服務商的頁面上,從不到達你的服務器,這通常能讓商戶適用最輕的自評估形式。但它並不會免除全部 PCI 義務,把買家引導到收銀台的那個頁面仍然要由你保證安全,所以請向你的服務商以及 PCI 安全標準委員會的指引確認具體適用的要求。
在 KukoPay,商戶從不接觸卡號信息:買家在託管收銀台中輸入,這些信息從不提供給商戶,商戶也不得把它們發送給平台。即使是沙箱的卡號表單,測試卡號也只在瀏覽器裏用來選擇測試結果,見 支付測試卡號大全。
託管收銀台替你處理了什麼?
- 支付方式:銀行卡、Apple Pay、Google Pay、支付寶、微信支付和 PayPal,只展示你賬戶已開通、且當前訂單可用的方式;
- 3D Secure 驗證,發卡行要求時自動彈出,見 3D Secure 是什麼;
- 被拒和重試:被拒後訂單保持
pending,買家可以在同一個頁面上重試,見 銀行卡支付被拒怎麼辦; - 安全地更換支付方式:未完成的錢包或 3DS 支付會先被取消,再發起新的支付,買家不會被扣兩次款;
- 語言:英文、中文、日文、韓文和德文,用地址上的
&locale=指定; - 收據:每筆已支付訂單都有可打印的收據,見 付款收據和發票有什麼區別。
託管收銀台能嵌入 iframe 嗎?
在 KukoPay 上不能。收銀台是你重定向過去的完整頁面,並且拒絕被其他網站嵌入框架。這是有意的設計:把付款頁放在別人的框架裏,正是點擊劫持的手法;而且錢包和 3D Secure 步驟本來也需要接管整個窗口。重定向買家,再用 return_url 把他們帶回來。
如何設置託管收銀台的品牌
託管收銀台也應該看起來就是你:能認出賣家的買家,更少放棄付款,也更少提出異議。在控制台打開 商戶名稱與品牌:
| 設置 | 作用 |
|---|---|
| 對外展示名稱 | 買家看到的名稱。留空時使用入駐資料裏的公司名稱 |
| Logo | 顯示在收銀台頂部 |
| 品牌色 | #RRGGBB 格式的顏色,用於按鈕和強調色 |
- 收銀台預覽 會用你尚未保存的設置顯示真實的收銀台,可以在 電腦 和 手機 之間切換,保存前就能看到效果。
- 保存後,新打開的收銀台立即生效,沙箱和正式環境同時適用。
- 每個應用都可以覆蓋賬戶默認設置,適合一個賬戶經營第二個品牌的情況;留空的設置沿用賬戶的。
付款後如何把買家帶回來
- 在
return_url裏使用佔位符。{TRADE_NO}和{OUT_TRADE_NO}會被替換為這筆訂單的值,一個固定地址就能區分是哪筆訂單回來了。 - 買家看到什麼。 付款成功後,收銀台先顯示收據,約 5 秒後把買家帶回你的網站;買家也可以立即返回,或者留在當前頁。重新打開一個已支付的鏈接只會顯示收據。
- 回跳不是結果。 買家可能關掉頁面再也不回來,回跳也可能被偽造。請以驗簽後的 Webhook 履約,原因見 return_url 和 notify_url 的區別。
兩個值得做對的細節
- 設置收銀台的有效期。 收銀台地址默認 24 小時內有效。如果你的系統會更早取消未付款訂單,請傳
expires_at,讓收銀台先關閉;否則買家可能為一筆你已經取消的訂單付款。見 統一下單。 - 不要把地址記錄到分析工具裏。
checkout_url帶有短期令牌,不要把完整地址記錄到第三方分析平台或公開日誌中。
總結
- 託管收銀台是服務商運行的收銀台,你把買家重定向過去,再通過 Webhook 拿到結果;
- 與自建收銀台相比,它要做的工作少得多,通常也能讓你的 PCI 合規範圍保持最小;
- KukoPay 的託管收銀台處理支付方式、3D Secure、重試、語言和收據,是整頁跳轉,不是 iframe;
- 在 商戶名稱與品牌 中設置名稱、Logo 和顏色,支持電腦和手機預覽以及按應用覆蓋;
- 用
return_url佔位符把買家帶回來,自己的超時更短時設置expires_at,並以 Webhook 履約。
在沙箱裏把它跑通
註冊商戶後即可申請測試密鑰,不需要等待資質審核。