Der folgende Inhalt setzt voraus, dass Sie die erforderliche PCI-Zertifizierung erhalten haben, um sensible Karteninhaberdaten in der Anfrage an unsere Webservices API zu verarbeiten und zu übermitteln.
Lesen Sie diesen Artikel, um mehr zu erfahren.
Nachdem Sie Anfragen und Transaktionen mit uns bearbeitet haben, können Sie einige der Details zu einem späteren Zeitpunkt aktualisieren, indem Sie eine Anfrage an TRANSACTIONUPDATE senden.
Überblick über den Prozess
Hier sind einige Beispiele für Aktualisierungen, die mit dieser Funktion durchgeführt werden können:
- Senkung des Betrags für eine AUTH nach Autorisierung und vor Abrechnung.
- eine REFUND auszusetzen, Abrechnung zu verhindern.
- Änderung der Häufigkeit, mit der Zahlungen von einer SUBSCRIPTION verarbeitet werden.
Voraussetzungen
Sie können nur Aktualisierungen für Aufträge der folgenden Typen durchführen:
- Autorisierung (AUTH)
- Erstattung (REFUND)
- Abonnement (SUBSCRIPTION)
Sie können die Anträge AUTH und REFUND nur aktualisieren, wenn sie sich in einem schwebenden Abrechnungsstatus ('0', '1' oder '2') befinden und NICHT, wenn sie storniert ('3') oder erledigt ('100') sind. Klicken Sie hier für weitere Informationen über mögliche Abrechnungsstatus Werte.
Durchgang
Sie haben zuvor eine erfolgreiche AUTH bearbeitet (mit transactionreference "1-2-3") auf Ihrer Website (mit sitereference "test_site12345"). Sie hat eine settlestatus von "1", d.h. sie wird automatisch innerhalb von 24 Stunden beglichen. Sie möchten den Betrag aktualisieren settlestatus auf "2" setzen, wodurch die Abrechnung von Geldern auf Ihr Bankkonto.
Schritt 1: Ihr System sendet eine TRANSACTIONUPDATE Anfrage an Trust Payments:
- sitereference "test_site12345" (zur Identifizierung des Standorts, an dem die Transaktion bearbeitet wurde).
- transactionreference "1-2-3" (um die zu aktualisierende Transaktion zu identifizieren).
- die vorzunehmenden Aktualisierungen; in diesem Beispiel, settlestatus "2" (setzt die Zahlung aus).
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
update = {
"requesttypedescriptions": ["TRANSACTIONUPDATE"],
"filter":{
"sitereference": [{"value":"test_site12345"}],
"transactionreference": [{"value":"1-2-3"}]
},
"updates":{"settlestatus":"2"}
}
strequest = securetrading.Request()
strequest.update(update)
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(
'requesttypedescriptions' => array('TRANSACTIONUPDATE'),
'filter' => array(
'sitereference' => array(array('value' => 'test_site12345')),
'transactionreference' => array(array('value' => '1-2-3'))
),
'updates' => array('settlestatus' => '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": [{
"requesttypedescriptions": ["TRANSACTIONUPDATE"],
"filter":{
"sitereference": [{"value":"test_site12345"}],
"transactionreference": [{"value":"1-2-3"}]
},
"updates":{"settlestatus":"2"}
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["TRANSACTIONUPDATE"],
"filter":{
"sitereference":[{"value":"test_site12345"}],
"transactionreference":[{"value":"1-2-3"}]
},
"updates":{"settlestatus":"2"}
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="TRANSACTIONUPDATE">
<filter>
<sitereference>test_site12345</sitereference>
<transactionreference>1-2-3</transactionreference>
</filter>
<updates>
<settlement>
<settlestatus>2</settlestatus>
</settlement>
</updates>
</request>
</requestblock>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
Bei der Durchführung einer einzelnen TRANSACTIONUPDATE Anfrage:
- Sie können nur eine Transaktion aktualisieren. (Die Aktualisierung mehrerer Transaktionen erfordert eine TRANSACTIONUPDATE Anfrage pro Transaktion)
- Sie können mehrere Felder in einer einzigen Transaktion aktualisieren, indem Sie eine einzige TRANSACTIONUPDATE Anfrage verwenden.
Trust Payments empfängt und interpretiert die Anfrage TRANSACTIONUPDATE und führt die Aktualisierungen für die angegebene Transaktion durch, sofern die Anfrage gültig war (andernfalls wird ein Fehler zurückgegeben).
Schritt 2: Ihr System empfängt und interpretiert eine Antwort von TRANSACTIONUPDATE und aktualisiert ggf. Ihre Datensätze. Ihr System sollte sicherstellen, dass der errorcode zurückgegebene Wert "0" ist, was eine erfolgreiche Aktualisierung anzeigt.
Die AUTH "1-2-3" auf sitereference "test_site12345" wurde jetzt mit settlestatus "2", wodurch die Zahlung ausgesetzt wird.
TRANSACTIONUPDATE Anfrage
Der Antrag TRANSACTIONUPDATE besteht aus zwei Teilen:
- Die filters werden verwendet, um die zu aktualisierende Transaktion anzugeben.
- Die updates werden verwendet, um die in der Transaktion durchzuführenden Aktualisierungen anzugeben.
Im Folgenden finden Sie ein Beispiel für eine TRANSACTIONUPDATE Anfrage:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
update = {
"requesttypedescriptions": ["TRANSACTIONUPDATE"],
"filter":{
"sitereference": [{"value":"test_site12345"}],
"transactionreference": [{"value":"1-2-3"}]
},
"updates":{"settlestatus":"2"}
}
strequest = securetrading.Request()
strequest.update(update)
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(
'requesttypedescriptions' => array('TRANSACTIONUPDATE'),
'filter' => array(
'sitereference' => array(array('value' => 'test_site12345')),
'transactionreference' => array(array('value' => '1-2-3'))
),
'updates' => array('settlestatus' => '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": [{
"requesttypedescriptions": ["TRANSACTIONUPDATE"],
"filter":{
"sitereference": [{"value":"test_site12345"}],
"transactionreference": [{"value":"1-2-3"}]
},
"updates":{"settlestatus":"2"}
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["TRANSACTIONUPDATE"],
"filter":{
"sitereference":[{"value":"test_site12345"}],
"transactionreference":[{"value":"1-2-3"}]
},
"updates":{"settlestatus":"2"}
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="TRANSACTIONUPDATE">
<filter>
<sitereference>test_site12345</sitereference>
<transactionreference>1-2-3</transactionreference>
</filter>
<updates>
<settlement>
<settlestatus>2</settlestatus>
</settlement>
</updates>
</request>
</requestblock>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
Filter
Feld | Format | Beschreibung | |
sitereference XPath: /filter/sitereference |
Alphanumerisch einschließlich Unterstrich (50) | Die eindeutige Referenz für die Website Trust Payments , die mit der zu aktualisierenden Transaktion verbunden ist. | |
transactionreference XPath: /filter/transactionreference |
Alphanumerisch einschließlich Bindestriche (25) | Die eindeutige Referenz Trust Payments für die Transaktion, die Sie aktualisieren möchten. |
Aktualisierungen
Die folgenden Felder können bei der Aktualisierung von AUTH und REFUND Anfragen aktualisiert werden.
Feld | Format | Beschreibung | |
orderreference XPath: /updates/merchant/orderreference |
Alphanumerisch einschließlich Symbole (25) Empfohlene Länge 25 Zeichen oder weniger (genaue Länge abhängig von der erwerbenden Bank). Die Nichteinhaltung dieser Anforderung kann dazu führen, dass der Text in der Transaktion abgeschnitten wird. |
Aktualisierung der eindeutigen Auftragsreferenz, die im System Trust Payments gespeichert werden kann. | |
settlebaseamount XPath: /updates/settlement/settlebaseamount |
Numerisch (13) | Der Betrag der Transaktion in Basiseinheiten, ohne Kommas oder Dezimalpunkte, also €10,50 wäre 1050. Dieser Wert muss über Null liegen und kleiner oder gleich dem ursprünglichen Genehmigungsbetrag sein. | |
settleduedate XPath: /updates/settlement/settleduedate |
Datum JJJJ-MM-TT | Datum, an dem die Transaktion abgewickelt wird. Wenn heute oder früher, wird die Transaktion bei der Abrechnung das nächste Mal ausgeführt wird (sofern nicht ausgesetzt oder abgebrochen). | |
settlestatus XPath: /updates/settlement/settlestatus |
Numerisch (3) | Dieser Wert bezieht sich auf den Status der Transaktion. |
Für die Aktualisierung der verschiedenen Auftragstypen sind unterschiedliche Aktualisierungsfelder erforderlich. Weitere Informationen finden Sie in den folgenden Ressourcen:
Über Abrechnungsstatus
- Eine ausgesetzte Transaktion (Status 2) wird nach 7 Tagen ab Autorisierung automatisch rückgängig gemacht oder storniert (Status 3), da der Autorisierung Code dann abgelaufen ist. (Autorisierung Codes sind 7 Tage lang gültig).
- Sobald eine Transaktion auf storniert/abgebrochen (Status 3) gesetzt wurde, wird die Transaktion nicht abgerechnet und der Status kann nicht geändert werden.
Klicken Sie hier für weitere Informationen über die Abrechnungsstatus.
TRANSACTIONUPDATE Antwort
Nachstehend finden Sie ein Beispiel für eine Antwort von TRANSACTIONUPDATE , die nach einer erfolgreichen Aktualisierung einer Transaktion zurückgegeben wurde.
{
u 'requestreference': u 'A3jbd6w7a',
u 'version': u '1.00',
u 'responses': [{
u 'errorcode': u '0',
u 'requesttypedescription': u 'TRANSACTIONUPDATE',
u 'transactionstartedtimestamp': u '2019-12-17 10:58:20',
u 'errormessage': u 'Ok',
u 'operatorname': u 'webservices@example.com'
}]
}
array(3) {
["requestreference"] => string(9) "A057aegmt"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(5) {
["errorcode"] => string(1) "0"
["requesttypedescription"] => string(17) "TRANSACTIONUPDATE"
["transactionstartedtimestamp"] => string(19) "2019-12-17 10:58:20"
["errormessage"] => string(2) "Ok"
["operatorname"] => string(23) "webservices@example.com"
}
}
}
{
"requestreference":"W23-tkrxwkc6",
"version":"1.00",
"response":[{
"errorcode":"0",
"requesttypedescription":"TRANSACTIONUPDATE",
"transactionstartedtimestamp":"2019-12-17 10:58:20",
"errormessage":"Ok",
"operatorname":"webservices@example.com"
}],
"secrand":"SptlJutnBnQ"
}
<responseblock version="3.67">
<requestreference>Xj73e17g4</requestreference>
<response type="TRANSACTIONUPDATE">
<timestamp>2019-12-17 10:58:20</timestamp>
<error>
<message>Ok</message>
<code>0</code>
</error>
</response>
<secrand>qfZtw074MBlmIq</secrand>
</responseblock>
Sicherstellen, dass die errorcode ist "0". Dies bedeutet, dass die Anfrage TRANSACTIONUPDATE erfolgreich bearbeitet wurde. Wenn die errorcode nicht "0" ist, wurde die Anfrage möglicherweise nicht wie erwartet bearbeitet.
Fehlersuche
Wenn Sie eine Anfrage an TRANSACTIONUPDATE unmittelbar nach der Transaktion, die Sie zu aktualisieren versuchen, übermitteln, erhalten Sie möglicherweise die Fehlermeldung "20004 Fehlendes übergeordnetes Element". In diesem Fall warten Sie bitte ein paar Sekunden und versuchen Sie es erneut.