- 新平台
本文就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一种支付方式:也可以使用同一个方法指定其他支付方式。