Was ist eine Merchant Initiated Transaction (MIT)?
Eine vom Händler initiierte Transaktion (MIT) liegt vor, wenn ein Händler eine Transaktion unter Verwendung gespeicherter Kartendaten initiiert, ohne dass der Karteninhaber direkt mit dem Händler unter Autorisierung interagiert. Nachstehend finden Sie die von uns unterstützten Gründe für eine vom Händler initiierte Transaktion (MIT) und Hinweise zu den Kriterien für die Verwendung.
Vorteile der Unterstützung MIT
- Die Zahlungsdaten müssen vom Kunden nur einmal zum Zeitpunkt des Kaufs eingegeben werden.
- Verarbeiten Sie wiederholte Zahlungen für Kunden, ohne dass Sie deren Kartendaten für die zukünftige Verwendung in Ihrem eigenen System speichern müssen. Die Zahlungsdaten werden sicher auf unseren Servern gespeichert.
- Eine Merchant Initiated Transaction (MIT) wird nur bearbeitet, wenn eine Anfrage von Ihrem System übermittelt wurde. Händler können wählen, wann vom Händler initiierte Transaktionen (MIT) verarbeitet werden.
Vom Händler initiierte Transaktionen (MIT) Arten und Gründe
"A" - Erneute Autorisierung
Dies wird verwendet, um einen zuvor erfolgreich autorisierten Betrag erneut zu autorisieren, der nicht beglichen wurde, bevor die erfolgreiche Autorisierung abgelaufen ist. Beispiel: Der Karteninhaber gibt am 1. Januar eine Bestellung auf, und der am 1. Januar durchgeführte Autorisierung Versuch liefert eine autorisierte Antwort. Der Händler aktualisiert den Abrechnung Status der erfolgreichen Autorisierung auf ausgesetzt, da er nicht in der Lage ist, die bestellten Waren/Dienstleistungen bis zum 1. Februar zu beschaffen und zu liefern. Zu diesem Zeitpunkt ist die ursprüngliche erfolgreiche Autorisierung abgelaufen. Die übergeordnete Transaktion muss erfolgreich sein und darf keine account check sein.
"C" - Ungeplante Zahlung
Dies wird verwendet, um eine außerplanmäßige, vom Händler initiierte Transaktion zu verarbeiten (MIT). Zum Beispiel, um ein Konto auf einen vereinbarten Mindestsaldo aufzuladen, wenn der Kontostand unter den vereinbarten Mindestsaldo fällt. Die übergeordnete Transaktion oder account check muss erfolgreich sein.
"D" - Zeitverzögerte Gebühren
Dies wird verwendet, um eine außerplanmäßige, vom Händler initiierte Transaktion (MIT) abzuwickeln, um verspätete Kosten zu decken, die dem Händler zum Zeitpunkt der Bestellung des Produkts oder der Dienstleistung durch den Karteninhaber nicht bekannt waren, z. B. um zusätzliche Lieferkosten zu bezahlen, die zum Zeitpunkt der vorherigen Autorisierung nicht bekannt waren. Die übergeordnete Transaktion muss erfolgreich sein und darf keine account check sein.
"S" - Erneutes Absenden
Dies wird verwendet, um eine erneute Autorisierung eines zuvor abgelehnten Autorisierung Versuchs zu beantragen. Wenn ein Händler beispielsweise Autorisierung unterstützt, ist es aufgrund der Tatsache, dass der Karteninhaber nicht mehr direkt mit Autorisierung interagiert, nicht möglich, den Karteninhaber sofort über den Ablehnungsstatus zu informieren und eine alternative Zahlungsmethode zu verlangen. In diesem Szenario kann der Händler den Wert "Wiedervorlage" der vom Händler initiierten Transaktion (MIT) verwenden, um einen erneuten Versuch Autorisierung für den zuvor abgelehnten Betrag zu unternehmen. Der Händler sollte es maximal dreimal erneut versuchen. Die übergeordnete Transaktion muss abgelehnt werden und darf keine account check sein.
"X" - Nicht erschienen
Dies wird verwendet, um Autorisierung für eine vereinbarte Gebühr anzufordern, wenn der Karteninhaber nicht auftaucht, um einen Kauf für ein zuvor gebuchtes Produkt oder eine Dienstleistung abzuschließen. Zum Beispiel, wenn ein Karteninhaber nicht zu einer Restaurant-, Hotel- oder Autovermietungsbuchung auftaucht. Die übergeordnete Transaktion oder account check muss erfolgreich sein.
Überblick über den Prozess
-
Der Karteninhaber gibt seine Kartendaten ein und erklärt sich mit der Speicherung und/oder Nutzung seiner Kartendaten zum Zwecke der Abwicklung von Merchant Initiated Transactions (MIT) einverstanden.
-
Stimmt der Kunde der Speicherung seiner Kartendaten zum Zwecke der Abwicklung von vom Händler initiierten Transaktionen (MIT) zu, kann der Händler verlangen, dass der Karteninhaber zu diesem Zeitpunkt Geld abhebt oder nicht. Zum Beispiel:
Szenario 1
Der Karteninhaber zahlt die Anmeldegebühr in Höhe von 10 £ als ECOM -Transaktion zum Zeitpunkt der Angabe/Erfassung der Kartendaten.Szenario 2
Der Händler verlangt keine Zahlung zum Zeitpunkt der Übermittlung/Erfassung der Kartendaten.
- Wenn der Händler bereit ist, die erste oder nächste vom Händler initiierte Transaktion zu berechnen (MIT), sendet er eine Webservices API AUTH Anfrage oder verwendet Portal , um die vom Händler initiierte Transaktion zu verarbeiten (MIT).
Antrag der Eltern
In diesem Abschnitt wird die erste Anfrage beschrieben, die Ihr System verarbeiten muss. Sie können die in dieser Anfrage übermittelten Zahlungsdetails in nachfolgende, vom Händler initiierte Transaktionen übernehmen.
Konfiguration der übergeordneten Anforderung
Erweitern Sie den entsprechenden Abschnitt unten, um zu erfahren, wie Sie die übergeordnete Anfrage über Ihre bevorzugte Schnittstelle konfigurieren.
Payment Pages ist unsere vollständig gehostete Checkout-Lösung. Wenn Sie mit unserer Payment Pages Lösung nicht vertraut sind, klicken Sie hier, um mehr zu erfahren und loszulegen.
Um den Ablauf THREEDQUERY und dann ACCOUNTCHECK zu unterstützen, müssen Kunden von Payment Pages die Funktion Erweitertes Post verwenden. Klicken Sie hier, um mehr zu erfahren.
Der THREEDQUERY dann AUTH Ablauf wird durch die Verarbeitung einer standardmäßigen, 3-D Secure authentifizierten Transaktion unter Verwendung von Payment Pages durchgeführt, wobei zusätzliche Felder in die POST aufgenommen werden, wie unten beschrieben.
<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>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
Feldspezifikation
Feld | Format | Beschreibung | |
mainamount | Numerisch (14) |
Der mit diesem Antrag verbundene Betrag in Haupteinheiten, wobei die Dezimalstellen durch Komma/Dezimalpunkt getrennt werden. z .B. €10,99 würde als "10.99" und ¥246 als "246"eingereicht werden. Dieser Betrag wird sofort auf dem Bankkonto des Kunden reserviert. Dieser Wert wird an alle untergeordneten Anfragen vererbt, die von dieser übergeordneten Anfrage erben, sofern das Feld nicht manuell überschrieben wird. |
|
credentialsonfile | Numerisch (1) | Visa und Mastercard haben vorgeschrieben, dass Sie die Zustimmung des Karteninhabers einholen müssen, bevor Sie Kartendaten zur späteren Verwendung speichern. Danach müssen Sie Zugangsdaten, die für eine spätere Verwendung gespeichert werden sollen, entsprechend kennzeichnen, indem Sie das Kennzeichen Daten Hinterlegt (CoF) setzen. Aus diesem Grund müssen Sie immer credentialsonfile mit dem Wert "1" in der übergeordneten Anfrage. | |
currencyiso3a | Alpha (3) | Die Transaktion Währung. Dies muss bei allen künftigen untergeordneten Anfragen, die von dieser übergeordneten Anfrage geerbt werden, gleich bleiben. | |
sitereference |
Alphanumerisch & Unterstrich (50) |
Die Website-Referenz bezieht sich auf Ihr individuelles Konto, das Sie bei der Einrichtung erhalten haben. Wenn Sie Ihre Website-Referenz nicht kennen, wenden Sie sich bitte an unser Support-Team. | |
sitesecurity |
Sicherheits-Hashwert der Website |
Wird verwendet, um den Sicherheits-Hash der Anfrageseite im POST zu übermitteln. | |
sitesecuritytimestamp |
Datum JJJJ-MM-TT hh:mm:ss |
Möglichst genaue Angabe des Zeitstempels, der angibt, wann der Zahlungsvorgang des Kunden eingeleitet wurde. Der Kunde hat ab dem angegebenen Zeitpunkt 3 Stunden Zeit, um die Zahlung abzuschließen.
Zusätzliche Überlegungen:
|
|
stprofile |
Alphanumerisch (20)
|
Wird verwendet, um das Styling festzulegen, mit dem Payment Pages gerendert wird. Bei Verwendung des Standardaussehens ist dies auf "default" eingestellt. Klicken Sie hier für weitere Informationen. |
Antwort
Sie müssen sicherstellen, dass Ihr System die transactionreference Feld, das in der Browserumleitung am Ende der Kassensitzung zurückgegeben wird (falls konfiguriert), und/oder die URL-Benachrichtigung (falls konfiguriert), da dieser in dem später eingereichten untergeordneten Antrag referenziert werden muss.
Unter JavaScript Library finden Sie Ressourcen, die Ihnen helfen, schnell Ihre eigene optimierte Kassenlösung im Internet zu erstellen. Wenn Sie mit unserer JavaScript Library Lösung nicht vertraut sind, klicken Sie hier, um mehr zu erfahren und loszulegen.
- Sowohl die [“THREEDQUERY”,”AUTH”] und [“THREEDQUERY”,”ACCOUNTCHECK”] Elternanfragen folgen einer ähnlichen Spezifikation wie eine Standard-Zahlung, die über unsere JavaScript Library abgewickelt wird, unterliegen aber anderen Anforderungen, wenn sie als Teil einer Merchant Initiated Transactions-Lösung eingesetzt werden.
- Diese Änderungen werden im Rahmen der payload des JWT.
- Weitere Informationen finden Sie in dem Beispiel und der Feldspezifikation unten.
{
"payload":{
"accounttypedescription":"ECOM",
"baseamount":"1050",
"credentialsonfile":"1",
"currencyiso3a":"GBP",
"requesttypedescriptions":["THREEDQUERY","AUTH"]
"sitereference":"test_site12345"
},
"iat":1559033849,
"iss":"jwt.user"
}
Feldspezifikation
Feld | Format | Beschreibung | |
accounttypedescription | Alpha (20) |
Geben Sie "ECOM" ein, um eine E-Commerce-Transaktion anzuzeigen. Wir empfehlen unser Support-Team zu kontaktieren zu kontaktieren, um zu erfahren, welche Kontotypen auf Ihrem Website-Referenz unterstützt werden. |
|
baseamount | Numerisch (13) |
Der mit diesem Antrag verbundene Betrag in Basiseinheiten, ohne Kommas oder Dezimalpunkte. z.B. €10,99 würde als "1099" übermittelt werden, aber ¥246 würde als "246" übermittelt werden.
Dieser Wert wird an alle untergeordneten Anfragen vererbt, die von dieser übergeordneten Anfrage erben, sofern das Feld nicht manuell überschrieben wird. |
|
credentialsonfile | Numerisch (1) |
Visa und Mastercard haben vorgeschrieben, dass Sie die Zustimmung des Karteninhabers einholen müssen, bevor Sie Kartendaten zur späteren Verwendung speichern. Danach müssen Sie Zugangsdaten, die für eine spätere Verwendung gespeichert werden sollen, entsprechend kennzeichnen, indem Sie das Kennzeichen Daten Hinterlegt (CoF) setzen. Aus diesem Grund müssen Sie immer credentialsonfile mit dem Wert "1" in der übergeordneten Anfrage.
Der hier übermittelte Wert wird in der Antwort JWT zurückgegeben. |
|
currencyiso3a | Alpha (3) | Die Transaktion Währung. Dies muss bei allen künftigen untergeordneten Anfragen, die von dieser übergeordneten Anfrage geerbt werden, gleich bleiben. | |
requesttypedescriptions | Liste |
Die zu bearbeitenden Anfragetypen. Für den Übergeordnete sollte dies entweder sein [“THREEDQUERY”,”AUTH”] oder [“THREEDQUERY”,”ACCOUNTCHECK”] |
|
sitereference |
Alphanumerisch & Unterstrich (50) |
Die Website-Referenz bezieht sich auf Ihr individuelles Konto, das Sie bei der Einrichtung erhalten haben. Wenn Sie Ihre Website-Referenz nicht kennen, wenden Sie sich bitte an unser Support-Team. |
Antwort
Der zurückgegebene Antwort-JWT entspricht der gleichen Spezifikation wie bei der Verarbeitung einer Standardzahlung. Von besonderer Bedeutung ist, dass Ihr System die transactionreference zurückgegeben, da diese in dem später eingereichten untergeordnete Anfrage referenziert werden muss. Klicken Sie hier, um mehr über die Entschlüsselung der JWT-Antwort zu erfahren.
Unser Mobile SDK bietet Ressourcen, mit denen Sie schnell eine optimierte Checkout-Lösung in Ihre mobile App integrieren können. Wenn Sie mit unserer Mobile SDK-Lösung nicht vertraut sind, klicken Sie hier, um mehr zu erfahren und loszulegen.
- Sowohl die [“THREEDQUERY”,”AUTH”] und [“THREEDQUERY”,”ACCOUNTCHECK”] Elternanfragen folgen einer ähnlichen Spezifikation wie eine Standardzahlung, die über unser Mobile SDK abgewickelt wird, unterliegen aber anderen Anforderungen, wenn sie als Teil einer Merchant Initiated Transactions-Lösung eingesetzt werden.
- Diese Änderungen werden im Rahmen der payload des JWT.
- Weitere Informationen finden Sie in dem Beispiel und der Feldspezifikation unten.
{
"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"
}
Feldspezifikation
Feld | Format | Beschreibung | |
accounttypedescription | Alpha (20) |
Geben Sie "ECOM" ein, um eine E-Commerce-Transaktion anzuzeigen. Wir empfehlen unser Support-Team zu kontaktieren zu kontaktieren, um zu erfahren, welche Kontotypen auf Ihrem Website-Referenz unterstützt werden. |
|
baseamount | Numerisch (13) |
Der mit diesem Antrag verbundene Betrag in Basiseinheiten, ohne Kommas oder Dezimalpunkte. z.B. €10,99 würde als "1099" übermittelt werden, aber ¥246 würde als "246" übermittelt werden.
Dieser Wert wird an alle untergeordneten Anfragen vererbt, die von dieser übergeordneten Anfrage erben, sofern das Feld nicht manuell überschrieben wird. |
|
credentialsonfile | Numerisch (1) |
Visa und Mastercard haben vorgeschrieben, dass Sie die Zustimmung des Karteninhabers einholen müssen, bevor Sie Kartendaten zur späteren Verwendung speichern. Danach müssen Sie Zugangsdaten, die für eine spätere Verwendung gespeichert werden sollen, entsprechend kennzeichnen, indem Sie das Kennzeichen Daten Hinterlegt (CoF) setzen. Aus diesem Grund müssen Sie immer redentialsonfile mit dem Wert "1" in der übergeordneten Anfrage.
Der hier übermittelte Wert wird in der Antwort JWT zurückgegeben. |
|
currencyiso3a | Alpha (3) | Die Transaktion Währung. Dies muss bei allen künftigen untergeordneten Anfragen, die von dieser übergeordneten Anfrage geerbt werden, gleich bleiben. | |
requesttypedescriptions | Liste |
Die zu bearbeitenden Anfragetypen. Für den Übergeordnete sollte dies entweder sein [“THREEDQUERY”,”AUTH”] oder [“THREEDQUERY”,”ACCOUNTCHECK”] |
|
sitereference |
Alphanumerisch & Unterstrich (50) |
Die Website-Referenz bezieht sich auf Ihr individuelles Konto, das Sie bei der Einrichtung erhalten haben. Wenn Sie Ihre Website-Referenz nicht kennen, wenden Sie sich bitte an unser Support-Team. | |
termurl | URL (1024) |
Diese URL wird verwendet, um dem Kartenaussteller mitzuteilen, wohin er den Browser des Kunden senden soll, nachdem er sich am ACS des Kartenausstellers authentifiziert hat. Sie müssen die folgende URL in dieses Feld eingeben, wenn Sie 3-D Secure ausführen: https://payments.securetrading.net/process/payments/mobilesdklistener |
Antwort
Der zurückgegebene Antwort-JWT entspricht der gleichen Spezifikation wie bei der Verarbeitung einer Standardzahlung. Von besonderer Bedeutung ist, dass Ihr System die transactionreference zurückgegeben, da diese in dem später eingereichten untergeordnete Anfrage referenziert werden muss. Klicken Sie hier, um mehr über die Entschlüsselung der JWT-Antwort zu erfahren.
Unsere Webservices API ist eine leistungsstarke Server-zu-Server-Zahlungsverarbeitungslösung, die mehrere Nachrichtentypen unterstützt. Wenn Sie mit unserer Webservices API noch nicht vertraut sind, klicken Sie hier, um mehr zu erfahren und loszulegen.
- Das nachstehende Beispiel ist eine AUTH Anfrage, die für die Verarbeitung der ersten Zahlung im Fluss "Merchant Initiated Transactions" verwendet werden kann.
- Die accounttypedescription ist "ECOM", um anzuzeigen, dass die Transaktion über Ihre Website durchgeführt wurde.
- Wenn Sie eine Vereinbarung über händlerinitiierte Transaktionen starten müssen, ohne eine Zahlung zu verarbeiten, können Sie den requesttypedescriptions Wert in "ACCOUNTCHECK" ändern.
#!/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>
Feld | Format | Beschreibung | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) |
Geben Sie "ECOM" ein, um eine E-Commerce-Transaktion anzuzeigen. |
|
baseamount XPath: /billing/amount |
Numerisch (13) |
Der mit diesem Antrag verbundene Betrag in Basiseinheiten, ohne Kommas oder Dezimalpunkte. z.B. €10,99 würde als "1099" übermittelt werden, aber ¥246 würde als "246" übermittelt werden. Dieser Wert wird an alle untergeordneten Anfragen vererbt, die von dieser übergeordneten Anfrage erben, sofern das Feld nicht manuell überschrieben wird. Wenn Sie eine ACCOUNTCHECK durchführen, müssen Sie den zu verarbeitenden Höchstbetrag in jede nachfolgende untergeordnete Transaktion aufnehmen. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numerisch (1) |
Visa und Mastercard haben vorgeschrieben, dass Sie die Zustimmung des Karteninhabers einholen müssen, bevor Sie Kartendaten zur späteren Verwendung speichern. Danach müssen Sie Zugangsdaten, die für eine spätere Verwendung gespeichert werden sollen, entsprechend kennzeichnen, indem Sie das Kennzeichen Daten Hinterlegt (CoF) setzen. Aus diesem Grund müssen Sie immer credentialsonfile mit dem Wert "1" in der übergeordneten Anfrage.
Der hier übermittelte Wert wird in der Antwort JWT zurückgegeben. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) | Die Transaktion Währung. Dies muss bei allen künftigen untergeordneten Anfragen, die von dieser übergeordneten Anfrage geerbt werden, gleich bleiben. | |
eingeschrieben XPath: /threedsecure/einschreiben |
Saibling (1) | Geben Sie "Y" ein, um anzugeben, dass die Karte registriert ist. Informationen zum Umgang mit nicht registrierten Karten finden Sie weiter unten. | |
expirydate XPath: /abrechnung/zahlung/expirydate |
Datum MM/JJJJ | Das auf der Karte aufgedruckte Ablaufdatum. | |
pan XPath: /abrechnung/zahlung/pan |
Numerisch (12-19) | Dies ist die lange Nummer, die auf der Vorderseite der Kundenkarte aufgedruckt ist. | |
requesttypedescriptions XPath: /@type |
Liste |
Die zu verarbeitenden Anfragetypen. Für die Muttergesellschaft sollte dies entweder ["AUTH " ] oder ["ACCOUNTCHECK " ] sein. |
|
sitereference XPath: /operation/sitereference |
Alphanumerisch & Unterstrich (50) |
Die Website-Referenz bezieht sich auf Ihr individuelles Konto, das Sie bei der Einrichtung erhalten haben. Wenn Sie Ihre Website-Referenz nicht kennen, wenden Sie sich bitte an unser Support-Team. | |
status XPath: /threedsecure/status |
Saibling (1) |
Zeigt an, ob der Kunde im ACS des Kartenausstellers authentifiziert wurde oder nicht.
Eine erfolgreiche Authentifizierung mit Status "Y" ist erforderlich. |
|
billingfirstname XPath: /abrechnung/name/erste |
Alphanumerisch einschließlich Symbole (127) |
Der Kunde ist Rechnungsvorname. Erforderlich für Glücksspielanbieter. |
|
billinglastname XPath: /abrechnung/name/last |
Alphanumerisch einschließlich Symbole (127) |
Der Kunde ist Rechnungsnachname. Erforderlich für Glücksspielanbieter. |
|
cavv XPath: /threedsecure/cavv |
Alphanumerisch (56) |
Die eindeutige Cardholder Authentication Verification Value (CAVV), die mit der Transaktion verbunden ist. Geben Sie diesen Wert immer an, wenn er verfügbar ist. |
|
eci XPath: /threedsecure/eci |
Alphanumerisch (2) |
Die mit der Transaktion verbundene Sicherheitsstufe ECI (E-Commerce Indicator). Geben Sie diesen Wert immer an, wenn er verfügbar ist. |
|
threedversion XPath: /threedsecure/version |
Numerisch (6) |
Version von 3-D Secure , die zur Authentifizierung der Zahlung verwendet wird. (z.B. "2.2.0") Geben Sie diesen Wert immer an, wenn er verfügbar ist. |
|
threeddirectorytransactionreference XPath: /threedsecure/directorytransactionreference |
Alphanumerisch (48) |
Einzigartige DSTransactionId von Ihrem MPI Anbieter zurückgegeben. Geben Sie diesen Wert immer an, wenn er verfügbar ist. |
|
securitycode XPath: /abrechnung/zahlung/securitycode |
Numerisch (3-4) |
Dies ist der 3-stellige Sicherheitscode, der auf der Rückseite der Karte aufgedruckt ist. (Bei AMEX ist dies ein 4-stelliger Code, der sich auf der Vorderseite der Karte befindet) Dieses Feld ist für Trust Payments nicht unbedingt erforderlich, wird aber für die Verarbeitung von Sicherheitscodeprüfungen dringend empfohlen. Außerdem können einige Banken die Zahlung ablehnen, wenn der Sicherheitscode nicht vorhanden ist. |
Antwort
Die zurückgegebene Antwort entspricht der Spezifikation einer StandardantwortAUTH .
Unsere Webservices API ist eine leistungsstarke Server-zu-Server-Zahlungsverarbeitungslösung, die mehrere Nachrichtentypen unterstützt. Wenn Sie mit unserer Webservices API noch nicht vertraut sind, klicken Sie hier, um mehr zu erfahren und loszulegen.
- Das nachstehende Beispiel ist eine AUTH Anfrage, die für die Verarbeitung der ersten Zahlung im Fluss "Merchant Initiated Transactions" verwendet werden kann.
- Die accounttypedescription ist "MOTO", um anzuzeigen, dass die Bestellung per Telefon aufgegeben wurde.
- Wenn Sie eine Vereinbarung über händlerinitiierte Transaktionen starten müssen, ohne eine Zahlung zu verarbeiten, können Sie den requesttypedescriptions Wert in "ACCOUNTCHECK" ändern.
#!/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>
Feld | Format | Beschreibung | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) |
Geben Sie "MOTO" ein, um eine Mail Order Telephone Order-Transaktion anzugeben. (Beachten Sie, dass die 3-D Secure Authentifizierung für MOTO Transaktionen nicht unterstützt wird) |
|
baseamount XPath: /billing/amount |
Numerisch (13) |
Der mit diesem Antrag verbundene Betrag in Basiseinheiten, ohne Kommas oder Dezimalpunkte. z.B. €10,99 würde als "1099" übermittelt werden, aber ¥246 würde als "246" übermittelt werden. Dieser Wert wird an alle untergeordneten Anfragen vererbt, die von dieser übergeordneten Anfrage erben, sofern das Feld nicht manuell überschrieben wird. Wenn Sie eine ACCOUNTCHECK durchführen, müssen Sie den zu verarbeitenden Höchstbetrag in jede nachfolgende untergeordnete Transaktion aufnehmen. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numerisch (1) |
Visa und Mastercard haben vorgeschrieben, dass Sie die Zustimmung des Karteninhabers einholen müssen, bevor Sie Kartendaten zur späteren Verwendung speichern. Danach müssen Sie Zugangsdaten, die für eine spätere Verwendung gespeichert werden sollen, entsprechend kennzeichnen, indem Sie das Kennzeichen Daten Hinterlegt (CoF) setzen. Aus diesem Grund müssen Sie immer credentialsonfile mit dem Wert "1" in der übergeordneten Anfrage.
Der hier übermittelte Wert wird in der Antwort JWT zurückgegeben. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) | Die Transaktion Währung. Dies muss bei allen künftigen untergeordneten Anfragen, die von dieser übergeordneten Anfrage geerbt werden, gleich bleiben. | |
expirydate XPath: /abrechnung/zahlung/expirydate |
Datum MM/JJJJ | Das auf der Karte aufgedruckte Ablaufdatum. | |
pan XPath: /abrechnung/zahlung/pan |
Numerisch (12-19) | Dies ist die lange Nummer, die auf der Vorderseite der Kundenkarte aufgedruckt ist. | |
requesttypedescriptions XPath: /@type |
Liste |
Die zu verarbeitenden Anfragetypen. Für die Muttergesellschaft sollte dies entweder ["AUTH " ] oder ["ACCOUNTCHECK " ] sein. |
|
sitereference XPath: /operation/sitereference |
Alphanumerisch & Unterstrich (50) |
Die Website-Referenz bezieht sich auf Ihr individuelles Konto, das Sie bei der Einrichtung erhalten haben. Wenn Sie Ihre Website-Referenz nicht kennen, wenden Sie sich bitte an unser Support-Team. | |
billingfirstname XPath: /abrechnung/name/erste |
Alphanumerisch einschließlich Symbole (127) |
Der Kunde ist Rechnungsvorname. Erforderlich für Glücksspielanbieter. |
|
billinglastname XPath: /abrechnung/name/last |
Alphanumerisch einschließlich Symbole (127) |
Der Kunde ist Rechnungsnachname. Erforderlich für Glücksspielanbieter. |
|
securitycode XPath: /abrechnung/zahlung/securitycode |
Numerisch (3-4) |
Dies ist der 3-stellige Sicherheitscode, der auf der Rückseite der Karte aufgedruckt ist. (Bei AMEX ist dies ein 4-stelliger Code, der sich auf der Vorderseite der Karte befindet) Dieses Feld ist für Trust Payments nicht unbedingt erforderlich, wird aber für die Verarbeitung von Sicherheitscodeprüfungen dringend empfohlen. Außerdem können einige Banken die Zahlung ablehnen, wenn der Sicherheitscode nicht vorhanden ist. |
Antwort
Die zurückgegebene Antwort entspricht der Spezifikation einer StandardantwortAUTH .
Ihr Fortschritt
Nachdem Sie die obigen Anweisungen befolgt haben, sollten Sie nun in der Lage sein, wiederkehrende Zahlungen manuell über unsere Webservices API zu verarbeiten. Sie können die transactionreference die in der Antwort zurückgegeben wird, und nehmen diese in nachfolgende untergeordnete Anfragen auf.
Antrag des Kindes
In diesem Abschnitt werden die nachfolgenden vom Händler initiierten Transaktionen beschrieben. In diesem Abschnitt wird davon ausgegangen, dass die zuvor beschriebene übergeordnete Anfrage bereits bearbeitet wurde.
Bevor Sie eine untergeordnete Anfrage bearbeiten, müssen Sie sicherstellen, dass der übergeordnete Anfrage erfolgreich abgeschlossen wurde. Untersuchen Sie alle aufgetretenen Probleme und wenden Sie sich an unser Support-Team, wenn Sie Hilfe benötigen.
Wenn eine parenttransactionreference von einem erfolgreichen Elternteil "AUTH" oder "ACCOUNTCHECK" in einer untergeordneten Anfrage enthalten ist, stellt Trust Payments die erforderlichen Schemareferenzdaten für Visa und Mastercard bereit.
Bitte wenden Sie sich an unser Support-Team, wenn Sie Referenzdaten eines anderen Verarbeiters einbeziehen oder untergeordnete Transaktionen mit PAN und Ablaufdatum verarbeiten möchten. Klicken Sie hier, um mehr zu erfahren.
Übersicht der Kinderanträge
- Ihr System fordert die Verarbeitung einer neuen Zahlung an, indem es manuell eine AUTH Anfrage über unsere Webservices API übermittelt, die die transactionreference der Muttergesellschaft AUTH oder ACCOUNTCHECK auf dem parenttransactionreference Feld.
Für diejenigen, die unser JavaScript Library oder Mobile SDK verwenden, um die übergeordnete Anfrage zu bearbeiten, enthält das anschließend zurückgegebene Antwort-JWT auch die transactionreference der THREEDQUERY. Sie dürfen dies nicht im untergeordnete Anfrage angeben. Stattdessen müssen Sie nur die transactionreference Wert, der mit dem übergeordneten AUTH oder ACCOUNTCHECK verbunden ist.
- Wir wenden uns an die übernehmende Bank, um Autorisierung für die Zahlung zu kontaktieren, wobei wir die von der übergeordneten AUTH/ACCOUNTCHECK geerbten Rechnungs- und Lieferdaten verwenden (Ihr System muss diese Daten nicht erneut übermitteln).
- Ihr System erhält eine Antwort von AUTH , die die Ergebnisse der Anfrage enthält.
Anforderung
Die für den untergeordneten Antrag eingereichte Anforderungstyp muss "AUTH" lauten (eingereicht in der requesttypedescriptions Feld). Die AUTH Unterabfrage folgt einer ähnlichen Spezifikation wie die Standardabfrage AUTH , unterliegt jedoch anderen Anforderungen, wenn sie als Teil einer Merchant Initiated Transactions-Lösung verwendet wird. Weitere Informationen finden Sie in dem Beispiel und der Feldspezifikation unten.
#!/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>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
Im obigen Beispiel wird davon ausgegangen, dass die vorherige Anfrage die erste war, die bearbeitet wurde, weshalb die subscriptionnumber wird der Wert "2" zugewiesen. Nachfolgende untergeordnete Anträge werden nach der gleichen Struktur bearbeitet, wobei diese Zahl jedes Mal erhöht wird (d. h. die nächste Zahlung in der Reihenfolge wäre "3", dann "4" usw.).
Feld | Format | Beschreibung | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | Übermitteln Sie denselben accounttypedescription Wert in der untergeordneten Anfrage wie in der verknüpften übergeordneten Anfrage. | |
baseamount XPath: /billing/amount |
Numerisch (13) |
Der Betrag, der mit der untergeordneten Zahlung verbunden ist, in Basiseinheiten, ohne Kommas oder Dezimalpunkte. z.B. €10,99€ würde als "1099" übermittelt werden, aber ¥246 würde als "246" übermittelt werden. Wenn Sie dieses Feld nicht ausfüllen, wird der verarbeitete Betrag von der vorhergehenden übergeordneten Anfrage übernommen. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numerisch (1) |
Dies ist für die Transaktionen Visa und Mastercard erforderlich, wenn der Händler Daten Hinterlegt (CoF) verwendet. Geben Sie in diesem Feld eine "2" ein, um anzugeben, dass die Zahlung mit zuvor gespeicherten Berechtigungsnachweisen erfolgt. |
|
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
Bei der Einreichung muss es sich um dieselbe Währung handeln, die auch für den übergeordneten Antrag verwendet wird.
Wird dieser Wert nicht übermittelt, wird er von der übergeordneten Anfrage geerbt. |
|
initiationreason XPath: /operation/initiationreason |
Saibling (1) |
Sie müssen einen Grund für die Bearbeitung der tokenisierten Zahlung angeben. Geben Sie einen der folgenden Werte an, der den Grund für die Zahlung am besten beschreibt:
Nur initiationreason von "C" wird für vom Händler initiierte Account Funding Transactions (AFT) unterstützt. |
|
parenttransactionreference XPath: /operation/parenttransactionreference |
Alphanumerisch & Bindestriche (25) |
Sie müssen die transactionreference Wert des AUTH oder ACCOUNTCHECK , der in der JWT-Antwort der ursprünglichen übergeordneten Anfrage zurückgegeben wird.
Sie dürfen nicht die transactionreference Wert, der mit der THREEDQUERY verbunden ist. |
|
requesttypedescriptions XPath: /@type |
Alpha (20) | Sie müssen "AUTH" eingeben, wie im Beispiel des Antrags gezeigt. | |
sitereference XPath: /operation/sitereference |
Alphanumerisch & Unterstrich (50) |
Die Website-Referenz bezieht sich auf Ihr individuelles Konto, das Sie bei der Einrichtung erhalten haben. Wenn Sie Ihre Website-Referenz nicht kennen, wenden Sie sich bitte an unser Support-Team. |
Antwort
Die zurückgegebene Antwort entspricht der gleichen Spezifikation wie eine Standard AUTH Antwort, mit Ausnahme des zusätzlichen Feldes acquireradvicecode die zurückgegeben werden können (weitere Informationen finden Sie in der nachstehenden Feldspezifikation).
Feldspezifikation
Feld | Format | Beschreibung | |
accounttypedescription XPath: /operation/accounttypedescription |
Alpha (20) | Der Kontotyp "RECUR" wird zurückgegeben. | |
acquireradvicecode XPath: /acquireradvicecode |
Numerisch (1) |
Ein von der erwerbenden Bank zurückgegebener numerischer Wert, der angibt, ob weitere Zahlungen verarbeitet werden können. Eine vollständige Zuordnung dieser Werte finden Sie im Abschnitt "Zusätzliche Hinweise" am Ende dieser Seite. Wird nur zurückgesandt, wenn es von Ihrer anwerbenden Bank unterstützt wird. |
|
baseamount XPath: /billing/amount |
Numerisch (13) |
Der Betrag, der mit der untergeordneten Zahlung verbunden ist, in Basiseinheiten, ohne Kommas oder Dezimalpunkte. z.B. €10,99€ würde als "1099" übermittelt werden, aber ¥246 würde als "246" übermittelt werden. Wir empfehlen, zu überprüfen, ob dieser Betrag mit dem von Ihnen erwarteten Wert übereinstimmt. Der hier zurückgegebene Betrag entspricht dem Betrag, der dem Kunden bei der untergeordneten Zahlung belastet wird. |
|
credentialsonfile XPath: /operation/credentialsonfile |
Numerisch (1) | Wenn die credentialsonfile Feld in der Anfrage übermittelt wurde und vom Acquirer, der die Transaktion bearbeitet, unterstützt wird, wird es in der Antwort zurückgegeben. | |
currencyiso3a XPath: /billing/amount/@currencycode |
Alpha (3) |
Die Währung der Transaktion. Klicken Sie hier für eine vollständige Liste der verfügbaren Währungen. |
|
parenttransactionreference XPath: /operation/parenttransactionreference |
Alphanumerisch & Bindestriche (25) |
Die Transaktionsnummer der übergeordneten Transaktion. | |
requesttypedescription XPath: /@type |
Alpha (20) | Anforderungstyp Es wird "AUTH" zurückgegeben. |
Zusammenfassung
Wenn Sie die obigen Anweisungen befolgen, sollte Ihr System nun in der Lage sein, wiederholte Zahlungen manuell über unsere Webservices API zu verarbeiten, ohne dass die Rechnungs- oder Zahlungsdaten des Kunden erneut übermittelt werden müssen. Wie immer empfehlen wir Ihnen, Ihre Lösung gründlich zu testen, um sicherzustellen, dass die vom Händler initiierten Transaktionen wie erwartet verarbeitet werden, bevor Sie Live-Zahlungen in Ihrem Produktionssystem durchführen. Bitte lesen Sie weiter, um zusätzliche Informationen zu erhalten, die Ihnen bei der Entwicklung einer Lösung für Merchant Initiated Transactions nützlich sein könnten.
Zusätzliche Hinweise
Nachfolgend finden Sie einige zusätzliche Hinweise, die bei der Verarbeitung von vom Händler initiierten Transaktionen zu beachten sind.
Über die Hinweiscode des Käufers
Hinweiscode des Käufers ist ein numerischer Wert, der zurückgegeben wird, wenn er von Ihrer Acquiring-Bank unterstützt wird, und der angibt, ob und wann weitere Zahlungen verarbeitet werden können.
Ähnliche Artikel
Wiederkehrende Zahlungen
Wiederholte Transaktionen mit zuvor gespeicherten Kartendaten verarbeiten.