Hieronder volgen twee voorbeeldworkflows voor wrijvingsloos transacties die met onze 3DS API worden verwerkt:
- Voorbeeld 1 - Wrijvingsloos - Nee threedmethodurl
- Voorbeeld 2 - Wrijvingsloos - Met threedmethodurl - Scroll naar dit voorbeeld
Zorg ervoor dat uw systeem de gedocumenteerde verzoeken kan verwerken en de teruggezonden antwoorden kan verwerken.
Om uw toepassing lokaal te testen, moet u uw testtoepassing uitvoeren met uw IPv4-adres in plaats van localhost. Na het opzoeken van je IPv4-adres moet je localhost in je browser vervangen door het opgehaalde IP-adres.
We raden je aan het onderstaande te lezen in combinatie met onze overzichtsstroom.
Open 3DS API in een nieuw tabblad.
Voorbeeld 1 - Wrijvingsloos - Nee threedmethodurl
Stap 1. THREEDLOOKUP
THREEDLOOKUP Voorbeeld aanvraag
Het volgende is een voorbeeld van een THREEDLOOKUP verzoek dat is ingediend via de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"accounttypedescription": "ECOM",
"baseamount": "1050",
"currencyiso3a": "GBP",
"expirydate": "01/2038",
"pan": "4900490000000501",
"requesttypedescription": "THREEDLOOKUP",
"sitereference": "test_3dsapi12345"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="THREEDLOOKUP">
<billing>
<payment>
<expirydate>01/2038</expirydate>
<pan>4900490000000501</pan>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<sitereference>test_3dsapi12345</sitereference>
</operation>
</request>
</requestblock>
THREEDLOOKUP Verzoek Veldspecificatie
THREEDLOOKUP Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd THREEDLOOKUP antwoord:
{
"requestreference": "W57-yag4w8fp",
"response": [{
"cachetoken": "eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1Ny04Y2RmNmY5MmZkY2MwMmZjZTY4YTUxYjc2NGQ5NTQxZDgzNDY5ZTFjMDIxMDJjNmM0NThmYWY5M2Q2MGQ1NWYyIn0=",
"debtrepayment": "0",
"errorcode": "0",
"errormessage": "Ok",
"maskedpan": "490049######0501",
"paymenttypedescription": "DELTA",
"requesttypedescription": "THREEDLOOKUP",
"threedstransactionid": "733ab129-1126-4b80-97a4-f3d8fee9c564",
"threedversion": "2.2.0",
"transactionstartedtimestamp": "2022-05-24 12:59:27"
}],
"secrand": "VqOIoVXOJP7rZuxw",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W57-aaf55j82</requestreference>
<response type="THREEDLOOKUP">
<billing>
<payment type="DELTA">
<pan>490049######0501</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<merchant>
<debtrepayment>0</debtrepayment>
</merchant>
<operation>
<cachetoken>eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1Ny03OTY4ZDM1Zjk1YzQyZGFlMGU5MGZiYTE4N2U4YTU4YWQyYjNiOGQzMGIxYjBlMGFhY2I3NzE2YjZlNDE4YTdkIn0=</cachetoken>
</operation>
<threedsecure>
<transactionid>d52c5270-40fa-456b-b7cd-8c2cbc8edb8c</transactionid>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:07:25</timestamp>
</response>
<secrand>dNs</secrand>
</responseblock>
THREEDLOOKUP Specificatie van antwoordvelden
Stap 2. Methode URL
Voer deze stap alleen uit als threedmethodurl wordt teruggestuurd in het antwoord op THREEDLOOKUP. Aangezien we het veld in deze stroom niet terugkrijgen, gaan we verder met stap 3.
Stap 3. THREEDQUERY
Het is misschien niet mogelijk om de customerip en accept (HTTP accept-header) van de browser zelf, daarom zul je een endpoint op je server moeten configureren, waarmee je een GET-verzoek kunt uitvoeren om de customerip en accept terug te sturen naar de browser.
THREEDQUERY Voorbeeld aanvraag
Het volgende is een voorbeeld van een THREEDQUERY verzoek dat is ingediend via de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"accept": "text/html,*/*",
"accounttypedescription": "ECOM",
"acquirerbin": "408912",
"baseamount": "1050",
"browsercolordepth": "24",
"browserjavaenabled": "false",
"browserjavascriptenabled": "true",
"browserlanguage": "en",
"browserscreenheight": "864",
"browserscreenwidth": "1536",
"browsertz": "120",
"cachetoken": "eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1Ny04Y2RmNmY5MmZkY2MwMmZjZTY4YTUxYjc2NGQ5NTQxZDgzNDY5ZTFjMDIxMDJjNmM0NThmYWY5M2Q2MGQ1NWYyIn0=",
"challengewindowsize": "02",
"currencyiso3a": "GBP",
"customerip": "1.2.3.4",
"expirydate": "01/2038",
"merchantnumber": "9990000001",
"pan": "4900490000000501",
"requesttypedescription": "THREEDQUERY",
"sitereference": "test_3dsapi12345",
"termurl": "https://webhook.site/8543eb65-e5c7-40fc-a475-a862a825a562",
"threedscompind": "U",
"threedstransactionid":"733ab129-1126-4b80-97a4-f3d8fee9c564",
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="THREEDQUERY">
<acquirer>
<acquirerbin>111111</acquirerbin>
</acquirer>
<merchant>
<termurl>https://webhook.site/8543eb65-e5c7-40fc-a475-a862a825a562</termurl>
</merchant>
<billing>
<payment>
<expirydate>01/2038</expirydate>
<pan>4900490000000501</pan>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<customer>
<accept>text/html,*/*</accept>
<browsercolordepth>24</browsercolordepth>
<browserjavaenabled>false</browserjavaenabled>
<browserjavascriptenabled>true</browserjavascriptenabled>
<browserlanguage>en</browserlanguage>
<browserscreenheight>864</browserscreenheight>
<browserscreenwidth>1536</browserscreenwidth>
<browsertz>120</browsertz>
<challengewindowsize>02</challengewindowsize>
<ip>1.2.3.4</ip>
<useragent>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36</useragent>
</customer>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<cachetoken>eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1Ny03OTY4ZDM1Zjk1YzQyZGFlMGU5MGZiYTE4N2U4YTU4YWQyYjNiOGQzMGIxYjBlMGFhY2I3NzE2YjZlNDE4YTdkIn0=</cachetoken>
<sitereference>test_3dsapi12345</sitereference>
</operation>
<threedsecure>
<threedscompind>N</threedscompind>
<transactionid>d52c5270-40fa-456b-b7cd-8c2cbc8edb8c</transactionid>
</threedsecure>
</request>
</requestblock>
THREEDQUERY Verzoek Veldspecificatie
THREEDQUERY Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd THREEDQUERY antwoord:
{
"requestreference": "W57-q6cmhhnv",
"response": [{
"accounttypedescription": "ECOM",
"acsreferencenumber": "ACS_REF",
"acstransid": "ffe304b3-c865-4e2a-a688-c711938a3ada",
"debtrepayment": "0",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "SecureTrading Test Issuer1",
"issuercountryiso2a": "OM",
"livestatus": "0",
"maskedpan": "490049######0501",
"merchantcategorycode": "0000",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant 3DS",
"merchantnumber": "9990000001",
"operatorname": "webservices@example.com",
"paymenttypedescription": "DELTA",
"requesttypedescription": "THREEDQUERY",
"settleduedate": "2022-05-24",
"settlestatus": "0",
"status": "Y",
"threedsservertransid": "733ab129-1126-4b80-97a4-f3d8fee9c564",
"threedversion": "2.2.0",
"transactionreference": "57-100-16",
"transactionstartedtimestamp": "2022-05-24 13:00:27"
}],
"secrand": "w0pgmN2A0aZXSWjj",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W60-enbex7tn</requestreference>
<response type="THREEDQUERY">
<billing>
<payment type="DELTA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>OM</issuercountry>
<pan>490049######0501</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<debtrepayment>0</debtrepayment>
<merchantcategorycode>0000</merchantcategorycode>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant 3DS</merchantname>
<merchantnumber>9990000001</merchantnumber>
<operatorname>webservices@example.com</operatorname>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
<settlement>
<settleduedate>2022-06-15</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<threedsecure>
<acsreferencenumber>ACS_REF</acsreferencenumber>
<acstransid>2d99ebb4-5d47-4e62-9d94-7cfbb2fa5f93</acstransid>
<enrolled>Y</enrolled>
<status>Y</status>
<threedsservertransid>d52c5270-40fa-456b-b7cd-8c2cbc8edb8c</threedsservertransid>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:09:26</timestamp>
<transactionreference>60-100-39</transactionreference>
</response>
<secrand>OcP5Q4</secrand>
</responseblock>
THREEDQUERY Specificatie van antwoordvelden
Stap 4. Uitdaging
Voer deze stap alleen uit als acsurl wordt teruggezonden in het antwoord THREEDQUERY . Aangezien we het veld in deze stroom niet terugkrijgen, gaan we verder met stap 5.
Stap 5. THREEDRESULT
THREEDRESULT Voorbeeld aanvraag
Het volgende is een voorbeeld van een THREEDRESULT verzoek dat is ingediend via de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"parenttransactionreference": "57-100-16",
"requesttypedescription": "THREEDRESULT",
"sitereference": "test_3dsapi12345"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="THREEDRESULT">
<operation>
<parenttransactionreference>60-100-39</parenttransactionreference>
<sitereference>test_3dsapi12345</sitereference>
</operation>
</request>
</requestblock>
THREEDRESULT Verzoek Veldspecificatie
THREEDRESULT Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd THREEDRESULT antwoord:
{
"requestreference": "W59-bq193wm4",
"response": [{
"accounttypedescription": "ECOM",
"baseamount": "1050",
"cavv": "dHJ1c3RwYXltZW50c2F1dGhlbnQ=",
"currencyiso3a": "GBP",
"debtrepayment": "0",
"eci": "05",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "SecureTrading Test Issuer1",
"issuercountryiso2a": "OM",
"livestatus": "0",
"maskedpan": "490049######0501",
"merchantcategorycode": "0000",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant 3DS",
"merchantnumber": "9990000001",
"operatorname": "webservices@example.com",
"parenttransactionreference": "57-100-16",
"paymenttypedescription": "DELTA",
"requesttypedescription": "THREEDRESULT",
"settleduedate": "2022-05-31",
"status": "Y",
"threeddirectorytransactionreference": "33457fbd-1fdd-4bbd-8396-362263e30dbd",
"threedversion": "2.2.0",
"transactionreference": "59-100-30",
"transactionstartedtimestamp": "2022-05-31 15:15:32"
}],
"secrand": "n",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W60-ra30r948</requestreference>
<response type="THREEDRESULT">
<billing>
<amount currencycode="GBP">1050</amount>
<payment type="DELTA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>OM</issuercountry>
<pan>490049######0501</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<debtrepayment>0</debtrepayment>
<merchantcategorycode>0000</merchantcategorycode>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant 3DS</merchantname>
<merchantnumber>9990000001</merchantnumber>
<operatorname>webservices@example.com</operatorname>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<parenttransactionreference>60-100-39</parenttransactionreference>
</operation>
<settlement>
<settleduedate>2022-06-15</settleduedate>
</settlement>
<threedsecure>
<cavv>dHJ1c3RwYXltZW50c2F1dGhlbnQ=</cavv>
<directorytransactionreference>be064933-c5bd-4f76-8198-cfd99b6bedf0</directorytransactionreference>
<eci>05</eci>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:09:58</timestamp>
<transactionreference>60-100-40</transactionreference>
</response>
<secrand>Sc2OKT9pSdnheo</secrand>
</responseblock>
THREEDRESULT Specificatie van antwoordvelden
Stap 6. AUTH
Zodra het 3-D Secure proces is voltooid, is het nu tijd om een transactie te verwerken. Indien u de betaling wenst uit te voeren via de TRU Connect gateway, dient uw server een AUTH verzoek in via Webservices API, inclusief extra velden die u hebt ontvangen in het THREEDRESULT antwoord.
AUTH Voorbeeld aanvraag
Hieronder volgt een voorbeeld van een AUTH verzoek dat is ingediend met de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"accounttypedescription":"ECOM",
"pan":"4900490000000501",
"expirydate":"01/2038",
"currencyiso3a":"GBP",
"requesttypedescriptions":["AUTH"],
"sitereference":"test_auth12347",
"baseamount":"1050",
"orderreference":"V2.2-TESTCASE1-VISA",
"parenttransactionreference": "59-100-30",
"securitycode":"123",
"cavv":"dHJ1c3RwYXltZW50c2F1dGhlbnQ=",
"eci":"05",
"xid":"",
"enrolled":"Y",
"status":"Y",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"33457fbd-1fdd-4bbd-8396-362263e30dbd"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<payment>
<expirydate>01/2038</expirydate>
<pan>4900490000000501</pan>
<securitycode>123</securitycode>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<sitereference>test_auth12347</sitereference>
<parenttransactionreference>59-100-30</parenttransactionreference>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
<threedsecure>
<cavv>dHJ1c3RwYXltZW50c2F1dGhlbnQ=</cavv>
<eci>05</eci>
<xid></xid>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
<directorytransactionreference>be064933-c5bd-4f76-8198-cfd99b6bedf0</directorytransactionreference>
</threedsecure>
</request>
</requestblock>
AUTH Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd AUTH antwoord:
{
"requestreference": "W59-316gfj11",
"response": [{
"accounttypedescription": "ECOM",
"acquirerresponsecode": "00",
"authcode": "TEST90",
"authmethod": "PRE",
"baseamount": "1050",
"cavv": "dHJ1c3RwYXltZW50c2F1dGhlbnQ=",
"currencyiso3a": "GBP",
"dccenabled": "0",
"debtrepayment": "0",
"eci": "05",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "SecureTrading Test Issuer1",
"issuercountryiso2a": "ZZ",
"livestatus": "0",
"maskedpan": "559139######0645",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant",
"merchantnumber": "00000000",
"operatorname": "webservices@example.com",
"orderreference": "V2.2-TESTCASE1-VISA",
"paymenttypedescription": "MASTERCARD",
"requesttypedescription": "AUTH",
"securityresponseaddress": "0",
"securityresponsepostcode": "0",
"securityresponsesecuritycode": "2",
"settleduedate": "2022-05-31",
"settlestatus": "0",
"splitfinalnumber": "1",
"status": "Y",
"threedversion": "2.2.0",
"tid": "27880001",
"transactionreference": "59-9-2450082",
"transactionstartedtimestamp": "2022-05-31 15:21:02"
}],
"secrand": "Utr2h6t6mz",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W57-4xtgkghe</requestreference>
<response type="AUTH">
<acquirerresponsecode>00</acquirerresponsecode>
<authcode>TEST46</authcode>
<billing>
<amount currencycode="GBP">1050</amount>
<dcc enabled="0"/>
<payment type="DELTA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>OM</issuercountry>
<pan>490049######0501</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<debtrepayment>0</debtrepayment>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant</merchantname>
<merchantnumber>00000000</merchantnumber>
<operatorname>webservices@example.com</operatorname>
<orderreference>My_Order_123</orderreference>
<tid>27880001</tid>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<authmethod>PRE</authmethod>
<splitfinalnumber>1</splitfinalnumber>
</operation>
<security>
<address>0</address>
<postcode>0</postcode>
<securitycode>2</securitycode>
</security>
<settlement>
<settleduedate>2022-06-15</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<threedsecure>
<cavv>dHJ1c3RwYXltZW50c2F1dGhlbnQ=</cavv>
<eci>05</eci>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:14:16</timestamp>
<transactionreference>57-9-2473737</transactionreference>
</response>
<secrand>HBFJeDnEIs6</secrand>
</responseblock>
Voorbeeld 2 - Wrijvingsloos - Met threedmethodurl
Stap 1. THREEDLOOKUP
THREEDLOOKUP Voorbeeld aanvraag
Het volgende is een voorbeeld van een THREEDLOOKUP verzoek dat is ingediend via de Webservices API:
{
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"accounttypedescription": "ECOM",
"baseamount": "1050",
"currencyiso3a": "GBP",
"expirydate": "01/2038",
"pan": "4900490000000618",
"requesttypedescription": "THREEDLOOKUP",
"sitereference": "test_3dsapi12345"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="THREEDLOOKUP">
<billing>
<payment>
<expirydate>01/2038</expirydate>
<pan>4900490000000618</pan>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<sitereference>test_3dsapi12345</sitereference>
</operation>
</request>
</requestblock>
THREEDLOOKUP Verzoek Veldspecificatie
THREEDLOOKUP Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd THREEDLOOKUP antwoord:
{
"requestreference": "W59-b5n3cdg8",
"response": [{
"cachetoken": "eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1OS01NjE4OWVkNzY4OGI3OTA0ZjA5ZDM2OTNmNDhhN2I3MDIyMjExNTFlMTc0OWMzZDIwM2U2ZmYyNTZkMmY4ZWIwIn0=",
"debtrepayment": "0",
"errorcode": "0",
"errormessage": "Ok",
"maskedpan": "490049######0618",
"paymenttypedescription": "DELTA",
"requesttypedescription": "THREEDLOOKUP",
"threedmethodurl": "https://acs-mock.3ds.trustpayments.com/3ds/mock/acs/method",
"threednotificationurl": "https://brw.3ds.sandbox.trustpayments.com/3dss/brw/notification/threeDSMethod/1d38d104-9384-489d-8ce7-2fad599d481a/41fd0370-5c5a-453b-a77c-601e8b048d29",
"threedstransactionid": "1d38d104-9384-489d-8ce7-2fad599d481a",
"threedversion": "2.2.0",
"transactionstartedtimestamp": "2022-06-15 11:45:56"
}],
"secrand": "wJ6Jlno3oldR",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W57-j37e5x5x</requestreference>
<response type="THREEDLOOKUP">
<billing>
<payment type="DELTA">
<pan>490049######0618</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<merchant>
<debtrepayment>0</debtrepayment>
</merchant>
<operation>
<cachetoken>eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1Ny1kOWQwZGJjZTZhZjcyZGFjZmM0NzRiOGFmYzljODFkNDM2NDY5MzM4YTQ1ZDA2ZGQ2YmM2N2FhZTllNTQ3NmM5In0=</cachetoken>
</operation>
<threedsecure>
<methodurl>https://acs-mock.3ds.trustpayments.com/3ds/mock/acs/method</methodurl>
<notificationurl>https://brw.3ds.sandbox.trustpayments.com/3dss/brw/notification/threeDSMethod/cdbc6120-db20-43b5-8261-c395840f54cc/92ea8131-bd1f-48e0-a216-11ad7e649512</notificationurl>
<transactionid>cdbc6120-db20-43b5-8261-c395840f54cc</transactionid>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:19:03</timestamp>
</response>
<secrand>Nlc324UkK</secrand>
</responseblock>
THREEDLOOKUP Specificatie van antwoordvelden
Stap 2. Methode URL
Voer deze stap alleen uit als threedmethodurl wordt teruggezonden in het antwoord op THREEDLOOKUP .
Wanneer de threedmethodurl wordt geretourneerd in het antwoord THREEDLOOKUP , moet je de ACS Method Call voltooien.
Maak eerst een verborgen HTML iframe in de browser van de kaarthouder. Maak vervolgens een HTML-formulier op je pagina (niet zichtbaar voor de gebruiker) met een verborgen invoerveld met de naam "threeDSMethodData".
Vul het veld "threeDSMethodData" met een Base64 JSON-object dat het threedstransactionid en threednotificationurl (teruggestuurd in stap 1).
Je JSON object zou er bijvoorbeeld zo uit moeten zien:
{
"threeDSServerTransID":"1d38d104-9384-489d-8ce7-2fad599d481a",
"threeDSMethodNotificationURL":"https://webhook.site/8543eb65-e5c7-40fc-a475-a862a825a562"
}
De standaard threednotificationurl waarde die wordt geretourneerd in de THREEDLOOKUP moet worden overschreven met uw eigen endpoint URL. Dit wordt gebruikt om een HTTPS POST te ontvangen van de ACS ter bevestiging van het voltooien van de Method URL stap.
Dit JSON object moet dan Base64 gecodeerd worden, wat resulteert in:
eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImU4ZmMwMzQ4LTEyMTItNGU1NC04MWI2LWY4NTc0ZDM2YmQzNSIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJodHRwczovL3dlYmhvb2suc2l0ZS84NTQzZWI2NS1lNWM3LTQwZmMtYTQ3NS1hODYyYTgyNWE1NjIifQ
Zorg ervoor dat achterliggende "="-tekens worden weggelaten bij het samenstellen van de POST.
Het volgende is een voorbeeld van de verborgen iframe en formulierstructuur:
<html>
<body>
<!-- Hidden iframe for 3DS Method call -->
<iframe id="threeDSMethodIframe" name="threeDSMethodIframe" style="display: none;"></iframe>
<!-- Form for submitting 3DS Method data within the iframe -->
<form id="threeDSMethodForm" action="https://acs-mock.3ds.trustpayments.com/3ds/mock/acs/method" method="POST" target="threeDSMethodIframe">
<!-- Hidden input field containing the base64-encoded 3DS Method data -->
<input type="hidden" name="threeDSMethodData" value="BASE64_ENCODED_METHOD_DATA">
</form>
<script>
// Automatically submit the form within the hidden iframe when the page loads
document.getElementById('threeDSMethodForm').submit();
</script>
</body>
</html>
Stel de actie van het formulier in op de opgegeven threedmethodurl en richt deze op het verborgen iframe. Verzend het formulier vervolgens met JavaScript:
document.getElementById('threeDSMethodForm').submit();
Wacht tot het antwoord is gepost naar je threeDSMethodNotificationURL. Als er binnen 10 seconden geen antwoord is ontvangen, beschouw dit dan als een mislukking en behandel de sessie van de klant dienovereenkomstig.
Ga op basis van het resultaat verder met het verificatieproces door naar de volgende stap te gaan.
Methode URL verzoek Veldspecificatie
Verplicht | Veld | Formaat | Lengte | Beschrijving |
Verplicht | threeDSMethodNotificationURL | URL |
Niet gedefinieerd |
De endpoint URL die de melding van 3DS Method completion van de ACS zal ontvangen. Opmerking: U moet de waarde van de threednotificationurl in het antwoord op THREEDLOOKUP overschrijven. Dit wordt verzonden in het initiële verzoek aan de ACS van de 3DS-verzoeker die de 3DS-methode uitvoert. |
Verplicht | threeDSServerTransID | Alfanumeriek, inclusief koppeltekens |
36 |
Universeel unieke transactie-identificatie die door de 3DS-server wordt toegekend om een enkele transactie te identificeren. De threeDSServerTransID wordt ontleend aan de waarde die in het threedstransactionid veld in het antwoord op THREEDLOOKUP . |
HTTPS POST ontvangen van ACS naar threeDSMethodNotificationURL
De threeDSMethodNotificationURL ontvangt de parameter threeDSMethodData, een base64 gecodeerde JSON-string die de threeDSServerTransID.
"threeDSMethodData"="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhYzdjYWE3LWFhNDItMjY2My03OTFiLTJhYzA1YTU0MmM0YSJ9"
Decoded threeDSMethodData:
{"threeDSServerTransID":"1d38d104-9384-489d-8ce7-2fad599d481a"}
Het kan tot 10 seconden duren voordat de ACS de HTTPS POST naar je threeDSMethodNotificationURL heeft verzonden.
- Als u dit binnen 10 seconden van de ACS ontvangt, ga dan verder met stap 3 (3-D Query) en stel threedscompind op "Y" in het THREEDQUERY verzoek.
- Als u niet ontvangt van de ACS binnen 10 seconden, ga dan verder met stap 3 (3-D Query) en stel threedscompind op "N" in het THREEDQUERY verzoek. (Het is mogelijk dat u het bericht nog ontvangt nadat 10 seconden zijn verstreken, maar dit kan worden genegeerd).
De waarde van de base64-gecodeerde threeDSMethodData moet ontdaan zijn van =-tekens.
Methode URL Specificatie van antwoordvelden
Verplicht | Veld | Formaat | Lengte | Beschrijving |
Geretourneerd |
threeDSMethodData |
Base64gecodeerde JSON-string |
N/A |
Deze bevat de threeDSServerTransID, dat is een universeel unieke transactie-identificatie die door de 3DS-server wordt toegekend om een enkele transactie te identificeren. |
Stap 3. THREEDQUERY
Het is misschien niet mogelijk om de customerip en accept (HTTP accept-header) van de browser zelf, daarom zul je een endpoint op je server moeten configureren, waarmee je een GET-verzoek kunt uitvoeren om de customerip en accept terug te sturen naar de browser.
THREEDQUERY Voorbeeld aanvraag
Het volgende is een voorbeeld van een THREEDQUERY verzoek dat is ingediend via de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"accept": "text/html,*/*",
"accounttypedescription": "ECOM",
"acquirerbin": "111111",
"baseamount": "1050",
"browsercolordepth": "24",
"browserjavaenabled": "false",
"browserjavascriptenabled": "true",
"browserlanguage": "en",
"browserscreenheight": "864",
"browserscreenwidth": "1536",
"browsertz": "120",
"cachetoken": "eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1OS01NjE4OWVkNzY4OGI3OTA0ZjA5ZDM2OTNmNDhhN2I3MDIyMjExNTFlMTc0OWMzZDIwM2U2ZmYyNTZkMmY4ZWIwIn0=",
"challengewindowsize": "02",
"currencyiso3a": "GBP",
"customerip": "1.2.3.4",
"expirydate": "01/2038",
"pan": "4900490000000618",
"requesttypedescription": "THREEDQUERY",
"sitereference": "test_3dsapi12345",
"termurl": "https://webhook.site/8543eb65-e5c7-40fc-a475-a862a825a562",
"threedstransactionid": "1d38d104-9384-489d-8ce7-2fad599d481a",
"threedscompind": "Y",
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="THREEDQUERY">
<acquirer>
<acquirerbin>111111</acquirerbin>
</acquirer>
<merchant>
<termurl>https://webhook.site/8543eb65-e5c7-40fc-a475-a862a825a562</termurl>
</merchant>
<billing>
<payment>
<expirydate>01/2038</expirydate>
<pan>4900490000000618</pan>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<customer>
<accept>text/html,*/*</accept>
<browsercolordepth>24</browsercolordepth>
<browserjavaenabled>false</browserjavaenabled>
<browserjavascriptenabled>true</browserjavascriptenabled>
<browserlanguage>en</browserlanguage>
<browserscreenheight>864</browserscreenheight>
<browserscreenwidth>1536</browserscreenwidth>
<browsertz>120</browsertz>
<challengewindowsize>02</challengewindowsize>
<ip>1.2.3.4</ip>
<useragent>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36</useragent>
</customer>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<cachetoken>eyJkYXRhY2VudGVydXJsIjogImh0dHBzOi8vd2Vic2VydmljZXMuc2VjdXJldHJhZGluZy5uZXQiLCAiY2FjaGV0b2tlbiI6ICI1Ny1kOWQwZGJjZTZhZjcyZGFjZmM0NzRiOGFmYzljODFkNDM2NDY5MzM4YTQ1ZDA2ZGQ2YmM2N2FhZTllNTQ3NmM5In0=</cachetoken>
<sitereference>test_3dsapi12345</sitereference>
</operation>
<threedsecure>
<threedscompind>Y</threedscompind>
<transactionid>cdbc6120-db20-43b5-8261-c395840f54cc</transactionid>
</threedsecure>
</request>
</requestblock>
THREEDQUERY Verzoek Veldspecificatie
THREEDQUERY Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd THREEDQUERY antwoord:
{
"requestreference": "W56-rpkhc1fr",
"response": [{
"accounttypedescription": "ECOM",
"acsreferencenumber": "ACS_REF",
"acstransid": "2d99ebb4-5d47-4e62-9d94-7cfbb2fa5f93",
"debtrepayment": "0",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "SecureTrading Test Issuer1",
"issuercountryiso2a": "OM",
"livestatus": "0",
"maskedpan": "490049######0618",
"merchantcategorycode": "0000",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant 3DS",
"merchantnumber": "9990000001",
"operatorname": "webservices@example.com",
"paymenttypedescription": "DELTA",
"requesttypedescription": "THREEDQUERY",
"settleduedate": "2022-06-15",
"settlestatus": "0",
"status": "Y",
"threedsservertransid": "1d38d104-9384-489d-8ce7-2fad599d481a",
"threedversion": "2.2.0",
"transactionreference": "56-100-36",
"transactionstartedtimestamp": "2022-06-15 11:52:18"
}],
"secrand": "sacb8gYe",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W60-7bgbnxmr</requestreference>
<response type="THREEDQUERY">
<billing>
<payment type="DELTA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>OM</issuercountry>
<pan>490049######0618</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<debtrepayment>0</debtrepayment>
<merchantcategorycode>0000</merchantcategorycode>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant 3DS</merchantname>
<merchantnumber>9990000001</merchantnumber>
<operatorname>webservices@example.com</operatorname>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
<settlement>
<settleduedate>2022-06-15</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<threedsecure>
<acsreferencenumber>ACS_REF</acsreferencenumber>
<acstransid>ae6432dd-cb89-4be7-8de8-45e0afaa15b0</acstransid>
<enrolled>Y</enrolled>
<status>Y</status>
<threedsservertransid>cdbc6120-db20-43b5-8261-c395840f54cc</threedsservertransid>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:23:55</timestamp>
<transactionreference>60-100-41</transactionreference>
</response>
<secrand>cAdZk4S8tP</secrand>
</responseblock>
THREEDQUERY Specificatie van antwoordvelden
Stap 4. Uitdaging
Voer deze stap alleen uit als acsurl wordt teruggezonden in het antwoord THREEDQUERY . Aangezien we het veld in deze stroom niet terugkrijgen, gaan we verder met stap 5.
Stap 5. THREEDRESULT
THREEDRESULT Voorbeeld aanvraag
Het volgende is een voorbeeld van een THREEDRESULT verzoek dat is ingediend via de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"parenttransactionreference": "56-100-36",
"requesttypedescription": "THREEDRESULT",
"sitereference": "test_3dsapi12345"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="THREEDRESULT">
<operation>
<parenttransactionreference>60-100-41</parenttransactionreference>
<sitereference>test_3dsapi12345</sitereference>
</operation>
</request>
</requestblock>
THREEDRESULT Verzoek Veldspecificatie
THREEDRESULT Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd THREEDRESULT antwoord:
{
"requestreference": "W59-8b4e3a4h",
"response": [{
"accounttypedescription": "ECOM",
"baseamount": "1050",
"cavv": "dHJ1c3RwYXltZW50c2F1dGhlbnQ=",
"currencyiso3a": "GBP",
"debtrepayment": "0",
"eci": "05",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "SecureTrading Test Issuer1",
"issuercountryiso2a": "OM",
"livestatus": "0",
"maskedpan": "490049######0618",
"merchantcategorycode": "0000",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant 3DS",
"merchantnumber": "9990000001",
"operatorname": "webservices@example.com",
"parenttransactionreference": "56-100-36",
"paymenttypedescription": "DELTA",
"requesttypedescription": "THREEDRESULT",
"settleduedate": "2022-06-15",
"status": "Y",
"threeddirectorytransactionreference": "be064933-c5bd-4f76-8198-cfd99b6bedf0",
"threedversion": "2.2.0",
"transactionreference": "59-100-36",
"transactionstartedtimestamp": "2022-06-15 11:52:48"
}],
"secrand": "8RuFJUZNt",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W57-1fe5va86</requestreference>
<response type="THREEDRESULT">
<billing>
<amount currencycode="GBP">1050</amount>
<payment type="DELTA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>OM</issuercountry>
<pan>490049######0618</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<debtrepayment>0</debtrepayment>
<merchantcategorycode>0000</merchantcategorycode>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant 3DS</merchantname>
<merchantnumber>9990000001</merchantnumber>
<operatorname>webservices@example.com</operatorname>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<parenttransactionreference>60-100-41</parenttransactionreference>
</operation>
<settlement>
<settleduedate>2022-06-15</settleduedate>
</settlement>
<threedsecure>
<cavv>dHJ1c3RwYXltZW50c2F1dGhlbnQ=</cavv>
<directorytransactionreference>0a458425-fea5-41a4-b094-159a69114dbe</directorytransactionreference>
<eci>05</eci>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:24:24</timestamp>
<transactionreference>57-100-38</transactionreference>
</response>
<secrand>Mm</secrand>
</responseblock>
THREEDRESULT Specificatie van antwoordvelden
Stap 6. AUTH
Zodra het 3-D Secure proces is voltooid, is het nu tijd om een transactie te verwerken. Indien u de betaling wenst uit te voeren via de TRU Connect gateway, dient uw server een AUTH verzoek in via Webservices API, inclusief extra velden die u hebt ontvangen in het THREEDRESULT antwoord.
AUTH Voorbeeld aanvraag
Hieronder volgt een voorbeeld van een AUTH verzoek dat is ingediend met de Webservices API:
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"accounttypedescription":"ECOM",
"pan":"4900490000000618",
"expirydate":"01/2038",
"currencyiso3a":"GBP",
"requesttypedescriptions":["AUTH"],
"sitereference":"test_auth12347",
"baseamount":"1050",
"orderreference":"V2.2-TESTCASE12-VISA",
"parenttransactionreference": "59-100-36",
"securitycode":"123",
"cavv":"dHJ1c3RwYXltZW50c2F1dGhlbnQ=",
"eci":"05",
"xid":"",
"enrolled":"Y",
"status":"Y",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"65f1188b-4961-4590-a3e7-f350c22c1d45"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<payment>
<expirydate>01/2038</expirydate>
<pan>4900490000000618</pan>
<securitycode>123</securitycode>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<sitereference>test_auth12347</sitereference>
<parenttransactionreference>59-100-36</parenttransactionreference>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
<threedsecure>
<cavv>dHJ1c3RwYXltZW50c2F1dGhlbnQ=</cavv>
<eci>05</eci>
<xid></xid>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
<directorytransactionreference>0a458425-fea5-41a4-b094-159a69114dbe</directorytransactionreference>
</threedsecure>
</request>
</requestblock>
AUTH Voorbeeld van een antwoord
Het volgende is een voorbeeld van een teruggestuurd AUTH antwoord:
{
"requestreference": "W56-wyqmtr42",
"response": [{
"accounttypedescription": "ECOM",
"acquirerresponsecode": "00",
"authcode": "TEST97",
"authmethod": "PRE",
"baseamount": "1050",
"cavv": "dHJ1c3RwYXltZW50c2F1dGhlbnQ=",
"currencyiso3a": "GBP",
"dccenabled": "0",
"debtrepayment": "0",
"eci": "05",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "SecureTrading Test Issuer1",
"issuercountryiso2a": "OM",
"livestatus": "0",
"maskedpan": "490049######0618",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant",
"merchantnumber": "00000000",
"operatorname": "webservices@example.com",
"orderreference": "V2.2-TESTCASE12-VISA",
"paymenttypedescription": "DELTA",
"requesttypedescription": "AUTH",
"securityresponseaddress": "0",
"securityresponsepostcode": "0",
"securityresponsesecuritycode": "2",
"settleduedate": "2022-06-15",
"settlestatus": "0",
"splitfinalnumber": "1",
"status": "Y",
"threedversion": "2.2.0",
"tid": "27880001",
"transactionreference": "56-9-2447012",
"transactionstartedtimestamp": "2022-06-15 11:53:41"
}],
"secrand": "rHL1xs6jJC",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W60-q0hphpw8</requestreference>
<response type="AUTH">
<acquirerresponsecode>00</acquirerresponsecode>
<authcode>TEST68</authcode>
<billing>
<amount currencycode="GBP">1050</amount>
<dcc enabled="0"/>
<payment type="DELTA">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>OM</issuercountry>
<pan>490049######0618</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<debtrepayment>0</debtrepayment>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant</merchantname>
<merchantnumber>00000000</merchantnumber>
<operatorname>webservices@example.com</operatorname>
<orderreference>My_Order_123</orderreference>
<tid>27880001</tid>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<authmethod>PRE</authmethod>
<splitfinalnumber>1</splitfinalnumber>
</operation>
<security>
<address>0</address>
<postcode>0</postcode>
<securitycode>2</securitycode>
</security>
<settlement>
<settleduedate>2022-06-15</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<threedsecure>
<cavv>dHJ1c3RwYXltZW50c2F1dGhlbnQ=</cavv>
<eci>05</eci>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
</threedsecure>
<timestamp>2022-06-15 15:25:30</timestamp>
<transactionreference>60-9-2475947</transactionreference>
</response>
<secrand>0nifx</secrand>
</responseblock>
Terug: 3DS API afhandelen Volgende: Overzicht Challenge Flow-proces
Verwante artikelen
Met behulp van uw eigen MPI
Aanvullende documentatie voor verkopers die hun eigen MPI gebruiken.