Volg deze instructies als je Rekeningcontrolen gebruikt om de gegevens van de klant te verifiëren voordat je een betaling verwerkt.
Als je al e-commerce betalingen verwerkt met behulp van onze JavaScript Library, kan je bestaande oplossing worden bijgewerkt om ook Rekeningcontrole verzoeken in te dienen met minimale wijzigingen in de mark-up. Klik hier voor meer informatie.
Voorwaarden
De volgende inhoud gaat ervan uit dat u de noodzakelijke PCI-certificering hebt verkregen om gevoelige kaarthoudergegevens te verwerken en in te dienen in het verzoek aan onze Webservices API.
Om fraude te verminderen heeft Visa alle in het Verenigd Koninkrijk gevestigde handelaren met een Klant Categorie Code (MCC) van 6012 verplicht zijn extra velden mee te sturen in AUTH en ACCOUNTCHECK verzoeken.
Als deze velden niet worden ingevuld, kan de transactie niet succesvol worden verwerkt, met een "60025" errorcode die in het antwoord terugkomt.
- Rekeningcontrolen worden ondersteund voor winkeliers met een Trust Payments acquiring account. Als je een andere acquiring bank gebruikt, moet je contact opnemen met ons Support Team om te controleren of deze functie wordt ondersteund voordat je verder gaat.
- Rekeningcontrolen kan alleen worden uitgevoerd voor betalingsmethoden op basis van kaarten.
Mandaatoverwegingen
Visa en Mastercard hebben u opgedragen moet toestemming van de kaarthouder krijgen als ze kaartgegevens opslaan voor toekomstig gebruik, en dat deze moet worden gemarkeerd op het moment van de eerste autorisatie, door de credentialsonfile veld in uw verzoeken. Daartoe moet u ervoor zorgen dat het ingediende ACCOUNTCHECK verzoek het extra veld bevat. credentialsonfile, met waarde ingesteld op "1".
U moet ook alle volgende betalingen markeren die gebruik maken van eerder opgeslagen referenties, door het volgende op te nemen credentialsonfile veld in deze verzoeken met waarde "2".
Klik hier voor meer informatie over Referenties in bestand.
Alle bedrijven binnen de EER (Europese Economische Ruimte) zijn verplicht om 3-D Secure te gebruiken bij het verwerken van e-commerce Rekeningcontrolen, als onderdeel van het PSD2 -mandaat.
De volgende inhoud mag alleen worden gebruikt door merchants die Rekeningcontrolen verwerken die Mail Order Telephone Order (MOTO) betalingen zijn, Merchant Initiated Transactions (MIT), of andere workflows die zijn vrijgesteld van het PSD2 mandaat.
Uitgevoerde controles
Op alle verwerkte Rekeningcontrolen worden de eerste adresregel van de kaarthouder, de postcode van de kaarthouder en de beveiligingscode gecontroleerd om er zeker van te zijn dat de door de klant ingevoerde gegevens geldig zijn.
Klik hier voor meer informatie over deze controles.
Procesoverzicht
- Merchant dient ACCOUNTCHECK verzoek in.
- Trust Payments valideert het verzoek en neemt contact op met de bank.
- De wervende bank neemt contact op met de uitgever van de kaart om AVS en de beveiligingscode te controleren.
- Trust Payments ontvangt de resultaten van het verzoek en geeft deze door aan de handelaar.
- Merchant ontvangt en interpreteert dit antwoord.
Er worden geen middelen gereserveerd door ACCOUNTCHECK verzoeken
De rekening van de klant wordt niet gedebiteerd wanneer een ACCOUNTCHECK verzoek wordt uitgevoerd.
Net als bij standaard AUTH verzoeken, worden AVS en Security Code Checks uitgevoerd op ACCOUNTCHECK verzoeken. We raden aan onze documentatie over deze controles te lezen voordat je verder gaat.
ACCOUNTCHECK verzoek
De vereiste velden in een ACCOUNTCHECK verzoek zijn dezelfde als in een standaard AUTH verzoek, met de volgende verschillen:
- De baseamount kan "0" zijn. Een bedrag dat niet gelijk is aan nul kan worden ingediend - dit wordt geërfd in alle volgende verzoeken die verwijzen naar deze Rekeningcontrole als hun ouder, tenzij het wordt overschreven met een nieuw bedrag.
Specificatie veld
Veld | Formaat | Beschrijving | |
credentialsonfile XPath: /operation/credentialsonfile |
Numeriek (1) |
De toegestane waarden voor dit veld zijn 0, 1 en 2.
Dit is vereist voor transacties waarbij de merchant gebruik maakt van Gevevens in Bestand (CoF). Als de transactie niet in aanmerking komt voor CoF, of als u de referenties niet wilt gebruiken voor toekomstige transacties, kunt u dit veld weglaten. |
Over erfenis
U kunt elk veld opgeven dat u kunt opgeven in een AUTH verzoek en deze zullen worden geërfd door alle volgende ondergeschikt verzoeken. Klik hier voor meer informatie.
Hieronder volgt een voorbeeld van een ACCOUNTCHECK verzoek:
#!/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>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
ACCOUNTCHECK antwoord
Nadat het verzoek is verwerkt, ontvangt u één antwoord dat het antwoord op het verzoek ACCOUNTCHECK bevat:
{
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>
Behandeling van het antwoord
- Zorg ervoor dat de errorcode geretourneerde waarde is "0", wat wijst op succes. (U mag geen referenties opslaan als er een fout is opgetreden)
- Controleer de waarden die terugkomen in de securityresponseaddress, securityresponsepostcode en securityresponsesecuritycode velden en alleen doorgaan als aan de zakelijke eisen is voldaan. (Meer informatie hieronder)
Het wordt sterk aanbevolen de in het antwoord geretourneerde beveiligingsvelden te controleren en handmatig transacties te onderzoeken waarbij de geretourneerde securityresponsesecuritycode is "4" (wat betekent dat de klant een beveiligingscode heeft ingevoerd die niet overeenkomt met de waarde op de achterkant van de kaart).
Veld | Formaat | Beschrijving | |
securityresponseaddress XPath: /security/address |
Numeriek (1) |
"0" Niet opgegeven - Uw systeem heeft de verwervende bank niet de informatie verstrekt die nodig is om deze controle uit te voeren. "1" Niet gecontroleerd - De wervende bank heeft deze controle niet uitgevoerd op de door u in het verzoek verstrekte informatie. "2" Overeenkomend - De door u in het verzoek verstrekte informatie komt overeen met de informatie die de wervende bank heeft verkregen van de betaalinstelling van de klant. "4" Niet overeenkomend - De informatie die u in het verzoek hebt verstrekt, komt niet overeen met de informatie die de wervende bank heeft verkregen van de betaalinstelling van de klant. |
|
securityresponsepostcode XPath: /security/postcode |
Numeriek (1) | ||
securityresponsesecuritycode XPath: /security/securitycode |
Numeriek (1) |