Visa Checkout
e-SiTef has Visa Checkout digital wallet as a functionality for integration with the merchant’s application.
It allows the merchant to not have any direct contact with customer card and personal data collection, using the interface and the communication structure developed by VISA for payments using this technology.
Supported routings
Currently, the Visa Checkout integration via Web Services is supported for payments routed via SiTef, Cielo e-Commerce and Stone WS.
Supported e-SiTef interfaces
The supported interfaces on e-SiTef for using Visa Checkout are:
- REST Payment
- REST Cancel
- REST Pre-Authorization
For further details about these interfaces, the merchant must have their respective integration manuals. If necessary, they must be requested to our support team.
Required configurations on e-SiTef
For a merchant to use the Visa Checkout digital wallet on e-SiTef, simply ask the e-SiTef support team to set up.
REST integration requirements
The merchant’s application must be integrated with Visa Checkout on its graphical interface and on its JavaScript callback communications to obtain the callid
parameter. This field is necessary to integrate with e-SiTef’s REST payment interface.
For further details about this integration, the merchant must request the integration guide to VISA and develop the integration with the Visa Checkout Button and the LightBox.
Flows
The payment flows for using e-SiTef with Visa Checkout via Web Services assume that the merchant’s application fulfills the requirements presented in the previous item, which means that application is already capable of using e-SiTef’s Web Services with the callid
.
REST payment flow
The payment flow for using e-SiTef with Visa Checkout assumes that the merchant's application is already following the requirements present in the previous item, which means that the application is capable of using e-SiTef's REST interfaces after getting the callid
.
The figure below presents the sequence diagram for the integration with e-SiTef and Visa Checkout:
To pay Visa Checkout transactions via REST, the merchant's application must send the wallet_transaction_id
instead of the card number in the card
object. Optionally, it's also possible to send initial_wallet_transaction_id
, which informs whether this is the first time that this wallet_transaction_id
is being used. If it isn't defined, its default value is true
. Below is an example with the cUrl application where the acquirer requests sending the security code on the payment:
curl
--request POST "https://esitef-homologacao.softwareexpress.com.br/e-sitef/api/v1/payments/xxxxxxxxxxxx...xxxxxxxxxxxxx"
--header "Content-Type: application/json"
--header "merchant_id:wwwwwww"
--header "merchant_key:yyyyyyyyyyyyyyyyyyyyyy"
--data-binary
{
"card":{
"wallet_transaction_id":"callid_de_teste",
"initial_wallet_transaction_id":"false",
"security_code":"123"
}
}
--verbose
REST pre-authorization flow
As in the REST payment, the pre-authorization interface can also receive the wallet_transaction_id
and initial_wallet_transaction_id
fields.
In case of payments with promotional amounts for using Visa Checkout, VISA suggests that the subtotal
, discount
and promo_code
fields are sent additionally on the pre-authorization effectuation service and the pre-authorization capture service. Learn more.
Sending these fields isn't mandatory. However, it's extremely recommended by VISA for enriching statistical data of Visa Checkout usage and improving related services. These fields are sent to the Visa Checkout systems along with information regarding total amount, currency and order id. To clarify the usage of these fields, here is an example: supposing a transaction of a product which has an amount of $ 80,00, with a discount of 10% ($ 8,00) and resulting in a liquid amount of $ 72,00, the fields must be filled as follows:
amount: R$ 72,00
subtotal: R$ 80,00
discount: R$ 8,00
amount = subtotal - discount = R$ 80,00 - R$ 8,00 = R$ 72,00
REST cancel
For cancelling or reversing Visa Checkout transactions, the merchant's application must send the wallet_transaction_id
instead of the card number in the card
object. Below is an example with the cUrl application where the acquirer requests sending the security code:
curl
--request PUT "https://esitef-homologacao.softwareexpress.com.br/e-sitef/api/v1/cancellations/xxxxxxxxxxxx...xxxxxxxxxxxxx"
--header "Content-Type:application/json"
--header "merchant_id:wwwwwww"
--header "merchant_key:yyyyyyyyyyyyyyyyyyyyyy"
--data-binary
{
"card":{
"security_code":"zzz",
"wallet_transaction_id":"callid_de_teste",
},
"amount":"1000"
}
--verbose