Befolgen Sie diese Anweisungen, wenn Sie Account Checks verwenden, um die Daten des Kunden vor der Verarbeitung einer Zahlung zu überprüfen.
Wenn Sie bereits E-Commerce-Zahlungen mit unserer JavaScript Library abwickeln, kann Ihre bestehende Lösung so aktualisiert werden, dass sie mit minimalen Änderungen des Aufschlags auch Account Check Anfragen übermittelt. Klicken Sie hier, um mehr zu erfahren.
Voraussetzungen
Der folgende Inhalt setzt voraus, dass Sie die erforderliche PCI-Zertifizierung erhalten haben, um sensible Karteninhaberdaten in der Anfrage an unsere Webservices API zu verarbeiten und zu übermitteln.
Um Betrug zu reduzieren, hat Visa vorgeschrieben, dass alle in Großbritannien ansässigen Händler mit einer Kunden Categorie Nummer (MCC) von 6012 verpflichtet sind, zusätzliche Felder in AUTH und ACCOUNTCHECK Anfragen zu senden.
Werden diese Felder nicht ausgefüllt, kann die Transaktion nicht erfolgreich bearbeitet werden, und es wird ein "60025" angezeigt errorcode die in der Antwort zurückgegeben werden.
- Account Checks werden von Händlern mit einem Trust Payments Acquiring-Konto unterstützt. Wenn Sie eine andere Acquiring-Bank verwenden, müssen Sie unser Support-Team kontaktieren, um zu prüfen, ob diese Funktion unterstützt wird, bevor Sie fortfahren.
- Account checks kann nur bei kartenbasierten Zahlungsmitteln durchgeführt werden.
Überlegungen zum Mandat
Visa und Mastercard haben angeordnet, dass Sie muss die Zustimmung des Karteninhabers einholen wenn Sie Kartendaten für die künftige Verwendung speichern, und dass diese muss zum Zeitpunkt der ersten Meldung gekennzeichnet werden Genehmigung, durch Übermittlung der credentialsonfile Feld in Ihren Anfragen. Dazu müssen Sie sicherstellen, dass der eingereichte Antrag ACCOUNTCHECK das zusätzliche Feld enthält credentialsonfile, mit einem Wert von "1".
Sie müssen auch alle nachfolgenden Zahlungen kennzeichnen, bei denen zuvor gespeicherte Berechtigungsnachweise verwendet werden, indem Sie die credentialsonfile in diesen Anfragen mit dem Wert "2".
Klicken Sie hier, um mehr über Hinterlegte Anmeldedaten zu erfahren.
Alle Unternehmen innerhalb des EWR (Europäischer Wirtschaftsraum) sind verpflichtet, bei der Abwicklung des elektronischen Geschäftsverkehrs 3-D Secure zu verwenden Account Checks, als Teil des PSD2 Mandats.
Der folgende Inhalt sollte nur von Händlern verwendet werden, die Account Checks verarbeiten, bei denen es sich um Zahlungen im Rahmen des telefonischen Versandhandels (MOTO), von Händlern initiierte Transaktionen (MIT) oder andere Arbeitsabläufe handelt, die vom PSD2-Mandat ausgenommen sind.
Durchgeführte Kontrollen
Bei der Bearbeitung von Account Checks werden die erste Zeile der Adresse des Karteninhabers, die Postleitzahl des Karteninhabers und der Sicherheitscode überprüft, um sicherzustellen, dass die vom Kunden eingegebenen Daten gültig sind.
Klicken Sie hier, um mehr über diese Kontrollen zu erfahren.
Überblick über den Prozess
- Der Händler stellt einen Antrag an ACCOUNTCHECK .
- Trust Payments prüft den Antrag und setzt sich mit der Bank in Verbindung.
- Die Acquiring-Bank setzt sich mit dem Kartenaussteller in Verbindung, um AVS und den Sicherheitscode zu überprüfen.
- Trust Payments erhält die Ergebnisse der Anfrage und gibt diese an den Händler zurück.
- Das Handelsunternehmen empfängt und interpretiert diese Antwort.
Es werden keine Mittel durch ACCOUNTCHECK reserviert.
Das Konto des Kunden wird nicht belastet, wenn eine ACCOUNTCHECK Anfrage durchgeführt wird.
Ähnlich wie bei den Standardanfragen AUTH werden bei den Anfragen ACCOUNTCHECK AVS und Security Code Checks durchgeführt. Wir empfehlen, unsere Dokumentation zu diesen Prüfungen zu lesen, bevor Sie fortfahren.
ACCOUNTCHECK Anfrage
Die für eine ACCOUNTCHECK -Anfrage erforderlichen Felder sind die gleichen wie bei einer Standardanfrage AUTH , mit den folgenden Unterschieden
- Die baseamount kann "0" sein. Es kann ein Betrag ungleich Null übermittelt werden - dieser wird in alle nachfolgenden Anfragen, die auf diese Account check als übergeordnete Anfrage verweisen, übernommen, sofern er nicht mit einem neuen Betrag überschrieben wird.
Feldspezifikation
Feld | Format | Beschreibung | |
credentialsonfile XPath: /operation/credentialsonfile |
Numerisch (1) |
Die zulässigen Werte für dieses Feld sind 0, 1 und 2.
Dies ist für Transaktionen erforderlich, bei denen der Händler Hinterlegte Anmeldedaten (CoF) verwendet. Wenn die Transaktion nicht für CoF in Frage kommt oder Sie keine Credentials für zukünftige Transaktionen verwenden möchten, können Sie dieses Feld auslassen. |
Über die Vererbung
Sie können jedes Feld übermitteln, das Sie in einer AUTH Anfrage übermitteln können, und diese werden an alle nachfolgenden untergeordneten Anfragen vererbt. Klicken Sie hier, um mehr zu erfahren.
Im Folgenden finden Sie ein Beispiel für eine ACCOUNTCHECK Anfrage:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
accountcheck= {
"currencyiso3a": "GBP",
"requesttypedescriptions": ["ACCOUNTCHECK"],
"sitereference": "test_site12345",
"baseamount": "0",
"orderreference": "My_Order_123",
"accounttypedescription": "MOTO",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123",
"billingpremise": "789",
"billingpostcode": "TR45 6ST",
"credentialsonfile": "1"
}
strequest = securetrading.Request()
strequest.update(accountcheck)
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(
'currencyiso3a' => 'GBP',
'requesttypedescriptions' => array('ACCOUNTCHECK'),
'sitereference' => 'test_site12345',
'baseamount' => '0',
'orderreference' => 'My_Order_123',
'accounttypedescription' => 'MOTO',
'pan' => '4111111111111111',
'expirydate' => '12/2020',
'securitycode' => '123',
'billingpremise' => '789',
'billingpostcode' => 'TR45 6ST',
'credentialsonfile' => '1'
);
$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": ["ACCOUNTCHECK"],
"sitereference": "test_site12345",
"baseamount": "0",
"orderreference": "My_Order_123",
"accounttypedescription": "MOTO",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123",
"billingpremise": "789",
"billingpostcode": "TR45 6ST",
"credentialsonfile": "1"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescriptions":["ACCOUNTCHECK"],
"sitereference":"test_site12345",
"baseamount":"0",
"orderreference":"My_Order_123",
"accounttypedescription":"MOTO",
"pan":"4111111111111111",
"expirydate":"12\/2020",
"securitycode":"123",
"billingpremise":"789",
"billingpostcode":"TR45 6ST",
"credentialsonfile":"1"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="ACCOUNTCHECK">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<amount currencycode="GBP">0</amount>
<postcode>TR45 6ST</postcode>
<premise>789</premise>
<payment>
<pan>4111111111111111</pan>
<securitycode>123</securitycode>
<expirydate>12/2020</expirydate>
</payment>
</billing>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<sitereference>test_site12345</sitereference>
<credentialsonfile>1</credentialsonfile>
</operation>
</request>
</requestblock>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
ACCOUNTCHECK Antwort
Nachdem die Anfrage bearbeitet wurde, erhalten Sie eine einzige Antwort, die die Antwort auf die Anfrage ACCOUNTCHECK enthält:
{
u 'requestreference': u 'Ar2xj1hjr',
u 'version': u '1.00',
u 'responses': [{
u 'transactionstartedtimestamp': u '2016-12-07 16:12:00',
u 'livestatus': u '0',
u 'issuer': u 'SecureTrading Test Issuer1',
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-80023',
u 'merchantname': u 'Test Merchant',
u 'paymenttypedescription': u 'VISA',
u 'baseamount': u '0',
u 'accounttypedescription': u 'MOTO',
u 'acquirerresponsecode': u '00',
u 'requesttypedescription': u 'ACCOUNTCHECK',
u 'securityresponsesecuritycode': u '2',
u 'currencyiso3a': u 'GBP',
u 'authcode': u 'TEST46',
u 'errormessage': u 'Ok',
u 'operatorname': u 'webservices@example.com',
u 'securityresponsepostcode': u '2',
u 'maskedpan': u '411111######1111',
u 'securityresponseaddress': u '2',
u 'issuercountryiso2a': u 'US',
u 'settlestatus': u '0',
u 'credentialsonfile': u '1'
}]
}
array(3) {
["requestreference"] => string(9) "A4cenptwx"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(28) {
["transactionstartedtimestamp"] => string(19) "2016-12-09 11:04:29"
["livestatus"] => string(1) "0"
["issuer"] => string(26) "SecureTrading Test Issuer1"
["dccenabled"] => string(1) "0"
["settleduedate"] => string(10) "2016-12-09"
["errorcode"] => string(1) "0"
["baseamount"] => string(1) "0"
["tid"] => string(8) "27882788"
["merchantnumber"] => string(8) "00000000"
["securityresponsepostcode"] => string(1) "2"
["transactionreference"] => string(10) "72-9-80018"
["merchantname"] => string(13) "Test Merchant"
["paymenttypedescription"] => string(4) "VISA"
["orderreference"] => string(12) "My_Order_123"
["accounttypedescription"] => string(4) "MOTO"
["acquirerresponsecode"] => string(2) "00"
["requesttypedescription"] => string(12) "ACCOUNTCHECK"
["securityresponsesecuritycode"] => string(1)"2"
["currencyiso3a"] => string(3) "GBP"
["authcode"] => string(6) "TEST39"
["errormessage"] => string(2) "Ok"
["operatorname"] => string(23) "webservices@example.com"
["merchantcountryiso2a"] => string(2) "GB"
["maskedpan"] => string(16) "411111######1111"
["securityresponseaddress"] => string(1) "2"
["issuercountryiso2a"] => string(2) "US"
["settlestatus"] => string(1) "0"
["credentialsonfile"] => string(1) "1"
}
}
}
{
"requestreference":"W23-q3wa45ge",
"version":"1.00",
"response":[{
"transactionstartedtimestamp":"2016-12-07 16:16:39",
"livestatus":"0",
"issuer":"SecureTrading Test Issuer1",
"dccenabled":"0",
"settleduedate":"2016-12-07",
"errorcode":"0",
"baseamount":"0",
"tid":"27882788",
"merchantnumber":"00000000",
"securityresponsepostcode":"2",
"transactionreference":"23-9-80024",
"merchantname":"Test Merchant",
"paymenttypedescription":"VISA",
"orderreference":"My_Order_123",
"accounttypedescription":"MOTO",
"acquirerresponsecode":"00",
"requesttypedescription":"ACCOUNTCHECK",
"securityresponsesecuritycode":"2",
"currencyiso3a":"GBP",
"authcode":"TEST53",
"errormessage":"Ok",
"operatorname":"webservices@example.com",
"merchantcountryiso2a":"GB",
"maskedpan":"411111######1111",
"securityresponseaddress":"2",
"issuercountryiso2a":"US",
"settlestatus":"0",
"credentialsonfile":"1"
}],
"secrand":"NunVEQ"
}
<responseblock version="3.67">
<requestreference>X575647667</requestreference>
<response type="ACCOUNTCHECK">
<merchant>
<merchantname>Test Merchant</merchantname>
<orderreference>My_Order_123</orderreference>
<tid>27882788</tid>
<merchantnumber>00000000</merchantnumber>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<operatorname>webservices@example.com</operatorname>
</merchant>
<transactionreference>16-9-1</transactionreference>
<billing>
<amount currencycode="GBP">0</amount>
<payment type="VISA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>US</issuercountry>
<pan>411111######1111</pan>
</payment>
<dcc enabled="0"/>
</billing>
<authcode>TEST53</authcode>
<live>0</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
<timestamp>2013-01-16 10:48:17</timestamp>
<acquirerresponsecode>00</acquirerresponsecode>
<security>
<address>2</address>
<postcode>2</postcode>
<securitycode>2</securitycode>
</security>
<settlement>
<settleduedate>2013-01-16</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<credentialsonfile>1</credentialsonfile>
</operation>
</response>
<secrand>bByuPvGz9Hcm</secrand>
</responseblock>
Umgang mit der Antwort
- Stellen Sie sicher, dass die errorcode Der zurückgegebene Wert ist "0", was den Erfolg anzeigt. (Sie dürfen keine Anmeldedaten speichern, wenn ein Fehler aufgetreten ist)
- Prüfen Sie die Werte, die in der securityresponseaddress, securityresponsepostcode und securityresponsesecuritycode Felder und fahren nur fort, wenn die geschäftlichen Anforderungen erfüllt sind. (Weitere Informationen finden Sie unten)
Es wird dringend empfohlen, die in der Antwort zurückgegebenen Sicherheitsfelder zu überprüfen und Transaktionen manuell zu untersuchen, bei denen die zurückgegebenen securityresponsesecuritycode ist "4" (was bedeutet, dass der Kunde einen Sicherheitscode eingegeben hat, der nicht mit dem Wert auf der Rückseite der Karte übereinstimmt).
Feld | Format | Beschreibung | |
securityresponseaddress XPath: /security/address |
Numerisch (1) |
"0" Nicht angegeben - Ihr System hat der erwerbenden Bank nicht die für die Durchführung dieser Prüfung erforderlichen Informationen geliefert. "1" Nicht geprüft - Die erwerbende Bank hat die von Ihnen in der Anfrage gemachten Angaben nicht überprüft. "2" Übereinstimmend - Die von Ihnen in der Anfrage angegebenen Informationen stimmen mit den Informationen überein, die die erwerbende Bank vom Zahlungsaussteller des Kunden erhalten hat. "4" Nicht übereinstimmend - Die von Ihnen in der Anfrage angegebenen Informationen stimmen nicht mit den Informationen überein, die die erwerbende Bank vom Zahlungsaussteller des Kunden erhalten hat. |
|
securityresponsepostcode XPath: /security/postcode |
Numerisch (1) | ||
securityresponsesecuritycode XPath: /security/securitycode |
Numerisch (1) |