Wat is een Merchant Initiated Transaction (MIT)?
Er is sprake van een Merchant Initiated Transaction (MIT) wanneer een winkelier een transactie initieert met behulp van opgeslagen kaartgegevens wanneer de kaarthouder geen directe interactie heeft met de winkelier op het punt autorisatie. Zie hieronder de Merchant Initiated Transaction (MIT) redenen die wij ondersteunen en richtlijnen voor de criteria voor gebruik.
Voordelen van ondersteuning MIT
- Betalingsgegevens hoeven door de klant slechts eenmaal te worden ingevoerd op het moment van aankoop.
- Verwerk herhaalbetalingen voor klanten zonder dat je hun kaartgegevens op je eigen systeem hoeft op te slaan voor toekomstig gebruik. Betalingsgegevens worden veilig opgeslagen op onze servers.
- Een Merchant Initiated Transaction (MIT) wordt alleen verwerkt als er een verzoek is ingediend door uw systeem. Merchants kunnen kiezen wanneer Merchant Initiated Transactions (MIT) worden verwerkt.
Merchant geïnitieerde transactie (MIT) Soorten en redenen
"A" - Herautorisatie
Dit wordt gebruikt om een eerder succesvol geautoriseerd bedrag opnieuw te autoriseren dat niet is verrekend voordat het succesvolle autorisatie is verlopen. De kaarthouder plaatst bijvoorbeeld een bestelling op 1 januari en de poging autorisatie die op 1 januari is ingediend, geeft een geautoriseerd antwoord. De verkoper wijzigt de status van de succesvolle autorisatie' afwikkeling in opgeschort omdat hij de bestelde goederen/diensten pas op 1 februari kan verkrijgen en leveren, waarna de oorspronkelijke succesvolle autorisatie is verlopen. De oudertransactie moet succesvol zijn en mag geen Rekeningcontrole zijn.
"C" - Onvoorziene betaling
Dit wordt gebruikt om een ongeplande Merchant Initiated Transaction (MIT) te verwerken. Bijvoorbeeld om een rekening op te waarderen tot een overeengekomen minimumsaldo als het saldo van de rekening onder het overeengekomen minimumsaldo komt dat moet worden gehandhaafd. De bovenliggende transactie of Rekeningcontrole moet succesvol zijn.
"D" - Uitgestelde kosten
Dit wordt gebruikt om een niet-geplande Merchant Initiated Transaction (MIT) te verwerken om vertraagde kosten te dekken die niet bekend waren bij de handelaar op het moment dat het product of de dienst werd besteld door de kaarthouder, bijvoorbeeld om extra leveringskosten te betalen die niet bekend waren op het moment van de vorige autorisatie. De voorafgaande transactie moet succesvol zijn en mag geen Rekeningcontrole zijn.
"S" - Opnieuw indienen
Dit wordt gebruikt om een eerder geweigerde autorisatie poging opnieuw te autoriseren. Bijvoorbeeld, wanneer een merchant uitgestelde autorisatie ondersteunt, is het niet mogelijk om de kaarthouder onmiddellijk op de hoogte te stellen van de weigering en om een alternatieve betaalmethode aan te vragen, omdat de kaarthouder niet langer een directe interactie heeft op het autorisatie punt. In dit scenario kan de winkelier de Merchant Initiated Transaction (MIT) "Resubmission" waarde gebruiken om autorisatie opnieuw te proberen voor het eerder geweigerde bedrag. De merchant mag maximaal drie keer opnieuw proberen. De bovenliggende transactie moet geweigerd zijn en mag geen Rekeningcontrole zijn.
"X" - No-show
Dit wordt gebruikt om autorisatie aan te vragen voor een overeengekomen bedrag wanneer de kaarthouder niet komt opdagen om een aankoop te voltooien voor een eerder geboekt product of dienst. Bijvoorbeeld als een kaarthouder niet komt opdagen bij een reservering voor een restaurant, hotel of huurauto. De bovenliggende transactie of Rekeningcontrole moet succesvol zijn.
Procesoverzicht
-
De kaarthouder voert zijn kaartgegevens in en gaat akkoord met de opslag en/of het gebruik van zijn kaartgegevens voor de verwerking van Merchant Initiated Transactions (MIT).
-
Wanneer de klant instemt met het opslaan van zijn kaartgegevens voor het verwerken van Merchant Initiated Transactions (MIT), kan de merchant op dit punt al dan niet geld van de kaarthouder verlangen. Bijvoorbeeld:
Scenario 1
De kaarthouder betaalt £10 inschrijfgeld als een ECOM transactie op het moment dat de kaartgegevens worden verstrekt/vastgelegd.Scenario 2
De verkoper vereist geen betaling op het moment dat de kaartgegevens worden verstrekt/vastgelegd.
- Wanneer de merchant klaar is om de eerste of volgende Merchant Initiated Transaction in rekening te brengen (MIT), dient de merchant een Webservices API AUTH verzoek in of gebruikt Portal om de Merchant Initiated Transaction te verwerken (MIT).
Verzoek van ouder
Dit gedeelte beschrijft de initiële aanvraag die uw systeem moet verwerken. U kunt de betalingsgegevens die in dit verzoek zijn opgegeven overnemen in volgende Merchant Initiated Transactions.
Configuratie van bovengeschikte verzoek
Vouw de relevante sectie hieronder uit om te leren hoe u het bovengeschikte verzoek kunt configureren met de interface van uw voorkeur.
Payment Pages is onze volledig gehoste kassaoplossing. Als je niet bekend bent met onze oplossing Payment Pages , klik dan hier voor meer informatie en om aan de slag te gaan.
Om de THREEDQUERY dan ACCOUNTCHECK flow te ondersteunen, moeten Payment Pages klanten de Geavanceerd Bericht functie gebruiken. Klik hier voor meer informatie.
De THREEDQUERY dan AUTH stroom wordt uitgevoerd door het verwerken van een standaard, 3-D Secure geauthenticeerde transactie met Payment Pages, met extra velden in de POST, zoals hieronder beschreven.
<html>
<head>
</head>
<body>
<!--YOUR HTML-->
<form method="POST" action="<DOMAIN>/process/payments/choice">
<input type="hidden" name="credentialsonfile" value="1">
<input type="hidden" name="currencyiso3a" value="USD">
<input type="hidden" name="mainamount" value="100.00">
<input type="hidden" name="sitereference" value="test_site12345">
<input type="hidden" name="sitesecurity" value="hee879a9ab97753b3a768925d50842f10e19fea03fef0b820026b6df92d415866">
<input type="hidden" name="sitesecuritytimestamp" value="2019-05-28 14:22:37">
<input type="hidden" name="stprofile" value="default">
<input type="hidden" name="version" value="2">
<input type="submit" value="Pay">
</form>
</body>
</html>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
Specificatie veld
Veld | Formaat | Beschrijving | |
mainamount | Numeriek (14) |
Het met dit verzoek samenhangende bedrag in hoofdeenheden, met decimalen gescheiden door komma's/decimale punt. Bijv . €10,99 wordt ingediend als "10.99" en ¥246 wordt ingediend als "246". Dit bedrag wordt onmiddellijk gereserveerd op de bankrekening van de klant. Deze waarde wordt geërfd in alle ondergeschikt verzoeken die van dit bovengeschikte verzoek erven, tenzij het veld handmatig wordt overschreven. |
|
credentialsonfile | Numeriek (1) | Visa en Mastercard hebben bepaald dat u de toestemming van de kaarthouder moet krijgen voordat u kaartgegevens voor toekomstig gebruik opslaat. Vervolgens moet u credentials die moeten worden opgeslagen voor later, op passende wijze identificeren door een Gevevens in Bestand (CoF) vlag toe te kennen om dit aan te geven. Daarom moet u altijd credentialsonfile met waarde "1" in het bovengeschikte verzoek. | |
currencyiso3a | Alpha (3) | De transactie Munt. Dit moet hetzelfde blijven in alle toekomstige ondergeschikt verzoeken die van dit ouderverzoek erven. | |
sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. | |
sitesecurity |
Site beveiliging hash |
Gebruikt om de beveiligingshash van de aanvraagsite in de POST in te dienen. | |
sitesecuritytimestamp |
Datum JJJJ-MM-DD hh:mm:ss |
Zo nauwkeurig mogelijk het tijdstempel dat aangeeft wanneer de betalingssessie van de klant is begonnen. De klant heeft vanaf het opgegeven tijdstip 3 uur de tijd om de betaling te voltooien.
Extra overwegingen:
|
|
stprofile |
Alfanumeriek (20)
|
Wordt gebruikt om de styling te specificeren die wordt gebruikt om de Payment Pages weer te geven. Wanneer het standaard uiterlijk wordt gebruikt, wordt dit ingesteld op "default". Klik hier voor meer informatie. |
Antwoord
U moet ervoor zorgen dat uw systeem de transactionreference veld dat in de browserredirect aan het einde van de kassasessie wordt teruggestuurd (indien geconfigureerd), en/of de URL-kennisgeving (indien geconfigureerd), omdat hiernaar moet worden verwezen in het ondergeschikt verzoek dat later wordt ingediend.
Onze JavaScript Library biedt middelen om u te helpen snel uw eigen gestroomlijnde kassaoplossing op het web te bouwen. Als u niet bekend bent met onze JavaScript Library oplossing, klik dan hier voor meer informatie en om aan de slag te gaan.
- Zowel de [“THREEDQUERY”,”AUTH”] en [“THREEDQUERY”,”ACCOUNTCHECK”] Ouderverzoeken volgen een vergelijkbare specificatie als die van een standaardbetaling die via onze JavaScript Library wordt verwerkt, maar zijn onderhevig aan andere vereisten wanneer ze worden gebruikt als onderdeel van een Merchant Initiated Transactions-oplossing.
- Deze wijzigingen worden aangebracht binnen de payload van het JWT.
- Zie het voorbeeld en de veldspecificatie hieronder voor meer informatie.
{
"payload":{
"accounttypedescription":"ECOM",
"baseamount":"1050",
"credentialsonfile":"1",
"currencyiso3a":"GBP",
"requesttypedescriptions":["THREEDQUERY","AUTH"]
"sitereference":"test_site12345"
},
"iat":1559033849,
"iss":"jwt.user"
}
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription | Alpha (20) |
Geef "ECOM" op om een e-commercetransactie aan te geven. We raden u aan contact op te nemen met ons ondersteuningsteam voor advies over welke accounttypewaarden worden ondersteund op uw site referentie. |
|
baseamount | Numeriek (13) |
Het bedrag voor dit verzoek in basiseenheden, zonder komma's of decimalen. Bv. €10,99 wordt ingediend als "1099" maar 246¥ wordtingediend als "246".
Deze waarde wordt geërfd in alle ondergeschikt verzoeken die van dit bovengeschikte verzoek erven, tenzij het veld handmatig wordt overschreven. |
|
credentialsonfile | Numeriek (1) |
Visa en Mastercard hebben bepaald dat u de toestemming van de kaarthouder moet krijgen voordat u kaartgegevens voor toekomstig gebruik opslaat. Vervolgens moet u credentials die moeten worden opgeslagen voor later, op passende wijze identificeren door een Gevevens in Bestand (CoF) vlag toe te kennen om dit aan te geven. Daarom moet u altijd credentialsonfile met waarde "1" in het bovengeschikte verzoek.
De hier ingediende waarde wordt teruggestuurd in het antwoord JWT. |
|
currencyiso3a | Alpha (3) | De transactie Munt. Dit moet hetzelfde blijven in alle toekomstige ondergeschikt verzoeken die van dit ouderverzoek erven. | |
requesttypedescriptions | Lijst |
De te verwerken verzoektypes. Voor de bovengeschikte verzoek moet dit zijn [“THREEDQUERY”,”AUTH”] of [“THREEDQUERY”,”ACCOUNTCHECK”] |
|
sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. |
Antwoord
Het teruggezonden antwoord JWT volgt dezelfde specificatie als bij de verwerking van een standaardbetaling. Van bijzonder belang is dat uw systeem de transactionreference teruggestuurd, omdat hiernaar moet worden verwezen in het ondergeschikt verzoek dat later wordt ingediend. Klik hier voor meer informatie over het decoderen van het JWT-antwoord.
Onze Mobile SDK biedt hulpmiddelen waarmee u snel een gestroomlijnde kassa-oplossing kunt inbouwen in uw mobiele app. Als u niet bekend bent met onze Mobile SDK-oplossing, klik dan hier voor meer informatie en om aan de slag te gaan.
- Zowel de [“THREEDQUERY”,”AUTH”] en [“THREEDQUERY”,”ACCOUNTCHECK”] Ouderverzoeken volgen een vergelijkbare specificatie als die van een standaardbetaling die wordt verwerkt met onze Mobile SDK, maar zijn onderhevig aan andere vereisten wanneer ze worden gebruikt als onderdeel van een Merchant Initiated Transactions-oplossing.
- Deze wijzigingen worden aangebracht binnen de payload van het JWT.
- Zie het voorbeeld en de veldspecificatie hieronder voor meer informatie.
{
"payload":{
"accounttypedescription":"ECOM",
"baseamount":"1050",
"credentialsonfile":"1",
"currencyiso3a":"GBP",
"requesttypedescriptions":["THREEDQUERY","AUTH"]
"sitereference":"test_site12345",
"termurl":"https://payments.securetrading.net/process/payments/mobilesdklistener"
},
"iat":1559033849,
"iss":"jwt.user"
}
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription | Alpha (20) |
Geef "ECOM" op om een e-commercetransactie aan te geven. We raden u aan contact op te nemen met ons ondersteuningsteam voor advies over welke accounttypewaarden worden ondersteund op uw site referentie. |
|
baseamount | Numeriek (13) |
Het bedrag voor dit verzoek in basiseenheden, zonder komma's of decimalen. Bv. €10,99 wordt ingediend als "1099" maar 246¥ wordtingediend als "246".
Deze waarde wordt geërfd in alle ondergeschikt verzoeken die van dit bovengeschikte verzoek erven, tenzij het veld handmatig wordt overschreven. |
|
credentialsonfile | Numeriek (1) |
Visa en Mastercard hebben bepaald dat u de toestemming van de kaarthouder moet krijgen voordat u kaartgegevens voor toekomstig gebruik opslaat. Vervolgens moet u credentials die moeten worden opgeslagen voor later, op passende wijze identificeren door een Gevevens in Bestand (CoF) vlag toe te kennen om dit aan te geven. Daarom moet u altijd redentialsonfile met waarde "1" in het bovengeschikte verzoek.
De hier ingediende waarde wordt teruggestuurd in het antwoord JWT. |
|
currencyiso3a | Alpha (3) | De transactie Munt. Dit moet hetzelfde blijven in alle toekomstige ondergeschikt verzoeken die van dit ouderverzoek erven. | |
requesttypedescriptions | Lijst |
De te verwerken verzoektypes. Voor de bovengeschikte verzoek moet dit zijn [“THREEDQUERY”,”AUTH”] of [“THREEDQUERY”,”ACCOUNTCHECK”] |
|
sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. | |
termurl | URL (1024) |
Deze URL wordt gebruikt om de kaartuitgever te instrueren waarheen de browser van de klant moet worden gestuurd nadat hij is geverifieerd op de ACS van de kaartuitgever. U moet de volgende URL in dit veld invoeren wanneer u 3-D Secure uitvoert: https://payments.securetrading.net/process/payments/mobilesdklistener |
Antwoord
Het teruggezonden antwoord JWT volgt dezelfde specificatie als bij de verwerking van een standaardbetaling. Van bijzonder belang is dat uw systeem de transactionreference teruggestuurd, omdat hiernaar moet worden verwezen in het ondergeschikt verzoek dat later wordt ingediend. Klik hier voor meer informatie over het decoderen van het JWT-antwoord.
Onze Webservices API is een krachtige server-naar-server oplossing voor betalingsverwerking die meerdere berichttypes ondersteunt. Als u niet bekend bent met onze Webservices API, klik dan hier voor meer informatie en om aan de slag te gaan.
- Het onderstaande voorbeeld is een AUTH verzoek dat kan worden gebruikt om de eerste betaling in de Merchant Initiated Transactions flow te verwerken.
- De accounttypedescription is "ECOM" om aan te geven dat de transactie is uitgevoerd via uw website.
- Als u een Merchant Initiated Transactions-overeenkomst wilt starten zonder een betaling te verwerken, kunt u de requesttypedescriptions waarde wijzigen in "ACCOUNTCHECK".
#!/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",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123",
"cavv":"Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=",
"eci":"05",
"enrolled":"Y",
"status":"Y",
"threedversion":"2.2.0", "threeddirectorytransactionreference":"f00e1111-0011-00a6-ab00-a00000a00000",
"credentialsonfile": "1"
}
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',
'pan' => '4111111111111111',
'expirydate' => '12/2020',
'securitycode' => '123',
'cavv' => 'Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=',
'eci' => '05',
'enrolled' => 'Y',
'status' => 'Y',
'threedversion' => '2.2.0',
'threeddirectorytransactionreference' => 'f00e1111-0011-00a6-ab00-a00000a00000',
'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": ["AUTH"],
"sitereference": "test_site12345",
"baseamount": "1050",
"orderreference": "My_Order_123",
"accounttypedescription": "ECOM",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123",
"cavv":"Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=",
"eci":"05",
"enrolled":"Y",
"status":"Y",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"f00e1111-0011-00a6-ab00-a00000a00000",
"credentialsonfile": "1"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescriptions":["AUTH"],
"sitereference":"test_site12345",
"baseamount":"1050",
"orderreference":"My_Order_123",
"accounttypedescription":"ECOM",
"pan":"4111111111111111",
"expirydate":"12/2020",
"securitycode":"123",
"cavv":"Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=",
"eci":"05",
"enrolled":"Y",
"status":"Y",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"f00e1111-0011-00a6-ab00-a00000a00000",
"credentialsonfile":"1"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<payment>
<expirydate>12/2020</expirydate>
<pan>4111111111111111</pan>
<securitycode>123</securitycode>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<sitereference>test_site12345</sitereference>
<accounttypedescription>ECOM</accounttypedescription>
<credentialsonfile>1</credentialsonfile>
</operation>
<threedsecure>
<cavv>Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=</cavv>
<eci>05</eci>
<enrolled>Y</enrolled>
<status>Y</status>
<version>2.2.0</version>
<directorytransactionreference>f00e1111-0011-00a6-ab00-a00000a00000</directorytransactionreference>
</threedsecure>
</request>
</requestblock>
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) |
Geef "ECOM" op om een e-commercetransactie aan te geven. |
|
baseamount XPath: /billing/amount |
Numeriek (13) |
Het bedrag voor dit verzoek in basiseenheden, zonder komma's of decimalen. Bv. €10,99 wordt ingediend als "1099" maar 246¥ wordtingediend als "246". Deze waarde zal geërfd worden in alle kindverzoeken die erven van dit ouderverzoek, tenzij het veld handmatig overschreven wordt. Als je een ACCOUNTCHECK uitvoert, moet je het maximumbedrag dat verwerkt moet worden opnemen in elke volgende kindtransactie. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numeriek (1) |
Visa en Mastercard hebben bepaald dat u de toestemming van de kaarthouder moet krijgen voordat u kaartgegevens voor toekomstig gebruik opslaat. Vervolgens moet u credentials die moeten worden opgeslagen voor later, op passende wijze identificeren door een Gevevens in Bestand (CoF) vlag toe te kennen om dit aan te geven. Daarom moet u altijd credentialsonfile met waarde "1" in het bovengeschikte verzoek.
De hier ingediende waarde wordt teruggestuurd in het antwoord JWT. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) | De transactie Munt. Dit moet hetzelfde blijven in alle toekomstige ondergeschikt verzoeken die van dit ouderverzoek erven. | |
ingeschreven XPath: /threedsecure/enrolled |
Char (1) | Vul "Y" in om aan te geven dat de kaart geregistreerd is. Zie hieronder voor informatie over het omgaan met niet-ingeschreven kaarten. | |
expirydate XPath: /factuur/betaling/expirydate |
Datum MM/JJJJ | De op de kaart gedrukte vervaldatum. | |
pan XPath: /factuur/betaling/pan |
Numeriek (12-19) | Dit is het lange nummer dat op de voorzijde van de kaart van de klant is gedrukt. | |
requesttypedescriptions XPath: /@type |
Lijst |
De verzoektypes die moeten worden verwerkt. Voor de ouder moet dit ["AUTH " ] of ["ACCOUNTCHECK " ] zijn. |
|
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. | |
status XPath: /threedsecure/status |
Char (1) |
Geeft aan of de klant al dan niet op de ACS van de kaartuitgever werd geauthenticeerd.
Succesvolle authenticatie met status "Y" is vereist. |
|
billingfirstname XPath: /factuur/naam/eerste |
Alfanumeriek, inclusief symbolen (127) |
De klant Voornaam facturatie. Vereist voor handelaren in kansspelen. |
|
billinglastname XPath: /factuur/naam/laatst |
Alfanumeriek, inclusief symbolen (127) |
De klant Achternaam facturatie. Vereist voor handelaren in kansspelen. |
|
cavv XPath: /threedsecure/cavv |
Alfanumeriek (56) |
De unieke Cardholder Authentication Verification Value (CAVV) geassocieerd met de transactie. Dien deze waarde altijd in als hij beschikbaar is. |
|
eci XPath: /threedsecure/eci |
Alfanumeriek (2) |
Het beveiligingsniveau ECI (E-Commerce Indicator) van de transactie. Dien deze waarde altijd in als hij beschikbaar is. |
|
threedversion XPath: /threedsecure/versie |
Numeriek (6) |
Versie van 3-D Secure die wordt gebruikt om de betaling te verifiëren. (bijv. "2.2.0") Dien deze waarde altijd in als hij beschikbaar is. |
|
threeddirectorytransactionreference XPath: /threedsecure/directorytransactionreference |
Alfanumeriek (48) |
Unieke DSTransactionId teruggestuurd door uw MPI provider. Dien deze waarde altijd in als hij beschikbaar is. |
|
securitycode XPath: /factuur/betaling/securitycode |
Numeriek (3-4) |
Dit is de 3-cijferige beveiligingscode die op de achterkant van de kaart staat. (Voor AMEX kaarten is dit een 4-cijferige code op de voorkant van de kaart) Dit veld is niet strikt vereist door Trust Payments, maar het wordt sterk aanbevolen voor de verwerking van de veiligheidscodecontroles. Bovendien kunnen sommige banken de betaling weigeren als de beveiligingscode niet aanwezig is. |
Antwoord
Het geretourneerde antwoord volgt dezelfde specificatie als een standaard AUTH antwoord.
Onze Webservices API is een krachtige server-naar-server oplossing voor betalingsverwerking die meerdere berichttypes ondersteunt. Als u niet bekend bent met onze Webservices API, klik dan hier voor meer informatie en om aan de slag te gaan.
- Het onderstaande voorbeeld is een AUTH verzoek dat kan worden gebruikt om de eerste betaling in de Merchant Initiated Transactions flow te verwerken.
- De accounttypedescription is "MOTO" om aan te geven dat de bestelling via de telefoon is geplaatst.
- Als u een Merchant Initiated Transactions-overeenkomst wilt starten zonder een betaling te verwerken, kunt u de requesttypedescriptions waarde wijzigen in "ACCOUNTCHECK".
#!/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": "MOTO",
"currencyiso3a": "GBP",
"baseamount": "1050",
"orderreference": "My_Order_123",
"billingfirstname": "Joe",
"billinglastname": "Bloggs",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123",
"credentialsonfile": "1"
}
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' => 'MOTO',
'currencyiso3a' => 'GBP',
'baseamount' => '1050',
'orderreference' => 'My_Order_123',
'billingfirstname' => 'Joe',
'billinglastname' => 'Bloggs',
'pan' => '4111111111111111',
'expirydate' => '12/2020',
'securitycode' => '123',
'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": ["AUTH"],
"sitereference": "test_site12345",
"baseamount": "1050",
"orderreference": "My_Order_123",
"billingfirstname": "Joe",
"billinglastname": "Bloggs",
"accounttypedescription": "MOTO",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123",
"credentialsonfile": "1"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescriptions":["AUTH"],
"sitereference":"test_site12345",
"baseamount":"1050",
"orderreference":"My_Order_123",
"billingfirstname":"Joe",
"billinglastname":"Bloggs",
"accounttypedescription":"MOTO",
"pan":"4111111111111111",
"expirydate":"12/2020",
"securitycode":"123",
"credentialsonfile":"1"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<payment>
<expirydate>12/2020</expirydate>
<pan>4111111111111111</pan>
<securitycode>123</securitycode>
</payment>
<amount currencycode="GBP">1050</amount>
</billing>
<operation>
<sitereference>test_site12345</sitereference>
<accounttypedescription>MOTO</accounttypedescription>
<credentialsonfile>1</credentialsonfile>
</operation>
</request>
</requestblock>
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) |
Voer "MOTO" in om een postorder-telefoontransactie aan te geven. (Merk op dat 3-D Secure authenticatie niet wordt ondersteund voor MOTO transacties) |
|
baseamount XPath: /billing/amount |
Numeriek (13) |
Het bedrag voor dit verzoek in basiseenheden, zonder komma's of decimalen. Bv. €10,99 wordt ingediend als "1099" maar 246¥ wordtingediend als "246". Deze waarde zal geërfd worden in alle kindverzoeken die erven van dit ouderverzoek, tenzij het veld handmatig overschreven wordt. Als je een ACCOUNTCHECK uitvoert, moet je het maximumbedrag dat verwerkt moet worden opnemen in elke volgende kindtransactie. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numeriek (1) |
Visa en Mastercard hebben bepaald dat u de toestemming van de kaarthouder moet krijgen voordat u kaartgegevens voor toekomstig gebruik opslaat. Vervolgens moet u credentials die moeten worden opgeslagen voor later, op passende wijze identificeren door een Gevevens in Bestand (CoF) vlag toe te kennen om dit aan te geven. Daarom moet u altijd credentialsonfile met waarde "1" in het bovengeschikte verzoek.
De hier ingediende waarde wordt teruggestuurd in het antwoord JWT. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) | De transactie Munt. Dit moet hetzelfde blijven in alle toekomstige ondergeschikt verzoeken die van dit ouderverzoek erven. | |
expirydate XPath: /factuur/betaling/expirydate |
Datum MM/JJJJ | De op de kaart gedrukte vervaldatum. | |
pan XPath: /factuur/betaling/pan |
Numeriek (12-19) | Dit is het lange nummer dat op de voorzijde van de kaart van de klant is gedrukt. | |
requesttypedescriptions XPath: /@type |
Lijst |
De verzoektypes die moeten worden verwerkt. Voor de ouder moet dit ["AUTH " ] of ["ACCOUNTCHECK " ] zijn. |
|
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. | |
billingfirstname XPath: /factuur/naam/eerste |
Alfanumeriek, inclusief symbolen (127) |
De klant Voornaam facturatie. Vereist voor handelaren in kansspelen. |
|
billinglastname XPath: /factuur/naam/laatst |
Alfanumeriek, inclusief symbolen (127) |
De klant Achternaam facturatie. Vereist voor handelaren in kansspelen. |
|
securitycode XPath: /factuur/betaling/securitycode |
Numeriek (3-4) |
Dit is de 3-cijferige beveiligingscode die op de achterkant van de kaart staat. (Voor AMEX kaarten is dit een 4-cijferige code op de voorkant van de kaart) Dit veld is niet strikt vereist door Trust Payments, maar het wordt sterk aanbevolen voor de verwerking van de veiligheidscodecontroles. Bovendien kunnen sommige banken de betaling weigeren als de beveiligingscode niet aanwezig is. |
Antwoord
Het geretourneerde antwoord volgt dezelfde specificatie als een standaard AUTH antwoord.
Uw vooruitgang
Na het volgen van de bovenstaande instructies zou u nu klaar moeten zijn om handmatig herhaalde betalingen te verwerken met behulp van onze Webservices API. U kunt de transactionreference teruggestuurd in het antwoord en neem dit op in volgende kindverzoeken.
Verzoek kind
Dit hoofdstuk beschrijft de daaropvolgende Merchant Gestarte Transacties. In dit deel wordt ervan uitgegaan dat de bovenliggende aanvraag al verwerkt is.
Voordat u een ondergeschikt verzoek verwerkt, moet u ervoor zorgen dat het bovengeschikte verzoek met succes is afgerond. Onderzoek eventuele problemen en neem indien nodig contact op met ons Support Team.
Wanneer een parenttransactionreference van een succesvolle ouder "AUTH" of "ACCOUNTCHECK" is opgenomen in een verzoek van een kind, zal Trust Payments de vereiste systeemreferentiegegevens verstrekken aan Visa en Mastercard.
Neem contact op met ons ondersteuningsteam als je systeemreferentiegegevens van een andere verwerker moet opnemen of kindertransacties inclusief een PAN en Expiry moet verwerken. Klik hier voor meer informatie.
Overzicht kinderverzoeken
- Uw systeem verzoekt dat een nieuwe betaling wordt verwerkt, door handmatig een AUTH verzoek in te dienen via onze Webservices API. transactionreference van de ouder AUTH of ACCOUNTCHECK in het parenttransactionreference veld.
Voor degenen die onze JavaScript Library of Mobile SDK gebruiken om het bovengeschikte verzoek te verwerken, zal het daaropvolgende antwoord JWT ook de transactionreference van de THREEDQUERY. U moet dit niet in het ondergeschikt verzoek indienen. In plaats daarvan moet u alleen de transactionreference waarde gekoppeld aan de bovengeschikte AUTH of ACCOUNTCHECK.
- Wij nemen contact op met de wervende bank om autorisatie te vragen voor de betaling, met gebruikmaking van de facturerings- en leveringsgegevens die zijn overgenomen van de bovengeschikte AUTH/ACCOUNTCHECK. (Uw systeem hoeft deze gegevens niet opnieuw in te dienen).
- Uw systeem ontvangt een antwoord op AUTH , met de resultaten van het verzoek.
Verzoek
Het voor het ondergeschikt ingediende verzoektype moet "AUTH" zijn. (ingediend in de requesttypedescriptions veld). Het AUTH child verzoek volgt een gelijkaardige specificatie als een standaard AUTH verzoek, maar is onderhevig aan andere vereisten wanneer het gebruikt wordt als onderdeel van een Merchant Initiated Transactions oplossing. Raadpleeg het voorbeeld en de veldspecificatie hieronder voor meer informatie.
#!/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",
"initiationreason": "C",
"parenttransactionreference": "12-3-4567",
"baseamount": "1050",
"credentialsonfile": "2"
}
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',
'initiationreason' => 'C',
'parenttransactionreference' => '12-3-4567',
'baseamount' => '1050',
'credentialsonfile' => '2'
);
$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": [{
"sitereference": "test_site12345",
"requesttypedescriptions": ["AUTH"],
"accounttypedescription": "ECOM",
"initiationreason": "C",
"parenttransactionreference": "12-3-4567",
"baseamount": "1050",
"credentialsonfile": "2"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"sitereference":"test_site12345",
"requesttypedescriptions":["AUTH"],
"accounttypedescription":"ECOM",
"initiationreason": "C",
"parenttransactionreference":"12-3-4567",
"baseamount":"1050",
"credentialsonfile":"2"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<operation>
<sitereference>test_site12345</sitereference>
<accounttypedescription>ECOM</accounttypedescription>
<initiationreason>C</initiationreason>
<parenttransactionreference>12-3-4567</parenttransactionreference>
<credentialsonfile>2</credentialsonfile>
</operation>
<billing>
<amount>1050</amount>
</billing>
</request>
</requestblock>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
Het bovenstaande voorbeeld gaat ervan uit dat het vorige verzoek het eerste was dat werd verwerkt, dus de subscriptionnumber krijgt de waarde "2". Latere ondergeschikt verzoeken worden verwerkt met dezelfde structuur, waarbij dit nummer telkens wordt verhoogd (d.w.z. de volgende betaling in de reeks zou "3" zijn, dan "4" enz.)
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | Geef dezelfde accounttypedescription waarde in in het verzoek van het kind als in de gekoppelde ouder. | |
baseamount XPath: /billing/amount |
Numeriek (13) |
Het bedrag van de ondergeschikt transactie in basiseenheden, zonder komma's of decimalen. Bv. €10,99 wordt ingediend als "1099", maar 246¥ als "246". Als u dit veld niet invult, wordt het verwerkte bedrag overgenomen van het voorgaande bovengeschikte verzoek. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numeriek (1) |
Dit is vereist voor Visa en Mastercard transacties waarbij de handelaar gebruik maakt van Gevevens in Bestand (CoF). Vul in dit veld "2" in om aan te geven dat de betaling gebruik maakt van eerder opgeslagen referenties. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
Indien ingediend, moet dit dezelfde Munt zijn die in het bovengeschikte verzoek is gebruikt.
Indien niet ingediend, wordt deze waarde geërfd van het bovengeschikte verzoek. |
|
initiationreason XPath: /operatie/initiationreason |
Char (1) |
U moet een reden opgeven voor de verwerking van de tokenbetaling. Geef een van de volgende waarden op die de reden voor de betaling het best beschrijft:
Alleen initiationreason van "C" wordt ondersteund voor door merchant geïnitieerde Account Funding Transactions (AFT). |
|
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
U moet de transactionreference waarde van de AUTH of ACCOUNTCHECK die in het antwoord JWT van het initiële bovengeschikte verzoek is teruggestuurd.
U mag de transactionreference waarde gekoppeld aan de THREEDQUERY. |
|
requesttypedescriptions XPath: /@type |
Alpha (20) | U moet "AUTH" invoeren, zoals in het verzoekvoorbeeld. | |
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
De site referentie heeft betrekking op uw individuele account die u bij de installatie hebt ontvangen. Als u uw site referentie niet kent, neem dan contact op met ons Support Team. |
Antwoord
Het teruggestuurde antwoord volgt dezelfde specificatie als een standaard AUTH antwoord, met uitzondering van het extra veld acquireradvicecode die kunnen worden teruggegeven (zie de veldspecificatie hieronder voor meer informatie).
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | Rekeningtype "RECUR" wordt teruggestuurd. | |
acquireradvicecode XPath: /acquireradvicecode |
Numeriek (1) |
Een numerieke waarde die door de wervende bank wordt teruggestuurd en die wordt gebruikt om aan te geven of verdere betalingen kunnen worden verwerkt. Een volledige toewijzing van deze waarden vindt u in de rubriek "Aanvullende opmerkingen" onderaan deze pagina. Alleen teruggestuurd indien ondersteund door uw wervende bank. |
|
baseamount XPath: /billing/amount |
Numeriek (13) |
Het bedrag van de ondergeschikt transactie in basiseenheden, zonder komma's of decimalen. Bv. €10,99 wordt ingediend als "1099", maar 246¥ als "246". Wij raden u aan te controleren of dit bedrag overeenkomt met de waarde die u verwacht. Het hier teruggestuurde bedrag is het bedrag dat de klant bij de ondergeschikt transactie zal moeten betalen. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numeriek (1) | Als de credentialsonfile veld is ingediend in het verzoek en het wordt ondersteund door de acquirer die de transactie verwerkt, wordt het teruggestuurd in het antwoord. | |
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
De Munt van de transactie. Klik hier voor een volledige lijst van beschikbare munteenheden. |
|
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
De Transactiereferentie van de oudertransactie. | |
requesttypedescription XPath: /@type |
Alpha (20) | Verzoektype "AUTH" wordt teruggestuurd. |
Overzicht
Als u de bovenstaande instructies volgt, zou uw systeem nu in staat moeten zijn om handmatig herhaalde betalingen te verwerken met behulp van onze Webservices API, zonder dat u de facturerings- of betalingsgegevens van de klant opnieuw hoeft in te voeren. Zoals altijd raden we u aan uw oplossing grondig te testen om er zeker van te zijn dat Merchant Initiated Transactions naar verwachting worden verwerkt, voordat u live betalingen uitvoert op uw productiesysteem. Lees verder voor aanvullende informatie die u wellicht nuttig vindt bij het ontwikkelen van een Merchant Initiated Transactions oplossing.
Aanvullende opmerkingen
Hieronder vindt u enkele aanvullende opmerkingen waarmee u rekening moet houden bij het verwerken van Merchant Initiated Transactions.
Over de adviescode aankoper
De adviescode aankoper is een numerieke waarde die wordt geretourneerd als deze wordt ondersteund door uw wervende bank en die aangeeft of en wanneer verdere betalingen kunnen worden verwerkt.
Verwante artikelen
Terugkerende betalingen
Verwerk terugkerende transacties met eerder opgeslagen kaartgegevens.