Using the 3RIPSS “Deal" already created in the [previous step| (link to above article)], we can then continue with the below flow for creating the Initial Customer Initiated transaction for the 3RI use-case.
Without a User Account
Last changes: 01-26-2024
3RI payments without user account (guest payment) enable end users to provide their payment option details on a case-by-case basis. i.e. the payment option is not saved (tokenized) and not associated with an account. Guest payments are also available in case the user has an account registered, but chooses not to any pre-existing stored payment options, nor chooses to store the payment option of the current 3RI payment.
Process flow for Partial/Split Shipment without user account:
- Create Initial CIT for 3RI.
- Collect Payment Details via SDK.
- Complete Authorization for 3RI.
The user decides to make an order of 500 € without saving the payment card details. Some products are not available, so the merchant marks this transaction as a partial/split shipment.
The order was created from the merchant’s shop. In this example the total amount of the order is 500 €. Since the transaction is marked as a partial/split shipment, the amount for the first shipment is 250 €.
Init Authorize - Request
-
Path:
-
PUT {baseURL}/payment/initAuthorize
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
{
"partnerReference": "DEV-3RI-PSS-Create-Initial-CIT-001",
"dealReference": "RjFfNtRcReI1rTm1NzA3r",
"programAccno": "1234567890",
"accno": "MERCHANT-DE-1111",
"accnoType": "00",
"paymentOptionCode": "VISA",
"presentationAmount": 250.00,
"presentationCurrCode": "EUR",
"presentationUsage": "Initial CIT for 3RI PSS",
"useDifferentBillingAddress": true,
"customerFullName": "Hans Gruber",
"addr1": "Some Street",
"houseNumber": "123",
"city": "Some City",
"countryCode": "DE",
"postCode": "12345",
"emailAddress": "some.user@example.com",
"localDate": "2019-12-31",
"localTime": "235959"
}
Init Authorize - Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"programAccno": "1234567890",
"accno": "MERCHANT-DE-1111",
"dealReference": "RjFfNtRcReI1rTm1NzA3r",
"uniqueReference": "M1jJiFbTuYbJbml0aWfSi",
"loadAccountReference": "VeLdIgXhAxRpBkKgU1nQi",
"authorizationToken": "8F1C80DBC5AF964D02B183523A336525.uat01-vm-tx01",
"paymentOptionCode": "VISA",
"presentationAmount": 250,
"presentationCurrCode": "EUR",
"presentationUsage": "Initial CIT for 3RI PSS",
"statusCode": "RECEIVED",
"paymentProviderResponse": {
"result": {
"code": "000.200.100",
"description": "successfully created checkout"
},
"buildNumber": "03af5bca377dbfccb2f6559facee5a45757ae039@2019-12-31 23:59:59+0000",
"timestamp": "2019-12-31 23:59:59+0000",
"ndc": "8F1C80DBC5AF964D02B183523A336525.uat01-vm-tx01",
"id": "8F1C80DBC5AF964D02B183523A336525.uat01-vm-tx01"
},
"partnerReference": "DEV-3RI-PSS-Create-Initial-CIT-001",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "235959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
The SDK renders a customizable payment form and sends the entered payment details directly from the customer's browser to the Acquirer.
The user will see the total amount of the authorized transaction (in our example 500 €). This ensures that the customer gives verified approval up-front for the full cost of all the items that will eventually be shipped. This step also reduces the merchant’s risk of any potential chargebacks, as there’s collected proof of the customer’s agreement to the full amount.
cw.PaymentForm(container, {
authorizationToken: "8F1C80DBC5AF964D02B183523A336525.uat01-vm-tx01",
callbackUrl: "https://example.com/Payment/CompleteAuthorization",
paymentOptionCodes: ["VISA"],
paymentProviderMode: "test",
locale: "en-US"
});
Do not use “isStorable” configuration parameter in the Web SDK for 3RI transactions as this option is not compatible with the 3RI flows.
The SDK sends the payment details directly to the acquirer, where the payment is processed. Due to this, there is no indication of the payment's status and if it was successfully authorized. Therefore, 1.39 Complete Authorize should be called.
Complete Authorize - Request
-
Path:
-
{baseURL}/payment/M1jJiFbTuYbJbml0aWfSi/completeAuthorize
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
{
"partnerReference": "DEV-3RI-PSS-Complete-Initial-CIT-002",
"authorizationToken": "8F1C80DBC5AF964D02B183523A336525.uat01-vm-tx01",
"useDifferentBillingAddress": true,
"customerFullName": "Hans Gruber",
"addr1": "Some Street",
"houseNumber": "123",
"city": "Some City",
"countryCode": "DE",
"postCode": "12345",
"localDate": "2019-12-31",
"localTime": "235959"
}
Complete Authorize - Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"initiatorAccno": "1234567890",
"accno": "MERCHANT-DE-1111",
"uniqueReference": "M1jJiFbTuYbJbml0aWfSi",
"processedAmount": 250,
"processedCurrCode": "EUR",
"statusCode": "AUTHORIZED",
"statusReason": "Request successfully processed in 'Merchant in Integrator Test Mode'",
"paymentProviderResponse": {
"id": "7d159ae56109a25cabc194107488ab74",
"registrationId": "2082e9544b2bf37d89bcd474e254f0bf",
"paymentType": "PA",
"paymentBrand": "VISA",
"amount": "250.00",
"currency": "EUR",
"descriptor": "MERCHANT-DE-1111 - Initial CIT for 3RI PSS",
"merchantTransactionId": "M1jJiFbTuYbJbml0aWfSi",
"recurringType": "INITIAL",
"result": {
"code": "000.100.110",
"description": "Request successfully processed in 'Merchant in Integrator Test Mode'"
},
"card": {
"bin": "400012",
"last4Digits": "1234",
"holder": "Hans Gruber",
"expiryMonth": "12",
"expiryYear": "2034"
},
"billing": {
"street1": "Some Street",
"city": "Some City",
"postcode": "12345",
"country": "DE"
},
"threeDSecure": {
"eci": "05",
"verificationId": "dMvYaWzPy2f0aW9uSwQ=",
"version": "2.2.0",
"dsTransactionId": "9c3f86f8-f274-6d19-4348-733adff0ed72",
"challengeMandatedIndicator": "N",
"acsTransactionId": "99546eef-46aa-554a-a69e-62a629903822",
"authType": "01",
"flow": "challenge",
"authenticationTimestamp": "201912312359"
},
"customParameters": {
"StandingInstructionAPI": "true",
"SHOPPER_EndToEndIdentity": "be83cf94354a0d25485f728d87e4ac21ba7715551fb0c6ec0b49ada2c9ce8e90",
"CTPE_DESCRIPTOR_TEMPLATE": "",
"StoredCredentialType": "CIT",
"StandingInstruction": "UNSCHEDULED"
},
"risk": {
"score": "0"
},
"buildNumber": "03af5bca377dbfccb2f6559facee5a45757ae039@2019-12-31 23:59:59+0000",
"timestamp": "2019-12-31 23:59:59+0000",
"ndc": "8F1C80DBC5AF964D02B183523A336525.uat01-vm-tx01",
"standingInstruction": {
"source": "CIT",
"type": "UNSCHEDULED",
"mode": "INITIAL"
},
"source": "OPPUI",
"paymentMethod": "CC",
"shortId": "1234.1234.1234"
},
"initiationCountryCode": "DE",
"initiationCountryCode3": "DEU",
"partnerReference": "DEV-3RI-PSS-Complete-Initial-CIT-002",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "235959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}
In some cases e.g. where the user's device loses internet connectivity, the redirect to the specified “callbackURL” does not take place. To prevent the transaction expiring despite it being successful, the API method 1.39 Complete Authorize should automatically be called from your backend 28 minutes after 1.38 Init Authorize has been called, and the payment process completed.
<Bla Bla Bal - Link to "1.158 Get Deal Data" from "API Reference" Section - Bla Bla Bal>
Get Deal Data - Request
-
Path:
-
GET {baseURL}/deal/RjFfNtRcReI1rTm1NzA3r?partnerReference=DEV-3RI-PSS-Get-Deal-Data-002&localDate=2019-12-31&localTime=235959
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
X-Auth-Token: eyJhbGciOiJSUzI1NiI{abbreviated}RW5kVG9rZW4=
Get Deal Data - Response
-
Status Code:
-
200 (OK)
-
Header:
-
Content-Type: application/json
Accept-Language: en-US
{
"merchantAccno": "MERCHANT-DE-1111",
"dealReference": "RjFfNtRcReI1rTm1NzA3r",
"dealAuthenticationAmount": 500.00,
"dealTotalAmount": 250.00,
"dealCurrCode": "EUR",
"dealTypeCode": "3RIPSS",
"isClosed": false,
"dealRelatedTransactions": [
{
"transactionReference": "M1jJiFbTuYbJbml0aWfSi",
"presentationAmount": 250.00,
"presentationCurrCode": "EUR",
"statusCode": "AUTHORIZED"
}
],
"partnerReference": "DEV-3RI-PSS-Get-Deal-Data-002",
"localDate": "2019-12-31",
"localTime": "235959",
"sysDate": "2019-12-31",
"sysTime": "235959",
"responseCode": "0000",
"responseDescription": "Successful execution.",
"additionalInformation": {
"requestId": "aff2728481a181dc36daedc14055b516"
}
}