Visa Token Service (VTS) ist eine Sicherheitsfunktion von Visa , die die Karten der Kunden mit Token versieht.
Nach der Aktivierung können Sie neue AUTH Anfragen über unsere Webservices API verarbeiten, die die von Visa bereitgestellten Token enthalten, anstatt direkt sensible Kartendaten einzugeben, wie unten beschrieben.
Bearbeitung einer Transaktion mit einem Token
Sie sind verpflichtet, alle VTS tokenisierten Zahlungen mit EMV 3-D Secure (3DS) zu authentifizieren.
Klicken Sie hier, um mehr über 3DS zu erfahren.
- Ein wiederkehrender Kunde erklärt sich mit einem neuen Kauf auf Ihrer Website einverstanden.
- Ihr System muss eine neue Anfrage an AUTH stellen, die die folgenden Informationen enthält parenttransactionreference Feld.
- Bevor die Zahlung verarbeitet wird, verwendet Trust Payments die parenttransactionreference um das eindeutige Token des Kunden abzurufen
- Trust Payments eine Zahlungsanforderung an die anwerbende Bank, einschließlich des Tokens des Kunden.
- Die akquirierende Bank kontaktiert Visa, die den Kunden anhand des Tokens identifizieren und den Kartenaussteller kontaktieren kann.
- Der Kartenaussteller wird die Transaktion entweder genehmigen oder ablehnen und sendet seine Antwort an Visa.
- Visa sendet eine Antwort an die anwerbende Bank und Trust Payments zurück.
- Trust Payments gibt eine Antwort AUTH an Ihr System zurück. Sie müssen den Inhalt der Antwort überprüfen, um festzustellen, ob die Transaktion erfolgreich war oder nicht.
- Ihre Checkout-Seite muss die relevanteste Erfolgs-/Fehlermeldung im Browser des Kunden anzeigen.
Beispiel einer AUTH Anfrage mit 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>
Feldspezifikation
Feld | Format | Beschreibung | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alphanumerisch & Bindestriche (25) |
Die transactionreference des letzten erfolgreich autorisierten AUTH Antrags, der mit einer Karte der Marke Visa bearbeitet wurde, von der die wichtigsten Daten übernommen werden.
|
Umgang mit der Antwort
Es gibt zusätzliche Felder, die spezifisch für VTS sind und in der Antwort zurückgegeben werden. Diese sind im folgenden Beispiel dargestellt:
{
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>
Feldspezifikation
Feld | Format | Beschreibung | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alphanumerisch & Bindestriche (25) |
Die transactionreference eines früheren Ersuchens, aus dem die wichtigsten Details hervorgegangen sind vererbt. | |
tavv XPath: /threedsecure/tavv |
Alphanumerische Zeichen und Sonderzeichen (32) | Token Authentifizierung Verifizierungswert | |
tokenisedpayment XPath: /billing/payment/pan/@tokenised |
Numerisch (1) | Ein Wert von "1" bedeutet, dass die Transaktion unter Verwendung eines Tokens verarbeitet wurde. Wurde die Transaktion unter Verwendung der Kartendaten (nicht des Tokens) verarbeitet, wird dieses Feld nicht zurückgegeben. | |
tokentype XPath: /billing/payment/pan/@tokentype |
Alpha (50) | Dies sollte mit dem Wert "VISATOKEN" zurückgegeben werden, um anzuzeigen, dass VTS verwendet wurde. | |
vaultreference XPath:/billing/payment/vaultreference |
Alphanumerisch & Bindestriche (25) | Dies ist eine eindeutige Referenz, die von Trust Payments zugewiesen wird, um das Token zu identifizieren. | |
walletdisplayname XPath:/billing/payment/wallet/displayname |
Numerisch (4) | Hierbei handelt es sich um Informationen des Kartenausstellers, die dem Kunden angezeigt werden können, um die Zahlungsmethode zu identifizieren. Dazu gehören in der Regel die letzten 4 Ziffern der Kartennummer. |
Über Benachrichtigungen
Visa stellt in regelmäßigen Abständen Aktualisierungen der Token bereit, wenn Kunden neue Kartennummern oder Verfallsdaten erhalten oder wenn Token ablaufen. URL-Benachrichtigungen kann auf Website-Referenz so konfiguriert werden, dass Sie benachrichtigt werden, wenn dies geschieht. Um diese Benachrichtigungen zu konfigurieren, wenden Sie sich bitte an unser Support-Team.