MobilePay is een mobiele betaalapplicatie ontwikkeld door Danske Bank. In 2022 fuseerden ze met Vipps tot Vipps MobilePay. Bij het selecteren van MobilePay worden klanten gevraagd om hun mobiele telefoonnummer in te voeren. Klanten die nieuw zijn op MobilePay worden door een registratieproces geleid, terwijl terugkerende klanten worden gevraagd om de MobilePay app op hun smartphone te openen en de transactie goed te keuren. Als digitale portemonnee is MobilePay verantwoordelijk voor het veilig opslaan van de kaartgegevens van de klant, zodat zij gemakkelijk hun voorkeurskaart kunnen selecteren bij het afrekenen. De transactie wordt uiteindelijk verwerkt en geautoriseerd door de wervende banken, net als bij standaard kaarttransacties.
Ondersteunde landen | DK, FI |
Ondersteunde munteenheden | DKK, EUR, NOK, SEK |
Terugbetalingen |
Volledige en gedeeltelijke terugbetalingen zijn toegestaan tot 365 dagen. |
Terugboekingen |
Betalingen kunnen worden teruggevorderd. |
Zero-authorisation |
Zero-authorisations kan worden uitgevoerd door het indienen van een ACCOUNTCHECK verzoek, indien ondersteund door uw acquiring bank. |
Terugkerende betalingen |
Niet ondersteund. |
Configuratie
Om MobilePay op uw account in te schakelen, neemt u contact op met uw accountmanager. U moet een afbeelding van uw bedrijfslogo leveren die aan de klant wordt getoond in de MobilePay app wanneer hij wordt gevraagd om de betaling te autoriseren. Wij zorgen op onze beurt voor een sandbox-account dat u nodig hebt om uw implementatie te testen.
Vereisten
- MobilePay kan alleen worden aangeboden door verkopers die actief zijn in landen binnen de Europese Unie (EU) en/of Europese Economische Ruimte (EER) en het Verenigd Koninkrijk. MobilePay is vooral populair in Denemarken en Finland.
- Om MobilePay in uw kassa te integreren, moet u een Merchant Id (MID) hebben waarmee u e-commerce (ECOM) transacties kunt verwerken. Dit komt omdat, ondanks het feit dat de klant de betaling goedkeurt via MobilePay, uiteindelijk een kaarttransactie wordt verwerkt en dit vereist dat u een relatie hebt met een acquiring bank.
Trust Payments ondersteunt alleen MobilePay transacties verwerkt met betaalkaarten van het merk Mastercard en Visa.
Procesoverzicht
-
Initieer de klant
- De klant gaat akkoord met een betaling via MobilePay op de website van de handelaar.
- De handelaar dient een gecombineerd ORDER, THREEDQUERY, AUTH verzoek in om de sessie te starten. Dit verzoek bevat de volgende velden returnurl en cancelurl.
- Merchant ontvangt het antwoord, inclusief redirecturl.
- Indien geconfigureerd, stuurt Trust Payments een URL-kennisgeving naar het systeem van de handelaar om het bovenstaande te melden.
-
Doorverwijzen naar MobilePay
- Merchant stuurt de browser van de klant door naar de redirecturl.
- De klant volgt de instructies op MobilePay om de betaling te autoriseren.
- Indien succesvol, wordt de browser doorgestuurd naar de returnurl, een holding pagina gehost door de merchant die een "even geduld aub" bericht weergeeft. Deze redirect bevat de velden transactionreference, ordertransactionreference en signature.
- Als er een probleem is geweest met de betaling, wordt de browser doorgestuurd naar de cancelurl, een door de handelaar gehoste pagina die de klant een foutmelding geeft.
-
Auth-antwoord verifiëren
- Zodra de handelaar een URL-kennisgeving bericht ontvangt dat autorisatie is geslaagd (dit moet eerst worden geconfigureerd op uw site referentie), verwerkt hij een VERIFYAUTHRESPONSE verzoek met inbegrip van verifystring, een object met de waarden van de transactionreference, ordertransactionreference en signature velden die terugkomen in de redirect van MobilePay.
-
Voltooiing van de betaling
- Als de VERIFYAUTHRESPONSE een succesrespons geeft, toont de handelaar een succesbericht in de browser.
- Als er een probleem is opgetreden, geeft de handelaar een foutmelding in de browser.
- Na autorisatie wordt het geld op uw bankrekening gestort volgens dezelfde procedure als voor standaard kaarttransacties.
- Volgens de standaard betalingsprocedure voor kaarttransacties wordt het geld doorgaans binnen 24 uur na autorisatie op uw bankrekening gestort.
Trust Payments ondersteunt niet de verwerking van nieuweauthorisaties of nieuwe Rekeningcontrolen die betalingsgegevens erven van een eerder verwerkte MobilePay transactie. Pogingen daartoe resulteren in errorcode "60018" met errormessage "Ongeldig verzoektype" wordt teruggestuurd.
1. Initieer de klant
Wanneer de klant kiest voor betaling met MobilePay, moet uw systeem een gecombineerd verzoek indienen voor ORDER, THREEDQUERY, AUTH en, indien succesvol, de browser van de klant omleiden naar de redirecturl in het antwoord.
Voordat u begint met testen, moet u contact opnemen met ons Support Team en verzoeken dat een regel wordt ingeschakeld op uw account, die een URL-kennisgeving naar uw systeem stuurt naar aanleiding van autorisatie.
Wij raden u aan ten minste de volgende velden op te nemen in uw autorisatie kennisgeving:
- Antwoordbericht aankoper (acquirerresponsemessage)
- Basisbedrag (baseamount) (bijv. 10,50 pond is "1050")*.
- Hoofdbedrag (mainamount) (bijv. 10,50 pond is "10,50")*.
- Land facturatie (billingcountryiso2a)
- Munt (currencyiso3a)
- Foutcode (errorcode)
- Live Status (livestatus)
- Bestelreferentie (orderreference)
- Betalingstype (paymenttypedescription)
- Verzoektype (requesttypedescription)
- Status betaling (settlestatus)
- Site referentie (sitereference)
- Transactiereferentie (transactionreference)
- Tijdstempel start transactie (transactionstartedtimestamp)
*Kies uw voorkeursformaat.
Gecombineerd verzoek ORDER, THREEDQUERY, AUTH
Het onderstaande voorbeeld betreft het verzoek om de MobilePay betalingssessie te initialiseren:
U kunt Verzoektype THREEDQUERY van het verzoek uitsluiten om de transactie vrij te stellen van 3-D Secure authenticatiecontroles. Transacties die op deze manier zijn vrijgesteld, worden automatisch gemarkeerd met de desbetreffende vlag voor vrijstelling SCA (in dit geval "5", die staat voor gedelegeerde authenticatie). Als de emittent een zachte afwijzing terugstuurt, wordt de transactie automatisch opnieuw geprobeerd met de nodige 3-D Secure authenticatie.
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
order = {
"accounttypedescription": "ECOM",
"baseamount": "1050",
"billingcontactdetailsoverride": "1",
"cancelurl": "https://example.com/cancelpayment",
"currencyiso3a": "DKK",
"customercontactdetailsoverride": "1",
"orderreference": "MyOrder123",
"paymenttypedescription": "MOBILEPAY",
"requesttypedescriptions": ["ORDER","THREEDQUERY","AUTH"],
"returnurl":" https://example.com/successpayment",
"sitereference":"test_site12345"
}
strequest = securetrading.Request()
strequest.update(order)
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(
'accounttypedescription' => 'ECOM',
'baseamount' => '1050',
'billingcontactdetailsoverride' => '1',
'cancelurl' => 'https://example.com/cancelpayment',
'currencyiso3a' => 'DKK',
'customercontactdetailsoverride' => '1',
'orderreference' => 'MyOrder123',
'paymenttypedescription' => 'MOBILEPAY',
'requesttypedescriptions' => array('ORDER','THREEDQUERY','AUTH'),
'returnurl' => 'https://example.com/successpayment',
'sitereference' => 'test_site12345',
);
$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": [{
"accounttypedescription": "ECOM",
"baseamount": "1050",
"billingcontactdetailsoverride": "1",
"cancelurl": "https://example.com/cancelpayment",
"currencyiso3a": "DKK",
"customercontactdetailsoverride": "1",
"orderreference": "MyOrder123",
"paymenttypedescription": "MOBILEPAY",
"requesttypedescriptions": ["ORDER","THREEDQUERY","AUTH"],
"returnurl": "https://example.com/successpayment",
"sitereference": "test_site12345"
}]
}'
{
"alias": "webservices@example.com",
"request": [{
"accounttypedescription":"ECOM",
"baseamount":"1050",
"billingcontactdetailsoverride":"1",
"cancelurl":"https://example.com/cancelpayment",
"currencyiso3a":"DKK",
"customercontactdetailsoverride":"1",
"orderreference":"MyOrder123",
"paymenttypedescription":"MOBILEPAY",
"requesttypedescriptions":["ORDER","THREEDQUERY","AUTH"],
"returnurl":"https://example.com/successpayment",
"sitereference":"test_site12345"
}],
"version": "1.00"
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="ORDER">
<billing>
<amount currencycode="DKK">1050</amount>
<contactdetailsoverride>1</contactdetailsoverride>
<payment type="MOBILEPAY"/>
</billing>
<customer>
<contactdetailsoverride>1</contactdetailsoverride>
</customer>
<merchant>
<cancelurl>https://example.com/cancelpayment</cancelurl>
<returnurl>https://example.com/successpayment</returnurl>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<sitereference>test_site12345</sitereference>
</operation>
</request>
<request type="THREEDQUERY"/>
<request type="AUTH"/>
</requestblock>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | Alleen "ECOM" (e-commerce) wordt ondersteund. | |
baseamount XPath: /billing/amount |
Numeriek (13) | Het bedrag van de transactie in basiseenheden, zonder komma's of decimalen, dus €10 wordt ingediend als 1000. Deze waarde moet groter zijn dan nul. (De maximumlengte kan variëren, afhankelijk van uw wervende bank - Neem contact op met uw bank voor meer informatie) | |
cancelurl XPath: /merchant/cancelurl |
URL (2048) |
De URL waarnaar de klant wordt teruggestuurd, als de klant de transactie annuleert nadat hij is doorgestuurd naar de redirecturl. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
De Munt waarin de transactie zal worden verwerkt (in ISO3A-formaat). Voor een lijst van Munt codes die worden ondersteund door MobilePay, zie de lijst bovenaan deze pagina. |
|
paymenttypedescription XPath: /billing/payment/@type |
Alpha (20) | De ingediende waarde moet "MOBILEPAY" zijn. | |
requesttypedescriptions XPath: /@type |
Alpha (20) |
Je moet de reeks indienen: (Het vereiste formaat verschilt voor XML-verzoeken. Zie het voorbeeld hierboven) |
|
returnurl XPath: /merchant/returnurl |
URL (2048) | De URL waarnaar de klant wordt teruggestuurd na een succesvolle autorisatie. | |
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. | |
billingcontactdetailsoverride XPath: /billing/contactdetailsoverride |
Numeriek (1) |
Waarde 1 kan niet worden ingediend indien er geen fysieke goederen worden geleverd. |
|
billingcounty XPath: /billing/county |
Alfanumeriek, inclusief symbolen (127) |
De provincie die is ingevoerd voor het factuuradres van de klant. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingcountryiso2a XPath: /billing/country |
Alpha (2) |
Het land voor het factuuradres van de klant. Dit moet in ISO2A-formaat zijn. Voor een lijst van door MobilePay ondersteunde landcodes, zie de lijst bovenaan deze pagina. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingemail XPath: /billing/email |
E-mail (255) |
Het E-mailadres facturatie adres van de klant. Maximale lengte van 255 (maximaal 64 tekens vóór het "@"-teken). Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingfirstname XPath: /billing/name/first |
Alfanumeriek, inclusief symbolen (127) |
De klant Voornaam facturatie. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billinglastname XPath: /billing/name/last |
Alfanumeriek, inclusief symbolen (127) |
De klant Achternaam facturatie. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingmiddlename XPath: /billing/name/middle |
Alfanumeriek, inclusief symbolen (127) |
De middelste factureringsnaam of -namen van de klant. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingpostcode XPath: /billing/postcode |
Alfanumeriek (25) |
De Postcode facturatie of postcode. Dit moet een geldige postcode/ZIP-code zijn voor de billingcountryiso2a ingediend. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingprefixname XPath: /billing/name/prefix |
Alfanumeriek, inclusief symbolen (25) |
Het voorvoegsel van de factuurnaam van de klant (bv. De heer, Juffrouw, Dr.). Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingpremise XPath: /billing/premise |
Alfanumeriek, inclusief symbolen (25) |
Het huisnummer of de eerste regel van het factuuradres van de klant. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingstreet XPath: /billing/street |
Alfanumeriek, inclusief symbolen (127) |
De straat die is ingevoerd voor het factuuradres van de klant. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingsuffixname XPath: /billing/name/suffix |
Alfanumeriek, inclusief symbolen (25) |
Het achtervoegsel van de factureringsnaam van de klant (bv. Bsc). Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingtelephone XPath: /billing/telephone |
Alfanumeriek, inclusief symbolen (20) |
Telefoonnummer van de klant. Geldige tekens:
Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingtelephonetype XPath: /billing/telephone/@type |
Char (1) |
Het type telefoonnummer. De beschikbare opties zijn:
Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
billingtown XPath: /billing/town |
Alfanumeriek, inclusief symbolen (127) |
De ingevoerde stad voor het factuuradres van de klant. Als billingcontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customercontactdetailsoverride XPath: /customer/contactdetailsoverride |
Numeriek (1) |
Waarde 1 kan niet worden ingediend indien er geen fysieke goederen worden geleverd. |
|
customercounty XPath: /customer/county |
Alfanumeriek, inclusief symbolen (127) |
Het voor het leveringsadres ingevoerde district. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customercountryiso2a XPath: /customer/country |
Alpha (2) |
Het land voor het afleveradres. Dit moet in ISO2A-formaat zijn. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customeremail XPath: /customer/email |
E-mail (255) |
Het e-mailadres voor levering. Maximale lengte van 255 (maximaal 64 tekens vóór het "@"-symbool). Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customerfirstname XPath: /customer/name/first |
Alfanumeriek, inclusief symbolen (127) |
De voornaam van de bezorger. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customerlastname XPath: /customer/name/last |
Alfanumeriek, inclusief symbolen (127) |
De achternaam van de bezorger. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customermiddlename XPath: /customer/name/middle |
Alfanumeriek, inclusief symbolen (127) |
De middelste naam/namen van de bevalling. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customerpostcode XPath: /customer/postcode |
Alfanumeriek (25) |
De leveringspostcode of postcode. Dit moet een geldige postcode zijn voor de customercountryiso2a ingediend. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customerprefixname XPath: /customer/name/prefix |
Alfanumeriek, inclusief symbolen (25) |
Het voorvoegsel van de leveringsnaam (bv. De heer, Juffrouw, Dr.). Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customerpremise XPath: /customer/premise |
Alfanumeriek, inclusief symbolen (25) |
Het huisnummer of de eerste regel van het afleveradres. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customerstreet XPath: /customer/street |
Alfanumeriek, inclusief symbolen (127) |
De ingevoerde straat voor het afleveradres. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customersuffixname XPath: /customer/name/suffix |
Alfanumeriek, inclusief symbolen (25) |
Het achtervoegsel van de afleveringsnaam (bijv. Bsc). Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customertelephone XPath: /customer/telephone |
Alfanumeriek, inclusief symbolen (20) |
Het telefoonnummer van de levering. Geldige tekens:
Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customertelephonetype XPath: /customer/telephone/@type |
Char (1) |
Het type telefoonnummer. De beschikbare opties zijn:
Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
customertown XPath: /customer/town |
Alfanumeriek, inclusief symbolen (127) |
De voor het afleveradres ingevoerde stad. Als customercontactdetailsoverride=1, wordt deze waarde overschreven door de waarde in de portemonnee van de klant. |
|
orderreference XPath: /merchant/orderreference |
Alfanumeriek, inclusief symbolen (25)
Aanbevolen lengte 25 tekens of minder (exacte lengte afhankelijk van de wervende bank). Niet-naleving van deze eis kan ertoe leiden dat de tekst in de transactie wordt ingekort. |
Uw unieke bestelreferentie die in het Trust Payments systeem kan worden opgeslagen. |
ORDER antwoord
{
u'requestreference': u'An3ug1kap',
u'version': u'1.00',
u'responses': [{
u'accounttypedescription': u'ECOM',
u'errorcode': u'0',
u'errormessage': u'Ok',
u'livestatus': u'0',
u'operatorname': u'webservices@example.com',
u'orderreference': u'MyOrder123',
u'paymenttypedescription': u'MOBILEPAY',
u'redirecturl': u'https://example.com',
u'requesttypedescription': u'ORDER',
u'settleduedate': u'2022-08-24',
u'settlestatus': u'0',
u'transactionreference': u'30-101-155',
u'transactionstartedtimestamp': u'2022-08-24 15:20:47'
}]
}
array(3) {
["requestreference"] => string(9) "A0345jmuw"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0]=> array(13) {
["accounttypedescription"] => string(4) "ECOM"
["errorcode"] => string(1) "0"
["errormessage"] => string(2) "Ok"
["livestatus"] => string(1) "0"
["operatorname"] => string(23) "webservices@example.com"
["orderreference"] => string(10) "MyOrder123"
["paymenttypedescription"] => string(9) "MOBILEPAY"
["redirecturl"] => string(19) "https://example.com"
["requesttypedescription"] => string(5) "ORDER"
["settleduedate"] => string(10) "2022-08-24"
["settlestatus"] => string(1) "0"
["transactionreference"] => string(10) "30-101-155"
["transactionstartedtimestamp"] => string(19) "2022-08-24 15:20:47"
}
}
}
{
"requestreference":"W30-jc1pdcm4",
"response":[{
"accounttypedescription":"ECOM",
"errorcode":"0",
"errormessage":"Ok",
"livestatus":"0",
"operatorname":"webservices@example.com",
"orderreference":"MyOrder123",
"paymenttypedescription":"MOBILEPAY",
"redirecturl":"https://example.com",
"requesttypedescription":"ORDER",
"settleduedate":"2022-08-24",
"settlestatus":"0",
"transactionreference":"30-101-155",
"transactionstartedtimestamp":"2022-08-24 15:20:47"
}],
"secrand": "SjBuz3MmMGu",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>Xd4nk260v</requestreference>
<response type="ORDER">
<billing>
<payment type="MOBILEPAY"/>
</billing>
<error>
<message>Ok</message>
<code>0</code>
</error>
<live>0</live>
<merchant>
<orderreference>MyOrder123</orderreference>
<operatorname>webservices@example.com</operatorname>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
</operation>
<other>
<redirecturl>https://example.com</redirecturl>
</other>
<settlement>
<settleduedate>2022-08-24</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<transactionreference>30-101-155</transactionreference>
<timestamp>2022-08-24 15:20:47</timestamp>
</response>
<secrand>Z1W</secrand>
</responseblock>
Specificatie veld
Veld | Formaat | Beschrijving | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | De geretourneerde waarde is "ECOM". | |
errorcode XPath: /error/code |
Numeriek (1-5) |
De foutcode (errorcode) moet worden gebruikt om te bepalen of het verzoek succesvol was of niet.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
errormessage XPath: /error/message |
Alfanumeriek (255) |
Dit is het bericht dat overeenkomt met de bovenstaande code.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
livestatus XPath: /live |
Numeriek (1) |
|
|
operatorname XPath: /merchant/operatorname |
Alfanumeriek (255) | De waarde van dit veld bevat de naam van de gebruiker die het verzoek heeft verwerkt. | |
orderreference XPath: /merchant/orderreference |
Alfanumeriek, inclusief symbolen (25) |
De unieke orderreferentie die is opgeslagen op het Trust Payments systeem. |
|
paymenttypedescription XPath: /billing/payment/@type |
Alpha (20) | De geretourneerde waarde is "MOBILEPAY". | |
redirecturl XPath: /other/redirecturl |
URL (255) |
Leid de browser van de klant om naar deze URL, zodat hij de betaling kan voltooien op MobilePay's gehoste pagina's. U moet alle URL-codering verwijderen voordat u de browser van de klant omleidt, zodat speciale tekens correct worden geformatteerd. |
|
requesttypedescription XPath: /@type |
Alpha (20) | De teruggezonden waarde is "ORDER". | |
settleduedate XPath: /settlement/settleduedate |
Datum JJJJ-MM-DD | De datum waarop de transactie zal worden afgewikkeld. | |
settlestatus XPath: /settlement/settlestatus |
Numeriek (3) | Hiermee kunt u de status van de betaling bepalen. Raadpleeg het gedeelte " Omgaan met het antwoord " hieronder voor informatie over hoe u dit veld het best kunt interpreteren. | |
transactionreference XPath: /transactionreference |
Alfanumeriek, inclusief koppeltekens (25) |
Een unieke referentie voor de transactie, toegewezen door Trust Payments. | |
transactionstartedtimestamp XPath: /timestamp |
Het tijdstip waarop de transactie werd verwerkt. | Het tijdstip waarop het verzoek is verwerkt. | |
errordata XPath: /error/data |
Alfanumeriek (255) |
Aanvullende informatie om te helpen bij het oplossen van de fout. Wordt alleen geretourneerd als er een fout is opgetreden. |
2. Doorverwijzen naar MobilePay
Na succesvolle indiening van het eerste initialisatieverzoek zoals hierboven gedocumenteerd, zal uw systeem een redirecturl in het antwoord. Uw systeem moet alle URL-codering van de URL verwijderen (om ervoor te zorgen dat speciale tekens correct worden geformatteerd), en vervolgens de browser van de klant omleiden naar deze gewijzigde URL. De browser zal een door MobilePay gehoste pagina weergeven waar de klant om zijn telefoonnummer wordt gevraagd om verder te gaan.
Testen
Voordat u aan de slag gaat, moet u de MobilePay test app installeren op een smartphone in uw bezit en u aanmelden met een van de door MobilePay verstrekte mobiele testnummers. Klik hier voor meer details (link naar externe site). site referentie Met deze testgegevens en de verstrekte app kunt u testtransacties uitvoeren op MobilePay . Bij het testen met MobilePay zal uw browser de testomgeving weergeven die wordt gehost door MobilePay.
Na het aanmelden wordt een aftelling van 5 minuten weergegeven in de browser. De klant heeft 5 minuten de tijd om de MobilePay app op zijn smartphone te openen om de lopende betaling goed te keuren. Ze krijgen het volledige transactiebedrag te zien, de naam van uw winkel en een optie om hun voorkeurskaart voor de betaling te kiezen.
Bij het testen zullen deze kaartnummers testkaarten zijn die door MobilePay voor testdoeleinden worden verstrekt.
De klant veegt naar rechts als hem wordt gevraagd de transactie goed te keuren.
EMV 3-D Secure
Het is op dit punt in het afrekenproces dat EMV 3-D Secure wordt uitgevoerd om de transactie te authenticeren.
Over 3-D Secure
3-D Secure is een vorm van Strong Customer Authentication (SCA) ontworpen om fraude en chargebacks tijdens e-commercetransacties te verminderen. Het stelt kaartuitgevers in staat een extra beschermingsniveau te bieden door kaarthouders op het verkooppunt te authenticeren. Klik hier voor meer informatie.
Voor een betere beveiliging kan de kaartuitgever step-up authenticatie afdwingen, waarbij de klant extra stappen moet ondernemen om zijn identiteit te verifiëren (bv. de bestelling in zijn bank-app bekijken en goedkeuren). Als dit gebeurt, wordt de hoeveelheid tijd die de klant krijgt om de transactie te voltooien verhoogd tot 20 minuten.
Anders wordt de transactie als "frictieloos" behandeld en wordt de klant niet onderbroken.
Als de transactie uiteindelijk succesvol is, toont de app een "Geautoriseerd" antwoord. Ondertussen wordt de klant in de browser doorgestuurd naar de returnurl, een holding pagina gehost door de merchant die een "even geduld aub" bericht weergeeft. Deze redirect bevat de velden transactionreference, ordertransactionreference en signature.
Als er een probleem is geweest met de betaling, wordt de browser doorgestuurd naar de cancelurl, een door de handelaar gehoste pagina die de klant een foutmelding geeft.
3. Controleer Auth Response
Behandeling van de autorisatie kennisgeving
Uw systeem zal moeten luisteren naar URL-kennisgevingen die werden geconfigureerd om te worden verzonden na autorisatie van MobilePay transacties. U moet de inhoud van elke ontvangen melding controleren en dienovereenkomstig reageren door de processen te volgen die worden beschreven in ons URL-kennisgevingen documentatie. In het bijzonder moet u kijken naar de bijgewerkte settlestatus waarde:
- Als de settlestatus "0", "1" of "10" is, is de betaling geautoriseerd en hoeft u op dit moment geen verdere actie te ondernemen. Waarden van "2" of "3" geven echter aan dat de fondsen niet gepland voor afwikkeling (opgeschort en geannuleerd, respectievelijk).
VERIFYAUTHRESPONSE verzoek
Om te verifiëren dat de betaling succesvol is verwerkt terwijl de klant de MobilePay app gebruikte, moet u een VERIFYAUTHRESPONSE verzoek indienen bij Trust Payments. Dit moet het volgende bevatten:
- De parenttransactionreference, die de transactionreference teruggestuurd in het antwoord op ORDER ;
- En de verifystring, die een object is dat is opgebouwd uit de transactionreference, ordertransactionreference en signature veldwaarden die in de redirect terugkomen, als volgt:
"verifystring":"{\"transactionreference\":\"30-17-111\",\"ordertransactionreference\":\"30-101-155\",\"signature\":\"3b48b7777\"}"
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
verifyAuthResponse = {
"parenttransactionreference": "30-101-155",
"requesttypedescriptions": ["VERIFYAUTHRESPONSE"],
"sitereference": "test_site12345",
"verifystring": "{\"transactionreference\":\"30-17-111\",\"ordertransactionreference\":\"30-101-155\",\"signature\":\"3b48b7777\"}"
}
strequest = securetrading.Request()
strequest.update(verifyAuthResponse)
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(
'parenttransactionreference' => '30-101-155',
'requesttypedescriptions' => array('VERIFYAUTHRESPONSE'),
'sitereference' => 'test_site12345',
'verifystring' => '{\"transactionreference\":\"30-17-111\",\"ordertransactionreference\":\"30-101-155\",\"signature\":\"3b48b7777\"}'
);
$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": [{
"parenttransactionreference": "30-101-155",
"requesttypedescriptions": ["VERIFYAUTHRESPONSE"],
"sitereference": "test_site12345",
"verifystring": "{\"transactionreference\":\"30-17-111\",\"ordertransactionreference\":\"30-101-155\",\"signature\":\"3b48b7777\"}"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"parenttransactionreference":"30-101-155",
"requesttypedescriptions":["VERIFYAUTHRESPONSE"],
"sitereference":"test_site12345",
"verifystring":"{\"transactionreference\":\"30-17-111\",\"ordertransactionreference\":\"30-101-155\",\"signature\":\"3b48b7777\"}"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="VERIFYAUTHRESPONSE">
<operation>
<parenttransactionreference>30-101-155</parenttransactionreference>
<sitereference>test_site12345</sitereference>
<verifystring>{\"transactionreference\":\"30-17-111\",\"ordertransactionreference\":\"30-101-155\",\"signature\":\"3b48b7777\"}</verifystring>
</operation>
</request>
</requestblock>
Vervang <DOMAIN>
met een ondersteund domein. Klik hier voor een volledige lijst.
VERIFYAUTHRESPONSE specificatie verzoekveld
Veld | Formaat | Beschrijving | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
De transactionreference teruggestuurd in het antwoord op ORDER . | |
requesttypedescriptions XPath: /@type |
Alpha (20) | De ingediende waarde moet "VERIFYAUTHRESPONSE" zijn. | |
sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
Identificeert uw site op het Trust Payments systeem.
Als u uw site referentie niet kent, neem dan contact op met ons Support Team. |
|
verifystring XPath: /operation/verifystring |
Object |
Een object geconstrueerd uit de transactionreference, ordertransactionreference en signature veldwaarden die in de redirect worden geretourneerd. De waarde van de ordertransactionreference veld moet overeenkomen met de transactionreference teruggestuurd in het antwoord op ORDER . |
VERIFYAUTHRESPONSE antwoord
De informatie in het antwoord op VERIFYAUTHRESPONSE moet worden gebruikt om het bericht te bepalen dat de klant te zien krijgt na zijn betalingspoging:
{
u'requestreference': u'An3ug1kap',
u'version': u'1.00',
u'response': [{
u'errorcode': u'0',
u'errormessage': u'Ok',
u'requesttypedescription': u'VERIFYAUTHRESPONSE',
u'transactionstartedtimestamp': u'2022-08-24 15:20:47',
}]
}
array(3) {
["requestreference"] => string(9) "A0345jmuw"
["version"] => string(4) "1.00"
["response"] => array(1) {
[0]=> array(4) {
["errorcode"] => string(1) "0"
["errormessage"] => string(2) "Ok"
["requesttypedescription"] => string(18) "VERIFYAUTHRESPONSE"
["transactionstartedtimestamp"] => string(19) "2022-08-24 15:20:47"
}
}
}
{
"requestreference":"W23-fjgvn3d8",
"version":"1.00",
"response":[{
"errorcode":"0",
"errormessage":"Ok",
"requesttypedescription":"VERIFYAUTHRESPONSE",
"transactionstartedtimestamp":"2022-08-24 15:20:47"
}],
"secrand":"zO9"
}
<responseblock version="3.67">
<requestreference>Xd4nk260v</requestreference>
<response type="VERIFYAUTHRESPONSE">
<error>
<code>0</code>
<message>Ok</message>
</error>
<timestamp>2022-08-24 15:20:47</timestamp>
</response>
<secrand>Z1W</secrand>
</responseblock>
VERIFYAUTHRESPONSE specificatie van antwoordvelden
Veld | Formaat | Beschrijving | |
errorcode XPath: /error/code |
Numeriek (1-5) |
De foutcode (errorcode) moet worden gebruikt om te bepalen of het verzoek succesvol was of niet.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
errormessage XPath: /error/message |
Alfanumeriek (255) |
Dit is het bericht dat overeenkomt met de bovenstaande code.
Klik hier voor een volledige lijst van errorcode en berichtwaarden. |
|
requesttypedescription XPath: /@type |
Alpha (20) | De teruggezonden waarde is "VERIFYAUTHRESPONSE". | |
transactionstartedtimestamp XPath: /timestamp |
Datum tijd JJJJ-MM-DD hh:mm:ss | Het tijdstip waarop het verzoek is verwerkt. |
4. Voltooiing van de betaling
U moet de waarde van de errorcode teruggestuurd in het antwoord op VERIFYAUTHRESPONSE om het juiste antwoordbericht te helpen bepalen dat in de browser van de klant moet worden weergegeven, waarin het resultaat van de betaling wordt vermeld (bv. succes/fout).
- Als u de autorisatie URL-kennisgeving ontvangt met errorcode=0 en het antwoord op VERIFYAUTHRESPONSE omvat ook errorcode=0, geeft een succesbericht weer.
- Als u de autorisatie URL-kennisgeving ontvangt waar errorcode teruggestuurd is NIET 0 of het antwoord op VERIFYAUTHRESPONSE omvat errorcode dat is NIET 0, een foutmelding geven en de klant de mogelijkheid bieden het opnieuw te proberen, of de klant alternatieve betaalmethoden aanbieden.
Zodra een betaling is geautoriseerd, wordt het geld op uw bankrekening gestort volgens dezelfde procedure als bij standaard kaarttransacties. Klik hier voor meer informatie.
afwikkeling melding
Voordat u begint met testen, raden wij u aan ook URL-kennisgevingen te configureren die worden verwerkt op afwikkeling. U moet contact opnemen met ons Support Team en verzoeken dat een nieuwe regel wordt geconfigureerd om te worden verwerkt op afwikkeling van MobilePay transacties.
Wij raden u aan de volgende velden op te nemen in uw afwikkeling kennisgeving:
- Status betaling (settlestatus)
- Geregeld tijdstempel (settledtimestamp)
- Site referentie (sitereference)
- Transactiereferentie (transactionreference)
U moet de inhoud van elke ontvangen kennisgeving controleren en dienovereenkomstig reageren door de in onze URL-kennisgevingen documentatie. In het bijzonder moet u kijken naar de bijgewerkte settlestatus waarde:
- Als de settlestatus is bijgewerkt tot "100", betekent dit dat het geld is vereffend. Als dit echter is bijgewerkt tot "3", betekent dit dat er een probleem is geweest en dat de betaling vervolgens is geannuleerd.
Test
U moet uw oplossing testen voordat u live betalingen kunt gaan verwerken. Testtransacties worden verwerkt via uw test site referentie. Bij het uitvoeren van testtransacties zal de redirect URL die in het antwoord op ORDER wordt geretourneerd, uw browser omleiden naar de MobilePay testomgeving om een betaling te simuleren. Tijdens een testbetalingssessie moet u de transactie goedkeuren met behulp van de MobilePay testapp die op uw smartphone is geïnstalleerd (klik hier om naar boven te scrollen waar we dit in meer detail uitleggen). Dit simuleert de stappen die de klant in de productieomgeving zou uitvoeren om een MobilePay transactie te voltooien.
Annuleren/terugbetalen van MobilePay transacties
Vóór afwikkeling kunt u een lopende MobilePay transactie annuleren.
De mogelijkheid om MobilePay transacties te annuleren wordt ondersteund voor winkeliers met een Trust Payments acquiring account. Als u een andere acquiring bank gebruikt, moet u contact opnemen met ons Support Team om te controleren of deze functie wordt ondersteund voordat u verder gaat.
Na afwikkeling kunt u in plaats daarvan een MobilePay transactie terugbetalen. Terugbetalingen voor MobilePay volgen de standaard afwikkeling stroom voor kaarttransacties, waarbij het geld doorgaans binnen 24 uur naar de klant terugvloeit.
-
Om een annulering of terugbetaling uit te voeren, hebt u de unieke transactionreference die Trust Payments toewijst om het AUTH verzoek te identificeren. U kunt deze waarde terugvinden op het GET-verzoek wanneer de klant wordt teruggeleid van MobilePay's servers, maar hij kan ook worden opgehaald uit de autorisatie URL-kennisgeving eerder beschreven (indien geconfigureerd).
De transactionreference nodig is, is de waarde die het antwoord op AUTH teruggeeft, NIET de ORDER reactie.
-
Om een MobilePay transactie te annuleren, moet u een TRANSACTIONUPDATE verzoek indienen, inclusief de transactionreference en een update van settlestatus=3, en behandel het antwoord dienovereenkomstig. Klik hier voor meer informatie.
-
Om een MobilePay transactie terug te betalen, moet u in plaats daarvan een REFUND antwoord indienen, inclusief de transactionreference, en behandel het antwoord dienovereenkomstig. Klik hier voor meer informatie.
-
Vereisten
- U kunt een betaling niet terugbetalen totdat de AUTH is voldaan (settlestatus is "100").
- U kunt niet een hoger bedrag terugbetalen dan oorspronkelijk was verrekend.