Alipay, China's leading third-party online payment solutionAlipay, China's leading third-party online payment solution

卡支付

本文主要介绍如何使用 SDK 集成卡支付方式。此方案对于商户是否具有 PCI 资质无要求,适用于青睐轻量集成、对支付流程自定义程度无较高要求的商户。

所有通过卡支付方式进行的收单交易均为授权请款模式,即分为授权(Authorization)和请款(Capture)两步。买家在结账时先授权付款,授权阶段会锁定特定金额的付款资金,仅在请款成功后才将资金转移到您的账户。默认情况下,Antom 会为您自动发起并完成请款,您也可以选择自行调用接口发起并完成请款。

授权支付

本部分内容介绍如何集成 SDK 以完成授权支付。通过使用卡支付 SDK , 以最少的开发成本实现组件形式接入卡支付方式,并减少支付流程中的页面跳转、从而降低支付流程中的买家流失率,为买家提供更加优质的支付体验。

卡支付 SDK 提供的主要功能包括:

  • 提供支付信息收集页,帮助您通过浮层交互收集卡支付要素、减少支付流程中的页面跳转、优化支付成功率。
  • 帮助完成设备信息的收集,即 Device Data Collection(DDC)流程。
  • 处理 3D 验证页面跳转
  • 提供支付处理中的提示页面。
  • 支持英语、西班牙语葡萄牙语、韩语四种浏览器语言

部署流程

通过卡支付 SDK 接入卡支付方式的整体部署及交互流程如下:

5@3x.png

图 1. SDK 卡支付交互流程

  1. 创建 SDK 实例:您的客户端创建支付方式选择页并实现监听支付按钮的点击事件后,需 AMSCashierPayment 创建 SDK 实例
  2. 调用 支付会话创建 接口:买家选择卡发起支付后,您的服务端使用买家的下单信息向 Antom 服务端发起 支付会话创建 请求。在此步骤中,您可根据业务需求选择是否使用以下更多功能,关于设置更多功能的详细内容,参考 更多功能
    • 设置 3D 认证:通过设定 is3DSAuthentication 参数的值,指定交易是否进行 3D 认证。
    • 智能挽回交易:对于您指定的非 3D 认证的交易,当卡组要求该笔交易进行 3D 认证时,可自动发起 3D 认证,挽回失败交易。
    • 增值风控服务:为您提供交易维度的升级风控服务,根据交易的风险等级智能决策风控策略。
    • AVS 验证:地址验证系统(AVS)用于验证账单地址是否与信用卡持卡人的地址匹配,可有效防止欺诈交易的发生。
    • 存储卡信息:买家在首次支付后,同意存储卡信息以便在下一次支付时无需再次输入卡信息。
    • 分期付款:买家在支付时,可以选择将支付款项分期付清,按照约定的期次和金额进行支付。在买家完成首期支付后,Antom 就会将该笔交易的支付总额按合同中约定的结算周期结算给您。

注意:在用户未参与的情况下发起定期或非定期的交易,即 Merchant-initiated Transactions (MIT) 交易使用此功能时,您需要调用 支付 接口。

  1. 创建支付要素收集组件:使用 支付会话创建 请求的响应参数 paymentSessionData,通过 createComponent 创建支付要素收集组件。
  2. 买家完成支付:买家在支付要素收集页面填写支付要素信息并完成支付。如支持分期,用户在此页面指定分期信息。
  3. 获取授权支付结果并呈现:您的服务端通过接收异步通知或主动调查询支付结果 接口获取支付结果,并在您的支付结果页面向用户呈现。

集成快速开始

您可以通过 SDK 集成浮层或嵌入式支付体验:

  • 浮层式支付体验:是指在您的收银台页面悬浮支付要素收集页面。关于 Web/WAP, Android, 或 iOS 终端类型的浮层支付体验集成详情,参见以下内容:
  • 嵌入式支付体验:是指直接将支付要素收集界面嵌入到您的收银台页面中。关于 Web/WAP 终端的嵌入式支付体验集成详情,参见以下内容:

获取授权支付结果

当买家在 SDK 提供的支付信息收集页浮层中完成卡信息输入、SDK 提交支付、完成3D验证等操作后,SDK 会在浏览器上展示授权支付结果页面(即 paymentRedirectUrl 参数对应的页面)。您需通过接收异步通知或发起主动查询获取授权支付结果并在授权支付结果页面向买家呈现该结果。

接收异步通知

通过接收 Antom 发送给您的异步 支付结果通知notifyPayment)获取授权支付结果时,需要提前配置异步通知的接收地址当授权成功或失败后,Antom 会利用 支付结果通知 向您发送异步通知。未达终态,则不会发送异步通知。收到异步通知后,请按 要求 进行回应,否则 Antom 会重发异步通知。

主动查询授权支付结果

由于网络原因,异步通知有无法触达或延迟的可能性,因此建议您在后端通过 查询支付结果 接口(POST/v1/payments/inquiryPayment主动查询交易状态,可以设置在以下时机时主动触发查询:

  • 页面回跳时:发起支付后,在跳回时,触发查询支付结果接口同步交易状态,并引导至后续动作。
  • 买家询问时:当买家在商家页面中点击 我已支付 或相关按钮后,通过查询支付结果接口核实交易状态。
  • 交易到达预定超时时间后:在到达交易预定的超时时间后,通过查询支付结果接口确认订单支付状态。

异步通知及主动查询获得的响应中包含授权支付结果及其他下述关键信息:

方法

授权支付结果

AVS 信息

CVV 信息

3D 验证信息

异步通知

resultStatus

avsResultRaw

cvvResultRaw

threeDSResult (仅 3D 验证的交易存在此参数)

主动查询

paymentStatus

avsResultRaw

cvvResultRaw

threeDSResult (仅 3D 验证的交易存在此参数)

表 1. 异步通知和主动查询响应中的关键信息

下列代码示例展示了接受到的异步通知及查询响应:

copy
{
    "notifyType": "PAYMENT_RESULT",
    "result": {
        "resultCode": "SUCCESS",
        "resultStatus": "S",
        "resultMessage": "success"
    },
    "paymentRequestId": "2020010123456789XXXX",
    "paymentId": "2020010123456789XXXX",
    "paymentAmount": {
        "value": "8000",
        "currency": "EUR"
    },
    "paymentCreateTime": "2020-01-01T12:01:00+08:30",
    "paymentTime": "2020-01-01T12:01:01+08:30",
    "paymentResultInfo": {
        "avsResultRaw": "A",
        "cvvResultRaw": "Y",
        "networkTransactionId": "sampleNetworkTransactionId123456",
        "threeDSResult": {
            "eci": "02",
            "threeDSVersion": "2.2.0",
            "caav": "cavvSample",
            "dsTransactionId": "sample_dsTranasctionId"
        }
    }
}

SDK功能说明

  • 在卡支付的场景中,一个完整的收单流程包括支付和请款两个阶段。卡支付SDK仅在支付阶段提供帮助,后续的请款流程,需通过商户服务端调用请款接口完成后续流程。详情请参请款
  • 关于更多支付流程后续的其他相关操作,请参退款拒付 等集成文档。
  • 在集成过程中,仍有少量集成工作需您自行进行代码开发。下表为您详细展示了整体集成过程中需要您自行编码完成的步骤及 SDK帮助实现的步骤:

您需自行编码的步骤

SDK 功能详情

  • 开发并渲染支付方式选择页。
  • 监听支付按钮的点击事件。
  • 引入 SDK 包,并调用 AMSCashierPayment() 创建 SDK 实例。
  • 通过您的服务端调用 支付会话创建 接口,并获取响应数据中的paymentSessionData。
  • 调用 createComponent() 创建支付要素收集组件。
  • 通过异步通知或 查询支付结果 接口获取支付结果并向用户展示
  • 提供对应浏览器语言的页面语言,目前支持英语、葡萄牙语、韩语、西班牙语等四种语言。
  • 在系统监听到支付按钮点击事件后,展示支付要素收集前等待页。
  • 获取到paymentSessionData后,展示支付要素收集页面。
  • 用户完成支付要素信息填写后:
    • 展示支付处理中的提示页面。
    • 实现设备信息的收集,完成DDC流程。
    • 完成DDC流程后,根据交易的情况,按照不同场景进行处理:
      • 交易需要触发 3D 验证:实现自动跳转至 3D 验证页面,并在用户完成 3D 验证后,将用户跳转至您提供的支付结果展示页,此时页面展示支付处理中的状态。
      • 交易无需触发 3D 验证: 将用户跳转至商户提供的支付结果展示页,此时页面展示支付处理中的状态。
      • 遇到支付异常情况:在当前页面通过浮层展示支付异常信息,并在用户点击关闭浮层按钮后,将用户跳转至商户提供的支付结果展示页,此时页面展示支付处理中的状态。

表 2. 自行编码步骤与 SDK 功能详情

用户体验

通过集成卡支付SDK,您将获得以下用户界面:

场景1:使用卡进行首次支付

浮层式支付体验

卡支付

嵌入式支付体验

image.png

值得注意的是,部分地区卡组发行的卡在该地区卡组交易网络下进行交易时,卡信息收集页需要收集的支付信息略有差异,这些地区包括:巴西及韩国。其卡信息收集页详情如下:

韩国:

卡支付

巴西

卡支付

注意

  1. 以上流程的各个页面提供方信息如下:
    • 支付方式选择页:由商户客户端自行实现
    • 支付要素收集前的等待页
    • 支付要素收集页:由 SDK 提供
    • 支付处理中的提示页面:由 SDK 提供
    • 支付结果展示页:商户客户端自行实现
  1. 如果您在调用 支付会话创建 请求时传入了卡信息,则以上流程中的第二及第三个页面不会出现。

场景2:使用卡进行再次支付

web@3x.png

嵌入式支付体验

image.png

场景3:支付异常

卡支付

请款

买家卡支付授权成功后,需要发起请款且请款成功后资金才会转移到您的账户。您可以选择以下请款方式中的其中一种:

  • 自动请款:买家授权完成后 Antom 会自动立即发起请款。如下情况下均为自动请款:
    • 您指定 支付会话创建 接口的 paymentFactor.captureMode 字段的值为 AUTOMATIC
    • 支付会话创建 接口的 paymentFactor.captureMode 字段为空或不传。
  • 手动请款:买家授权完成后的七天内,您需要自己通过 请款 接口发起请款请求,否则 Antom 会自动将买家冻结的资金解除。需注意的是,请款的总金额需等于买家授权的金额。您需指定 支付会话创建 接口的 paymentFactor.captureMode 字段值为 MANUAL

请款成功后,Antom 会向您发送请款结果通知。

注意】卡支付场景下,建议您以请款成功作为发货依据。

关于更多请款相关内容,请参考: