Recurring
Recurring payments consist of two types of transactions: the initial (or first) recurring transaction and subsequent transactions.
Initial or First Recurring Transaction (Save Credentials)
The initial or first recurring transaction occurs when a cardholder purchases or agrees to receive a set of goods or services at an established frequency while transacting at a merchant's site (cardholder initiation). This transaction also indicates that the cardholder agrees with the merchant to save the credentials.
Subsequent Transactions
Subsequent transactions are where a merchant automatically charges a cardholder for specified goods or services that they have previously agreed to in the initial transaction, without having to re-engage the cardholder (cardholder not present) until the predefined or agreed-upon time frame is reached.
These are the different types of recurring payments based on the certainty of the amount and frequency of the transactions:
- Fixed amount and fixed frequency
- Variable amount and variable frequency, Variable amount and fixed frequency or Fixed amount and variable frequency.
Save Credentials
EVO Cloud requires that credentials be saved first when processing recurring payments. You can use two methods:
First Transaction: If you have submitted and completed the PCI DSS Self-Assessment Questionnaire D (SAQ D), you can save card information and use it for further payments.
Gateway Tokenization: If you do not meet the security requirements of PCI DSS, you can use EVO Cloud's tokenization function to save credentials. For details please see the chapter on Tokenization for more details.
First Transaction
EVO Cloud requires the cardholder's initials for the first transaction, after which their credentials will be saved.
paymentMethod.type
: Filed that indicates the transaction type.paymentMethod.card
: Object contains the shopper's card information. Mandatory whenpaymentMethod.type
iscard
.paymentMethod.token
: Filed that contains the token of your shopper. Mandatory whenpaymentMethod.type
is token.paymentMethod.recurringProcessingModel
: This indicates whether the transaction is a recurring transaction.
Subscription: Making a recurring payment with a fixed amount and fixed frequency.
Unscheduled: Making a recurring payment with a variable amount and variable frequency, variable amount and fixed frequency, or fixed amount and variable frequency.transAmount
: Object contains the currency and value of the payment.
You need to include additional parameters in your payment request if you are:
- Gateway Tokenization: See the chapter on Tokenization for more details.
- Authenticating the User: Use 3D Secure. See the chapter on 3DS Authentication for more details.
EVO Cloud allows ASI (zero payment amount in the transAmount
object) or authorization with an amount to complete saving credentials.
TIP
If you use ASI to save credentials, the first subsequent transactions which cardholder initial may also require authentication. If you want the first subsequent transaction to be initiated by the merchant, you need to set the paymentMethod.isFirstCITTxn
parameter to true when using ASI to save credentials. The scenario is such that from free trial to lifetime membership.
Example
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"
}
}'
If the payment is successful, you will receive paymentMethod.recurringReference
in the response. You will use this reference for subsequent transactions.
If you do not receive paymentMethod.recurringReference
in the response, you can retrieve the payment result. See the chapter on Payment for more details.
Gateway Tokenization
You can add the following parameters in the card binding request to save the credentials when binding the card.
paymentMethod.recurringProcessingModel
: This indicates whether the transaction is a recurring transaction.
Subscription: Making a recurring payment with a fixed amount and fixed frequency.
Unscheduled: Making a recurring payment with a variable amount and variable frequency, variable amount and fixed frequency, or fixed amount and variable frequency.
The subsequent process is the same as the tokenization process. For details, refer to the tokenization
section.
Subsequent Transactions
EVO Cloud requires the merchant's initials for subsequent transactions using saved credentials.
paymentMethod.type
: Filed that indicates the transaction type.paymentMethod.card
: Object contains the shopper's card information. Mandatory whenpaymentMethod.type
iscard
.paymentMethod.token.value
: Filed that contains the token of your shopper. Mandatory whenpaymentMethod.type
is token.paymentMethod.recurringProcessingModel
: This indicates whether the transaction is a recurring transaction.- Subscription: Making a recurring payment with a fixed amount and fixed frequency.
- Unscheduled: Making a recurring payment with a variable amount and variable frequency, variable amount and fixed frequency, or fixed amount and variable frequency.
paymentMethod.recurringReference
: TherecurringReference
that uniquely identifies the recurring transaction. The merchant will need this to make future payments for the user.transAmount
: Object contains the currency and value of the payment.
Example
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"
}
}'