# API Only ## 介绍 API Only 模式指商户的前端和后端通过调用 PayKKa 提供的 API 接口,自行构建支付流程与页面,支付请求和响应通过 API 交互完成,具有如下特点: - 高度定制化 - 开发成本高 对于银行卡支付,我们接受下面两种 API 方案 1. 使用卡信息加密组件 [Encrypted Card](/zh-hans/payments/docs/others/encrypted-card) ,对卡片信息进行安全加密。这有助于您符合 PCI 合规要求。 2. 直接收集并传输原始明文卡数据。这种方式需要您拥有 PCI DSS 资质。如果您希望使用这种模式,请联系您的客户经理提供 PCI 资质。 接入 Encrypted Card 需要提供您的域名解除跨域限制。 ## 支持的支付方式 - Visa - MasterCard - JCB - American Express - Discover - Diners Club - Apple Pay - Google Pay ## 支付流程 ### 明文卡交易 Description of image 1. 获取您的交易密钥 2. 获取您的 **Client key** (针对 **Encrypted Card** 接入需要)。 3. 准备接入的通知地址 webhook ,提供到请求参数中或者设置在后台,将会在关键的支付节点发送通知给商户。 4. 准备接入的跳转地址,提供到请求参数中,将会在 3DS 认证触发后跳转。 5. 发起请求。 6. 是否需要消费者进行 3DS 认证可根据支付或者查询接口的响应字段 `authentication_result.authentication_url`,返回代表正在等待消费者进行 3DS 认证。 API: [Initiate Transaction](/zh-hans/payments/apis/payments/openapi/交易/payments-opl_1) #### 请求示例 ```json { "merchant_id": "18356675194960", "payment_type": "PURCHASE", "authorisation_type": "FINAL_AUTH", "capture_method": "AUTOMATIC", "trans_id": "m1721xxx938999", "currency": "USD", "amount": "300", "return_url": "https://url", "payment": { "payment_method": "BANKCARD", "shopper_reference": "myuserid001", "card_no": "4242424242424242", "exp_year": "2031", "exp_month": "07", "cvv": "123", "holder_name": "lisa" }, "authentication": { "challenge_indicator": "AUTO" }, "browser": { // 消费者终端信息 }, "goods": [ // 商品信息 ], "bill": { // 账单信息 }, "shipping": { // 收货信息, 实物贸易必填 }, "customer": { // 消费者/客户信息 } } ``` ### 卡信息加密组件 Description of image 1. 获取您的交易密钥 2. 获取您的 **Client key** (针对 **Encrypted Card** 接入需要)。 3. 准备接入的通知地址 webhook ,提供到请求参数中,将会在关键的支付节点发送通知给商户。 4. 准备接入的跳转地址,提供到请求参数中,将会在 3DS 认证触发后跳转。 5. 发起请求。 6. 是否需要消费者进行 3DS 认证可根据支付或者查询接口的响应字段 `authentication_result.authentication_url`,返回代表正在等待消费者进行 3DS 认证。 7. 接入组件流程见 [Encrypted Card](/zh-hans/payments/docs/others/encrypted-card)。 API: [Initiate Transaction](/zh-hans/payments/apis/payments/openapi/交易/payments-opl_1) #### 请求示例 ```json { ... "payment": { "payment_method": "BANKCARD", "shopper_reference": "myuserid001", "encrypted_card_no": "MTc0MjczNjg1Nxxxx", "encrypted_exp_year": "Wt938LfJ2Pxxxxx", "encrypted_exp_month": "WfRto3qWfidnxxx", "encrypted_cvv": "MEal81oshxxx", "holder_name": "lisa" }, ... } ``` ### ApplePay 情况 1: 商户解密卡信息 ```json { ... "payment": { "payment_method": "APPLE_PAY", "shopper_reference": "myuserid001", "card_no": "4242424242424242", "exp_year": "2031", "exp_month": "07", "cvv": "123", "holder_name": "lisa", "token_authentication": { "cryptogram": "ALbOGff2RLbTADtP3BuIAoABFA==", "token_format": "cryptogram_3ds", "eci": "07" } } ... ``` 情况 2: 商户不解密卡信息 ``` { ... "payment": { "payment_method": "APPLE_PAY", "shopper_reference": "myuserid001", "token_data": "token from ApplePay SDK" }, ... } ``` 1. ApplePay 目前支持两种接入方式:1.商户接入 ApplePay 解密卡信息,则可以发送明文卡信息给 PayKKa;2.商户不解密,则商家需要接入 [Create Apple Pay Session](/zh-hans/payments/apis/payments/openapi/交易/create-apple-opl) 接口以加载 ApplePay 组件,并最终发送 ApplePay 组件生成的支付 token(json 字符串)给 PayKKa 做解密并交易。 2. 接入 ApplePay 详细流程见 [ApplePay](/zh-hans/payments/docs/payment-method/apple-pay/apple-pay)。 ### GooglePay 情况 1: 商户解密卡信息 ```json { ... "payment": { "payment_method": "GOOGLE_PAY", "shopper_reference": "myuserid001", "card_no": "4242424242424242", "exp_year": "2031", "exp_month": "07", "cvv": "123", "holder_name": "lisa", "token_authentication": { "cryptogram": "ALbOGff2RLbTADtP3BuIAoABFA==", "token_format": "CRYPTOGRAM_3DS", "eci": "02", "account_verified": true, "card_holder_authenticated": true } } ... ``` 情况 2: 商户不解密卡信息 ``` { ... "payment": { "payment_method": "GOOGLE_PAY", "shopper_reference": "myuserid001", "token_data": "token from GooglePay SDK" }, ... } ``` 1. GooglePay 目前支持两种接入方式;1.商户接入 GooglePay 解密卡信息,则可以发送明文卡信息给 PayKKa;2.商户不解密,则可以发送 GooglePay 组件生成的支付 token (json 字符串)给 PayKKa 做解密并交易。 2. 接入 GooglePay 详细流程见 [GooglePay](/zh-hans/payments/docs/payment-method/google-pay/google-pay)。 ## 3DS 处理 3DS 验证为信用卡和借记卡的线上交易提供智能安全防护,通过实时身份核验确保交易安全。在支付过程中,系统会引导持卡人完成发卡行的安全认证,从而在提升交易安全性的同时,将潜在的欺诈风险责任转移至发卡机构,为商户提供更可靠的支付保障。 ### 集成方式 1. 请求: 可以通过 API 参数 `authentication` 指明 3DS 验证倾向,但是其后续验证处理由卡组和发卡行综合决定。 2. 响应: 对 PayKKa 的 API 响应进行解析,跳转到其中 3DS 验证地址,后续交由 PayKKa 完成后续的 3DS 验证流程。 > 3DS 验证结果会通过 PayKKa 的 webhook 通知给商户,商户可以根据通知结果进行后续处理; 请求示例 ```json { ... "authentication": { "challenge_indicator": "AUTO" }, ... } ``` 响应示例 ```json { "ret_code": "000000", "ret_msg": "Success", "data": { ... "status": "PROCESSING", "authentication_result": { "authentication_url": "https://3ds_path_url" }, "payment": { "payment_method": "BANKCARD" }, ... } } ``` ## 消费与循环 如果您的付款要求按照一定周期(如每月、每年或自定义时间间隔)从客户的银行卡或电子钱包中重复扣款,无需客户每次手动授权,您可以使用 PayKKa 的循环支付功能。 ### 集成方式 1. 目前 PayKKa 支持的循环支付需要由商户定期发起 2. 对于首次循环支付,需要 PayKKa 存储持卡人的卡信息,后续的循环支付只需要提供持卡人的 token 即可 3. 对于后续的循环支付,只需要提供持卡人的 token 即可,无需重复提供卡信息 首次循环请求示例 [Initiate Transaction](/zh-hans/payments/apis/payments/openapi/交易/payments-opl_1) ```json { "merchant_id": "18356675194960", "payment_type": "RECURRING", "authorisation_type": "FINAL_AUTH", "capture_method": "AUTOMATIC", "trans_id": "m3246749195217", "currency": "HKD", "amount": "800", "return_url": "https://url", "mit": false, "payment": { "payment_method": "BANKCARD", "store_payment_method": true, "token_usage": "SUBSCRIPTION", "shopper_reference": "854f5baaf0a735139c583c4cea14d14c", "exp_year": "2029", "exp_month": "08", "cvv": "579", "holder_name": "Yi Westrich", "card_no": "5555555555554444" }, "browser": { // 消费者终端信息 }, "goods": [ // 商品信息 ], "bill": { // 账单信息 }, "shipping": { // 收货信息, 实物贸易必填 }, "customer": { // 消费者/客户信息 } } ``` 后续循环请求示例 [Initiate Transaction](/zh-hans/payments/apis/payments/openapi/交易/payments-opl_1) ```json { "merchant_id": "18356675194960", "payment_type": "RECURRING", "authorisation_type": "FINAL_AUTH", "capture_method": "AUTOMATIC", "trans_id": "m3246749195217", "currency": "HKD", "amount": "800", "mit": true, "recurring_agreement_id": "RA4264524535435435", "payment": { "payment_method": "BANKCARD", "shopper_reference": "558b5cb1b8cbcc8496062155c69cf2ab", "token": "TK20231435132143229" } } ``` ## 欺诈检测 Fraud Detection 是一种嵌入在网站或支付页面中的 JavaScript 代码,用于实时收集用户行为数据、设备信息和交易环境,帮助支付系统或风控平台识别潜在的欺诈交易 集成方式 [PayKKa Fraud Detection](/zh-hans/payments/docs/fraud/fraud-detection) 强烈建议集成 PayKKa 的 Fraud Detection SDK,可以显著降低欺诈和拒付风险,提高支付成功率 ## 错误码 参见 [交易错误码](/zh-hans/payments/docs/developer-resources/transanction-error-code) ## 结果通知 参考 [Webhook](/zh-hans/payments/docs/developer-resources/webhook)