Visa Token Service (VTS) is een beveiligingsfunctie van Visa die de kaarten van klanten toekent.
Eenmaal ingeschakeld, kunt u nieuwe AUTH verzoeken verwerken via onze Webservices API die de door Visa verstrekte tokens bevatten, in plaats van rechtstreeks gevoelige kaartgegevens op te nemen, zoals hieronder beschreven.
Verwerken van een transactie met een token
U bent verplicht om alle VTS tokenised betalingen te authenticeren met behulp van EMV 3-D Secure (3DS).
Klik hier voor meer informatie over 3DS.
- Een terugkerende klant gaat akkoord met een nieuwe aankoop op uw site.
- Uw systeem moet een nieuw AUTH verzoek indienen dat de parenttransactionreference veld.
- Voordat de betaling wordt verwerkt, gebruikt Trust Payments de parenttransactionreference om het unieke token van de klant op te halen
- Trust Payments dient een betalingsverzoek in bij de wervende bank, met inbegrip van het token van de klant.
- De wervende bank neemt contact op met Visa, die aan de hand van het token de klant kan identificeren en contact kan opnemen met zijn kaartuitgever.
- De kaartuitgever keurt de transactie goed of af en stuurt zijn antwoord terug naar Visa.
- Visa stuurt een antwoord terug naar de overnemende bank en Trust Payments.
- Trust Payments stuurt een antwoord op AUTH naar uw systeem. U moet de inhoud van het antwoord controleren om te bepalen of de transactie al dan niet geslaagd is.
- Uw afrekenpagina moet in de browser van de klant de meest relevante succes-/foutmelding weergeven.
Voorbeeld van AUTH verzoek met behulp van VTS
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
auth = {
"sitereference": "test_site12345",
"requesttypedescriptions": ["AUTH"],
"accounttypedescription": "ECOM",
"currencyiso3a": "GBP",
"baseamount": "1050",
"orderreference": "My_Order_123",
"parenttransactionreference": "1-23-45"
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => 'webservices@example.com',
'password' => 'Password1^',
);
$requestData = array(
'sitereference' => 'test_site12345',
'requesttypedescriptions' => array('AUTH'),
'accounttypedescription' => 'ECOM',
'currencyiso3a' => 'GBP',
'baseamount' => '1050',
'orderreference' => 'My_Order_123',
'parenttransactionreference' => '1-23-45'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"webservices@example.com",
"version": "1.00",
"request": [{
"currencyiso3a": "GBP",
"requesttypedescriptions": ["AUTH"],
"sitereference": "test_site12345",
"baseamount": "1050",
"orderreference": "My_Order_123",
"accounttypedescription": "ECOM",
"parenttransactionreference": "1-23-45"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescriptions":["AUTH"],
"sitereference":"test_site12345",
"baseamount":"1050",
"orderreference":"My_Order_123",
"accounttypedescription":"ECOM",
"parenttransactionreference":"1-23-45"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<sitereference>test_site12345</sitereference>
<accounttypedescription>ECOM</accounttypedescription>
<parenttransactionreference>1-23-45</parenttransactionreference>
</operation>
</request>
</requestblock>
Specificatie veld
Veld | Formaat | Beschrijving | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
De transactionreference van het vorige met succes goedgekeurde AUTH verzoek, verwerkt met een kaart van het merk Visa, waarvan de kerngegevens worden overgenomen.
|
Behandeling van het antwoord
Er zijn extra velden die specifiek zijn voor VTS die in het antwoord worden teruggestuurd. Deze worden in het onderstaande voorbeeld getoond:
{
u 'requestreference': u 'A0bxh87wt',
u 'version': u '1.00',
u 'responses': [{
u 'transactionstartedtimestamp': u '2016-12-07 11:32:44',
u 'livestatus': u '0',
u 'issuer': u 'Test Issuer',
u 'splitfinalnumber': u '1',
u 'dccenabled': u '0',
u 'settleduedate': u '2016-12-07',
u 'errorcode': u '0',
u 'orderreference': u 'My_Order_123',
u 'tid': u '27882788',
u 'merchantnumber': u '00000000',
u 'merchantcountryiso2a': u 'GB',
u 'transactionreference': u '23-9-80001',
u 'merchantname': u 'Test Merchant',
u 'paymenttypedescription': u 'VISA',
u 'baseamount': u '1050',
u 'accounttypedescription': u 'ECOM',
u 'acquirerresponsecode': u '00',
u 'requesttypedescription': u 'AUTH',
u 'securityresponsesecuritycode': u '0',
u 'currencyiso3a': u 'GBP',
u 'authcode': u 'TEST36',
u 'errormessage': u 'Ok',
u 'operatorname': u 'webservices@example.com',
u 'securityresponsepostcode': u '0',
u 'maskedpan': u '411111######0930',
u 'securityresponseaddress': u '0',
u 'issuercountryiso2a': u 'US',
u 'settlestatus': u '0',
u 'parenttransactionreference': u '1-23-45',
u 'tavv': u 'VVVVVVVVVVVVVVVVVVVVVVVVVVV=',
u 'tokenisedpayment': u '1',
u 'tokentype': u 'VISATOKEN',
u 'vaultreference': u '1-1',
u 'walletdisplayname': u '1111'
}]
}
array(3) {
["requestreference"] => string(9) "A3579dkvx"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(34) {
["transactionstartedtimestamp"] => string(19) "2016-12-09 09:52:19"
["livestatus"] => string(1) "0"
["issuer"] => string(26) "Test Issuer"
["splitfinalnumber"] => string(1) "1"
["dccenabled"] => string(1) "0"
["settleduedate"] => string(10) "2016-12-09"
["errorcode"] => string(1) "0"
["orderreference"] => string(12) "My_Order_123"
["tid"] => string(8) "27882788"
["merchantnumber"] => string(8) "00000000"
["securityresponsepostcode"] => string(1) "0"
["transactionreference"] => string(10) "72-9-80003"
["merchantname"] => string(13) "Test Merchant"
["paymenttypedescription"] => string(4) "VISA"
["baseamount"] => string(4) "1050"
["accounttypedescription"] => string(4) "ECOM"
["acquirerresponsecode"] => string(2) "00"
["requesttypedescription"] => string(4) "AUTH"
["securityresponsesecuritycode"] => string(1) "0"
["currencyiso3a"] => string(3) "GBP"
["authcode"] => string(6) "TEST31"
["errormessage"] => string(2) "Ok"
["operatorname"] => string(23) "webservices@example.com"
["merchantcountryiso2a"] => string(2) "GB"
["maskedpan"] => string(16) "411111######0930"
["securityresponseaddress"] => string(1) "0"
["issuercountryiso2a"] => string(2) "US"
["settlestatus"] => string(1) "0"
["parenttransactionreference"] => string(7) "1-23-45"
["tavv"] => string(28) "VVVVVVVVVVVVVVVVVVVVVVVVVVV="
["tokenisedpayment"] => string(1) "1"
["tokentype"] => string(9) "VISATOKEN"
["vaultreference"] => string(3) "1-1"
["walletdisplayname"] => string(4) "1111"
}
}
}
{
"requestreference":"W23-fjgvn3d8",
"version":"1.00",
"response":[{
"transactionstartedtimestamp":"2016-12-07 15:08:47",
"livestatus":"0",
"issuer":"Test Issuer",
"splitfinalnumber":"1",
"dccenabled":"0",
"settleduedate":"2016-12-07",
"errorcode":"0",
"baseamount":"1050",
"tid":"27882788",
"merchantnumber":"00000000",
"merchantcountryiso2a":"GB",
"transactionreference":"23-9-80006",
"merchantname":"Test Merchant",
"paymenttypedescription":"VISA",
"orderreference":"My_Order_123",
"accounttypedescription":"ECOM",
"acquirerresponsecode":"00",
"requesttypedescription":"AUTH",
"securityresponsesecuritycode":"0",
"currencyiso3a":"GBP",
"authcode":"TEST96",
"errormessage":"Ok",
"operatorname":"webservices@example.com",
"securityresponsepostcode":"0",
"maskedpan":"411111######0930",
"securityresponseaddress":"0",
"issuercountryiso2a":"US",
"settlestatus":"0",
"parenttransactionreference":"1-23-45",
"tavv":"VVVVVVVVVVVVVVVVVVVVVVVVVVV=",
"tokenisedpayment":"1",
"tokentype":"VISATOKEN",
"vaultreference":"1-1",
"walletdisplayname":"1111"
}],
"secrand":"zO9"
}
<responseblock version="3.67">
<requestreference>A3579dkvx</requestreference>
<response type="AUTH">
<merchant>
<merchantname>Test Merchant</merchantname>
<orderreference>MyOrder123</orderreference>
<tid>27882788</tid>
<merchantnumber>00000000</merchantnumber>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<operatorname>webservices@example.com</operatorname>
</merchant>
<transactionreference>23-9-80006</transactionreference>
<security>
<postcode>0</postcode>
<securitycode>0</securitycode>
<address>0</address>
</security>
<billing>
<amount currencycode="GBP">1050</amount>
<payment type="VISA">
<vaultreference>1-1</vaultreference>
<wallet>
<displayname>1111</displayname>
</wallet>
<issuer>Test Issuer</issuer>
<issuercountry>ZZ</issuercountry>
<pan tokentype="VISATOKEN" tokenised="1">411111######0930</pan>
</payment>
<dcc enabled="0"/>
</billing>
<authcode>TEST96</authcode>
<timestamp>2012-10-08 12:46:02</timestamp>
<settlement>
<settleduedate>2012-10-08</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<threedsecure>
<tavv>VVVVVVVVVVVVVVVVVVVVVVVVVVV=</tavv>
</threedsecure>
<live>0</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
<acquirerresponsecode>00</acquirerresponsecode>
<operation>
<splitfinalnumber>1</splitfinalnumber>
<parenttransactionreference>1-23-45</parenttransactionreference>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
</response>
<secrand>hYWFMkiiAZ0wKHFZ</secrand>
</responseblock>
Specificatie veld
Veld | Formaat | Beschrijving | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
De transactionreference van een eerder verzoek, waarvan de belangrijkste details geërfd. | |
tavv XPath: /threedsecure/tavv |
Alfanumerieke & speciale tekens (32) | Token Authenticatie Verificatie Waarde | |
tokenisedpayment XPath: /billing/payment/pan/@tokenised |
Numeriek (1) | Een waarde van "1" geeft aan dat de transactie werd verwerkt met behulp van een token. Als de transactie werd verwerkt met behulp van de kaartgegevens (niet het token) wordt dit veld niet geretourneerd. | |
tokentype XPath: /billing/payment/pan/@tokentype |
Alfa (50) | Dit moet worden teruggestuurd met de waarde "VISATOKEN", om aan te geven dat VTS is gebruikt. | |
vaultreference XPath:/billing/payment/vaultreference |
Alfanumeriek & koppeltekens (25) | Dit is een unieke referentie die door Trust Payments wordt toegewezen om het token te identificeren. | |
walletdisplayname XPath:/billing/payment/wallet/displayname |
Numeriek (4) | Dit is door de kaartuitgever verstrekte informatie die aan de klant kan worden getoond om de betalingsmethode te identificeren. Dit omvat doorgaans de laatste 4 cijfers van hun kaartnummer. |
Over meldingen
Visa zal periodiek updates verstrekken over tokens in scenario's waar klanten nieuwe kaartnummers of vervaldata krijgen, of wanneer tokens verlopen. URL-kennisgevingen kan op uw site referentie(s) worden geconfigureerd om te worden geïnformeerd wanneer dit gebeurt. Om deze meldingen te configureren kunt u contact opnemen met ons Support Team.