- 新平台
本文就Hosted Payment Page集成方式进行了具体介绍,包括系统交互流程,请求示例,Postman参考以及特殊使用场景。
官方文档地址:https://www.checkout.com/docs/four/integrate/hosted-payments-page
交互流程
Step1,用户在商户前端提交支付请求
Step2,商户前端系统发送请求至后端系统
Step3,商户后端系统通过API请求Checkout.com系统,Checkout.com系统返回重定向URL
Step4,商户将用户重定向至Checkout.com的托管支付页面
Step5,用户在Checkout.com托管支付页面内完成支付信息的输入并完成支付
Step6,用户在支付完成后重定向至商户定义的URL
Step7,商户通过主动查询Get Payment Detail获取支付结果,或者等待Checkout.com Webhook 异步通知确认支付结果(至少必须实现Webhook异步通知机制)
商户创建了一个Hosted Payment Page后,其有效期为30分钟。
开通Hosted Payment Page功能
在集成Hosted Payment Page开始前,请先联系负责贵司的工程师进行功能开通。若Hosted Payment Page未开通则会返回以下报错信息:
{"request_id": "136bbf870299513d72f317af46c38966","error_type": "request_forbidden","error_codes": ["merchant_not_onboarded"]}
请求示例
请求示例:
{"amount": 1000,"currency": "GBP","reference": "ORD-123A","billing": {"address": {"country": "GB"}},"customer": {"name": "Bruce Wayne","email": "brucewayne@gmail.com"},"success_url": "https://example.com/payments/success","failure_url": "https://example.com/payments/failure","cancel_url": "https://example.com/payments/checkout"}
返回示例:
{"id": "hpp_xGQBg0AXl3cM","reference": "ORD-123A","_links": {"self": {"href": "https://api.checkout.com/hosted-payments/hpp_xGQBg0AXl3cM"},"redirect": {"href": "https://pay.checkout.com/page/hpp_xGQBg0AXl3cM"}}}
支付方式选择
Hosted Payment Page通过国家+币种组合,及一些渠道个性化参数来决定可以展示的支付方式。当满足条件时,如果对应支付方式已经在您的账户上开通,则会展示给用户使用。
不同支付方式要求的字段如下,其中如果customer.name为必填项,则需要输入 First name + 空格 + Last Name的格式,如 Bruce Wayne。
| 支付方式 | 字段要求 |
|---|---|
| Bancontact | - billing.address.country: BE - currency: EUR - customer.name 必填 |
| EPS | - billing.address.country: AT - currency: EUR |
| Giropay | - billing.address.country: DE - currency: EUR |
| iDEAL | - currency: EUR - billing.address.country: NL |
| Klarna(仅老平台) | - Austria: AT - EUR - en-AT - Denmark: DK - DKK - en-DK - Finland: FI - EUR - en-FI - Germany: DE - EUR - en-DE or de-DE - Netherlands: NL - EUR - en-NL or nl-NL - Norway: NO - NOK - en-NO - Sweden: SE - SEK - en-SE - Switzerland: CH - CHF - de-CH, fr-CH, it-CH or en-CH - United Kingdom: GB - GBP - en-GB |
以下字段为必填项:
- customer.name
- customer.email
- billing.address.address_line1
- billing.address.city
- billing.address.zip
- products (object)
|
| KNET |
- billing.address.country: KW
- currency: KWD.
|
| Mada |
- billing.address.country: SA
- currency: SAR.
|
| Multibanco |
- billing.address.country: PT
- currency: EUR.
- customer.name 为必填项
|
| PayPal(仅老平台) |
- reference 为必填项
- billing.address.country 和 currency 为必填项
|
| Przelewey24 |
- billing.address.country: PL
- currency: EUR 或者 PLN.
- customer.name 为必填项
- customer.email 为必填项
|
| SEPA Direct Debit(仅老平台) |
- currency: EUR.
- billing.address.country 为必填项
- customer.name 为必填项
|
| Sofort |
- currency EUR.
- billing.address.country 为必填项,且为以下的某一个国家:
- Belgium:BE
- Germany:DE
- Italy:IT
- The Netherlands:NL
- Austria:AT
- Spain:ES
|
后端Postman参考
可通过以下链接获取Postman的参考:
Postman Link:
密码请咨询负责贵司的工程师。
导入以上Postman collection后,替换Header中的Authorization值为您沙箱环境的secret key后即可开始测试。
其中,新平台密钥值格式为:Bearer {{API_secret_key}},如:Bearer sk_sbox_71234oqw3k1234cdkf3sjpe1234
老平台密钥值格式为:{{API_secret_key}},如:sk_test_90db1234-f9ff-4901-b366-94a508ee1234
特殊使用场景
启用3DS
若商户自身没有完善的风控工具和体系,为了减少欺诈和拒付问题,可以添加请求参数来发起一笔3DS的卡支付,支付过程中用户会从Checkout.com的支付页面跳转至发卡行的页面并完成身份验证。
由于这一逻辑由Checkout.com处理,商户无需做额外的前端业务流程处理,仅在用户回调到商户页面时,查询接口的参数名有区别,具体可以参考通用接口中的 《Get payment detail 接口介绍》
涉及的参数为 3ds.enabled
请求示例:
{"amount": 5000,"currency": "EUR","billing": {"address": {"country": "PL"}},"customer":{"name":"Asuaka L","email":"abc@yeah.net"},"reference":"abc-123","3ds": {"enabled": true,},"success_url": "http://127.0.0.1:3000/result","failure_url": "http://127.0.0.1:3000/result","cancel_url": "http://127.0.0.1:3000/result"}
指定支付方式
Hosted Payment Page的默认展示逻辑是将所有可用的支付方式都进行展示,如以下请求中的币种+国家组合,决定了可以支持的支付方式有:iDeal,Sofort,Paypal和Card:
{"amount": 5000,"currency": "EUR","billing": {"address": {"country": "PL"}},"customer":{"name":"Asuaka L","email":"abc@yeah.net"},"reference":"abc-123","3ds": {"enabled": true,},"success_url": "http://127.0.0.1:3000/result","failure_url": "http://127.0.0.1:3000/result","cancel_url": "http://127.0.0.1:3000/result"}
用户打开的支付页面:

若商户出于业务的考虑,希望能够指定某一特定的支付方式,则可以通过新增参数:allow_payment_methods来进行控制。
如修改上述请求示例为:
{"amount": 5000,"currency": "EUR","billing": {"address": {"country": "NL"}},"customer":{"name":"Asuaka L","email":"abc@yeah.net"},"reference":"abc-123","3ds": {"enabled": true},"allow_payment_methods":["ideal"],"success_url": "http://127.0.0.1:3000/result","failure_url": "http://127.0.0.1:3000/result","cancel_url": "http://127.0.0.1:3000/result"}
则页面上将仅展示iDeal一种支付方式:
也可以使用同一个方法指定其他支付方式。
