跳转到内容

订阅性支付

订阅性支付包括两种类型的交易:初始的交易(或第一笔)和后续交易。

订阅性支付首笔交易(保存凭据)

持卡人在商户处进行第一笔定期交易(持卡人主动发起),以既定频率购买或同意接受一组商品或服务时。此笔交易还表明持卡人同意将凭据保存在商家处。

后续交易

后续交易是指商户自动向持卡人收取在第一笔定期交易中已经同意的指定商品或服务的费用,而无需持卡人主动发起支付(持卡人不在场),直到达到预定或约定的时间范围为止。

根据交易金额和频率的区别,订阅性支付有以下不同类型:

  1. 固定金额和固定频率
  2. 可变金额和可变频率,可变金额但频率固定以及固定金额但频率可变。

保存凭据

EVO Cloud 要求在处理订阅性支付时先保存凭据。您可通过以下两种方法保存凭据:

  1. 首笔交易: 如果您已经提交并完成了 PCI DSS 自我评估问卷 D(SAQ D),您可以自行保存卡片信息并在以后的付款中使用。

  2. 绑卡: 如果您未满足 PCI DSS 的安全要求,您可以使用 EVO Cloud 的绑卡功能进行凭据的保存,请查看有关绑卡的章节以获取更多详细信息。

首笔交易

EVO Cloud 要求在第一笔交易中需要持卡人的参与发起,之后他们的凭证将被保存。

  • paymentMethod.type: 指示支付类型,可以是cardtoken
  • paymentMethod.card: 当paymentMethod.type为 card 时,包含购物者的卡片信息是必需的。
  • paymentMethod.token: 当paymentMethod.type为 token 时,token 信息是必需的。
  • paymentMethod.recurringProcessingModel: 表示订阅性支付交易.
    • Subscription: 固定金额和固定频率的订阅性支付。
    • Unscheduled: 可变金额和可变频率,可变金额但频率固定以及固定金额但频率可变。
  • transAmount: 支付的金额和币种。

如果您的请求需要同时进行以下额外的操作,您需要在支付请求中包含额外的参数,详情请参考对应产品功能章节:

  1. 支付并绑卡: 请查看有关绑卡的章节以获取更多详细信息。
  2. 3DS 认证: 使用 3DS 进行用户身份认证,请查看有关3DS认证的章节以获取更多详细信息。

EVO Cloud 允许 ASI(transAmount 中支付金额设置为 0)或普通非 0 金额的授权来完成保存凭证。

TIP

如果您使用 ASI 保存凭据,持卡人首次进行的后续交易可能需要进行身份验证。如果您希望首次后续交易由商家发起,您需要在使用 ASI 保存凭据时将paymentMethod.isFirstCITTxn参数设置为 true。使用场景如:从免费试用到终生会员。

样例
js
curl 'https://hkg-online-uat.everonet.com/g2/v0/payment/acq/10130014/evo.evo.e-commerce.payment' \
-H 'Authorization: 62666e87d95e6324444b068fd10b6f71c6dddd77ae878ccda5323a856f5cbeb5' \
-H 'DateTime: 20240306135818+0800' \
-H 'SignType: SHA256' \
-H 'Content-Type: application/json' \
-H 'MsgID: M20240306135818963' \
-d '{
    "merchantTransInfo": {
        "merchantTransID": "T20240306135818963",
        "merchantTransTime": "2024-03-06T13:58:18+08:00"
    },
    "paymentMethod": {
        "type": "card",
        "card": {
            "cardInfo": {
                "cardNumber": "4012001037141112",
                "expiryDate": "2712",
                "cvc": "212"
            }
        },
        "recurringProcessingModel":"Subscription"
    },
    "transAmount": {
        "currency":"HKD",
        "value":"1.00"
    },
    "captureAfterHours": "0",
    "pspInfo": {
        "mcc": "5499",
        "sponsorCode": "412345",
        "merchantID": "202106305812001",
        "terminalID":"00000001",
        "merchantName": "Test",
        "storeID": "202106305812001",
        "storeName": "Test Store",
        "street": "Test street",
        "city": "HK",
        "postCode": "202000",
        "nation": "HKG"
    }
}'

如果支付成功,您将在响应中收到paymentMethod.recurringReference。您将使用此引用进行后续交易。

如果您在响应中没有收到paymentMethod.recurringReference,您可以检索支付结果。有关更多详细信息,请参阅有关授权的章节。

绑卡

您可以在绑卡请求中增加以下参数,以实现在帮卡的时候实现保存凭证。

  • paymentMethod.recurringProcessingModel: 表示订阅性支付交易. - Subscription: 固定金额和固定频率的订阅性支付。 - Unscheduled: 可变金额和可变频率,可变金额但频率固定以及固定金额但频率可变。

后续流程与普通的绑卡一致,详情参考绑卡章节。

后续交易

EVO Cloud 要求商家在使用保存的凭据进行后续交易。

  • paymentMethod.type: 指示支付类型,可以是cardtoken
  • paymentMethod.card: 当paymentMethod.type为 card 时,包含购物者的卡片信息是必需的。
  • paymentMethod.token: 当paymentMethod.type为 token 时,token 信息是必需的。
  • paymentMethod.recurringProcessingModel: 表示订阅性支付交易.
    • Subscription: 固定金额和固定频率的循环支付。
    • Unscheduled: 可变金额和可变频率,可变金额和固定频率或固定金额和可变频率的循环支付。
  • paymentMethod.recurringReference: recurringReference 是用于唯一标识循环交易的参考信息。商家将需要此信息来为用户进行后续的支付。
  • transAmount: 支付的金额和币种。
样例
js
curl 'https://hkg-online-uat.everonet.com/g2/v0/payment/acq/10130014/evo.evo.e-commerce.payment' \
-H 'Authorization: 20cb53d428d91d5e9fa9e1c010a90ddf0b82830f1a88776dbaa8fb99da0078e9' \
-H 'DateTime: 20240306135818+0800' \
-H 'SignType: SHA256' \
-H 'Content-Type: application/json' \
-H 'MsgID: M20240306135818963' \
-d '{
    "merchantTransInfo": {
        "merchantTransID": "T20240306135818963",
        "merchantTransTime": "2024-03-06T13:58:18+08:00"
    },
    "paymentMethod": {
        "type": "card",
        "card": {
            "cardInfo": {
                "cardNumber": "4012001037141112",
                "expiryDate": "2712"
            }
        },
        "recurringProcessingModel":"Subscription",
        "paymentMethod.recurringReference":"recurring_072fe3001cf84319a2553b35827b7c0c"
    },
    "transAmount": {
        "currency":"HKD",
        "value":"1.00"
    },
    "captureAfterHours": "0",
    "pspInfo": {
        "mcc": "5499",
        "sponsorCode": "412345",
        "merchantID": "202106305812001",
        "terminalID":"00000001",
        "merchantName": "Test",
        "storeID": "202106305812001",
        "storeName": "Test Store",
        "street": "Test street",
        "city": "HK",
        "postCode": "202000",
        "nation": "HKG"
    }
}'