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.
Wenn Sie bereits E-Commerce-Zahlungen mit unserer JavaScript Library, abwickeln, kann Ihre bestehende Lösung so aktualisiert werden, dass sie mit minimalen Änderungen an den Aufschlägen auch Protect Plus Anfragen einreichen kann. Klicken Sie hier, um mehr zu erfahren.
Protect Plus ist ein hochentwickelter Dienst zur Betrugsbekämpfung, der Ihre Website mit einer zusätzlichen Sicherheitsebene gegen betrügerische Transaktionen ausstattet. Er nutzt die größte Negativdatenbank der Branche, um eine umfassende Reihe von Betrugsbewertungen durchzuführen, einschließlich Identitätsprüfungen mit dem britischen Wählerverzeichnis und BT-Datenbanken.
Registrieren Sie sich für Protect Plus
Bevor Sie loslegen können, müssen Sie unser Vertriebsteam kontaktieren und Protect Plus für Ihr Konto aktivieren.
Welche Kontrollen werden durchgeführt?
Wir analysieren die Rechnungs-, Liefer- und Zahlungsdaten des Kunden mithilfe eines regelbasierten Systems, um verdächtige Muster in den Nutzeraktivitäten zu erkennen. Unser System unterstützt Sie bei der Entscheidung, ob die Transaktion eines Kunden auf der Grundlage des wahrgenommenen Risikos bearbeitet werden soll. Zu den durchgeführten Überprüfungen gehören:
- Die größte Negativdatenbank der Branche.
- Neural-basierte Betrugsbewertungen.
- Tumbling oder Swapping, wenn es ein ungewöhnliches Nutzungsmuster bei der Kartennummer, dem Ablaufdatum oder den Kundendaten im Zusammenhang mit einer Transaktion gibt.
Protect Plus bietet keine Garantie gegen Betrug
Sie sollten alle Daten zu einer Transaktion berücksichtigen, bevor Sie die Zahlung akzeptieren.
Was geschieht nach der Durchführung der Kontrollen?
Das System Protect Plus analysiert die Transaktionsdetails und gibt eine der folgenden Optionen aus fraudcontrolshieldstatuscode Werte:
"ACCEPT" | Die Angaben werden nicht als verdächtig angesehen. |
"CHALLENGE" | Weitere Untersuchungen werden empfohlen. |
"DENY" | Die Angaben sind verdächtig und eine Transaktion sollte nicht durchgeführt werden. |
"NOSCORE" | Die Transaktion wurde vom Erwerber abgelehnt, bevor eine Prüfung durchgeführt wurde. |
Reihenfolge der Anträge
Protect Plus Prüfungen werden durchgeführt, wenn eine RISKDEC Anfrage an unser System übermittelt wird. Es gibt zwei Methoden, mit denen Sie Ihr System so konfigurieren können, dass es RISKDEC Anfragen über unsere Webservices API verarbeitet:
- RISKDEC dann AUTH - Führen Sie zuerst die Überprüfungen durch und suchen Sie dann Autorisierung für die Zahlung. Standardmäßig setzen wir verdächtige Zahlungen aus, damit Sie sie prüfen können, bevor Sie fortfahren.
- AUTH dann RISKDEC - Suchen Sie zuerst Autorisierung für die Zahlung und führen Sie dann die Kontrollen durch. Die durchgeführten Überprüfungen sind genauer, weil sie die Ergebnisse von AVSSicherheitscode-Prüfungen und 3-D Secure berücksichtigen.
Konfiguration
Überblick über den Prozess
- Wenn der Kunde an Ihrer Kasse auf "Bezahlen" klickt, sendet Ihr System eine RISKDEC -Anfrage an Trust Payments unter Verwendung der Webservices API (ein Beispiel für die Struktur dieser Anfrage finden Sie unten).
- Trust Payments prüft die Zahlungsdetails, erstellt eine fraudcontrolshieldstatuscode und gibt diese Informationen in einer Antwort an Ihr System zurück: RISKDEC .
- Ihr System muss die Adresse shield status code überprüfen und entscheiden, ob die Zahlung ausgeführt werden soll oder nicht.
- Wenn Sie sich dafür entscheiden, die Zahlung zu verarbeiten, können Sie eine Zahlung mit unserem JavaScript wie hier beschrieben, mit einem wichtigen Unterschied.
Das JWT in der payload muss aktualisiert werden, um das Feld parenttransactionreference, einschließlich der einzigartigen transactionreference die in der Antwort RISKDEC zurückgegeben wird.
Dies wird verwendet, um erben Daten aus der ursprünglichen Anfrage. - Trust Payments setzt sich mit der erwerbenden Bank in Verbindung, um die Zahlung zu bearbeiten.
- Trust Payments gibt die Antwort JWT an Ihr System zurück. Sie müssen die Antwort interpretieren.
Wenn Sie sich für die Durchführung der RISKDEC vor der AUTH, setzen wir genehmigte Transaktionen automatisch aus, wenn die fraudcontrolshieldstatuscode ist "CHALLENGE" oder "DENY". So können Sie weitere Nachforschungen anstellen und eine fundiertere Entscheidung treffen, ob Sie eine verdächtige Transaktion genehmigen oder nicht. Dieses Verhalten kann geändert werden. Bitte Kontakt mit dem Support-Team für weitere Informationen.
RISKDEC Beispiel anfordern
Hier ist ein Beispiel für eine RISKDEC Anfrage, deren Details in zukünftige Zahlungen, die über unsere JavaScript Library abgewickelt werden, übernommen werden können:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
riskdec= {
"sitereference": "test_site12345",
"requesttypedescriptions": ["RISKDEC"],
"accounttypedescription": "ECOM",
"currencyiso3a": "GBP",
"baseamount": "1011",
"orderreference": "My_Order_123",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123"
}
strequest = securetrading.Request()
strequest.update(riskdec)
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('RISKDEC'),
'accounttypedescription' => 'FRAUDCONTROL',
'currencyiso3a' => 'GBP',
'baseamount' => '1011',
'orderreference' => 'My_Order_123',
'pan' => '4111111111111111',
'expirydate' => '12/2020',
'securitycode' => '123'
);
$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": ["RISKDEC"],
"sitereference": "test_site12345",
"baseamount": "1011",
"orderreference": "My_Order_123",
"accounttypedescription": "FRAUDCONTROL",
"pan": "4111111111111111",
"expirydate": "12/2020",
"securitycode": "123"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescriptions":["RISKDEC"],
"sitereference":"test_site12345",
"baseamount":"1011",
"orderreference":"My_Order_123",
"accounttypedescription":"FRAUDCONTROL",
"pan":"4111111111111111",
"expirydate":"12/2020"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="RISKDEC">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<amount currencycode="GBP">1011</amount>
<payment>
<expirydate>12/2020</expirydate>
<pan>4111111111111111</pan>
</payment>
</billing>
<operation>
<accounttypedescription>FRAUDCONTROL</accounttypedescription>
<sitereference>test_site12345</sitereference>
</operation>
</request>
</requestblock>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
RISKDEC Antwortbeispiel
Hier ist ein Beispiel für die zugehörige Antwort RISKDEC :
Für die Spezifikation des Antwortfeldes RISKDEC blättern Sie nach unten zum Abschnitt "Interpretation der Antwort".
{
u 'requestreference': u 'A0dcb11e6',
u 'version': u '1.00',
u 'responses': [{
u 'fraudcontrolresponsecode': u '0100',
u 'paymenttypedescription': u 'VISA',
u 'orderreference': u 'My_Order_123',
u 'transactionstartedtimestamp': u '2016-12-07 16:19:28',
u 'issuer': u 'Test Issuer',
u 'issuercountryiso2a': u 'GB',
u 'errormessage': u 'Ok',
u 'operatorname': u 'webservices@example.com',
u 'fraudcontrolreference': u 'TEST',
u 'accounttypedescription': u 'FRAUDCONTROL',
u 'errorcode': u '0',
u 'transactionreference': u '1-2-345678',
u 'maskedpan': u '411111######1111',
u 'requesttypedescription': u 'RISKDEC',
u 'fraudcontrolshieldstatuscode': u 'ACCEPT',
u 'livestatus': u '0'
}]
}
array(3) {
["requestreference"] => string(9) "A58cdfkpy"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(16) {
["errorcode"] => string(1) "0"
["orderreference"] => string(12) "My_Order_123"
["fraudcontrolresponsecode"] => string(4) "0100"
["paymenttypedescription"] => string(4) "VISA"
["maskedpan"] => string(16) "411111######1111"
["transactionstartedtimestamp"] => string(19) "2016-12-09 11:12:39"
["issuer"] => string(11) "Test Issuer"
["issuercountryiso2a"] => string(2) "GB"
["errormessage"] => string(2) "Ok"
["operatorname"] => string(23) "webservices@example.com"
["accounttypedescription"] => string(12) "FRAUDCONTROL"
["transactionreference"] => string(9) "1-2-345678"
["requesttypedescription"] => string(7) "RISKDEC"
["fraudcontrolreference"] => string(4) "TEST"
["fraudcontrolshieldstatuscode"] => string(6) "ACCEPT"
["livestatus"] => string(1) "0"
}
}
}
{
"requestreference":"W23-wt77f0n8",
"version":"1.00",
"response":[{
"errorcode":"0",
"fraudcontrolresponsecode":"0100",
"paymenttypedescription":"VISA",
"orderreference":"My_Order_123",
"transactionstartedtimestamp":"2016-12-07 16:23:03",
"issuer":"Test Issuer",
"issuercountryiso2a":"GB",
"errormessage":"Ok",
"operatorname":"webservices@example.com",
"accounttypedescription":"FRAUDCONTROL",
"transactionreference":"1-2-345678",
"requesttypedescription":"RISKDEC",
"maskedpan":"411111######1111",
"fraudcontrolreference":"TEST",
"fraudcontrolshieldstatuscode":"ACCEPT",
"livestatus":"0"
}],
"secrand":"E0ksvyuH5VKg"
}
<responseblock version="3.67">
<requestreference>X336659733</requestreference>
<response type="RISKDEC">
<merchant>
<orderreference>My_Order_123</orderreference>
<operatorname>webservices@example.com</operatorname>
</merchant>
<transactionreference>1-2-345678</transactionreference>
<billing>
<payment type="VISA">
<issuer>Test Issuer</issuer>
<issuercountry>GB</issuercountry>
<pan>411111######1111</pan>
</payment>
</billing>
<timestamp>2012-06-21 13:32:43</timestamp>
<fraudcontrol>
<shieldstatuscode>ACCEPT</shieldstatuscode>
<reference>TEST</reference>
<recommendedaction>C</recommendedaction>
<responsecode>0100</responsecode>
</fraudcontrol>
<live>0</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
<operation>
<accounttypedescription>FRAUDCONTROL</accounttypedescription>
</operation>
</response>
<secrand>2ngbLQ3DO</secrand>
</responseblock>
Überblick über den Prozess
- Wenn der Kunde an der Kasse auf "Zahlen" klickt, sendet die JavaScript library eine Anfrage an Trust Payments.
- Trust Payments setzt sich mit der erwerbenden Bank in Verbindung, um die Zahlung zu bearbeiten.
- Trust Payments gibt die Antwort JWT an Ihr System zurück. Sie müssen die Antwort interpretieren.
- Daraufhin sendet Ihr System eine RISKDEC -Anfrage an Trust Payments unter Verwendung der Webservices API, einschließlich des Feldes parenttransactionreference, das ist die einzige transactionreference Wert, der in der JWT-Antwort zurückgegeben wird (nachstehend finden Sie ein Beispiel für die Struktur dieser Anfrage).
- Trust Payments prüft die Zahlungsdetails, erstellt eine fraudcontrolshieldstatuscode und gibt diese Informationen in einer Antwort an Ihr System zurück: RISKDEC .
- Ihr System muss die Adresse shield status code überprüfen und entscheiden, ob die Zahlung ausgeführt werden soll oder nicht.
- Wenn Sie eine Zahlung aussetzen oder stornieren möchten, müssen Sie eine Transaktionsaktualisierungsanfrage über die API Webservices stellen.
Beispiel anfordern
Hier ist ein Beispiel für eine RISKDEC Anfrage, die über unsere Webservices API eingereicht wird, nachdem eine Zahlung über unsere JavaScript Library abgewickelt wurde.
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
riskdec= {
"sitereference": "test_site12345",
"requesttypedescriptions": ["RISKDEC"],
"accounttypedescription": "FRAUDCONTROL",
"currencyiso3a": "GBP",
"baseamount": "1011",
"orderreference": "My_Order_123",
"parenttransactionreference": "1-2-3"
}
strequest = securetrading.Request()
strequest.update(riskdec)
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('RISKDEC'),
'accounttypedescription' => 'FRAUDCONTROL',
'currencyiso3a' => 'GBP',
'baseamount' => '1011',
'orderreference' => 'My_Order_123',
'parenttransactionreference' => '1-2-3'
);
$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" -d '{
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"currencyiso3a": "GBP",
"requesttypedescriptions": ["RISKDEC"],
"sitereference": "test_site12345",
"baseamount": "1011",
"orderreference": "My_Order_123",
"accounttypedescription": "FRAUDCONTROL",
"parenttransactionreference": "1-2-3"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"currencyiso3a":"GBP",
"requesttypedescriptions":["RISKDEC"],
"sitereference":"test_site12345",
"baseamount":"1011",
"orderreference":"My_Order_123",
"accounttypedescription":"FRAUDCONTROL",
"parenttransactionreference":"1-2-3"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="RISKDEC">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<billing>
<amount currencycode="GBP">1011</amount>
</billing>
<operation>
<parenttransactionreference>1-2-3</parenttransactionreference>
<accounttypedescription>FRAUDCONTROL</accounttypedescription>
<sitereference>test_site12345</sitereference>
</operation>
</request>
</requestblock>
Ersetzen Sie <DOMAIN>
mit einer unterstützten Domäne. Klicken Sie hier für eine vollständige Liste.
Beispiel für eine Antwort
Hier ist ein Beispiel für die zugehörige Antwort RISKDEC :
Für die Spezifikation des Antwortfeldes RISKDEC blättern Sie nach unten zum Abschnitt "Interpretation der Antwort".
{
u 'requestreference': u 'Ad4ft45gp',
u 'version': u '1.00',
u 'responses': [{
u 'fraudcontrolresponsecode': u '0100',
u 'paymenttypedescription': u 'VISA',
u 'orderreference': u 'My_Order_123',
u 'transactionstartedtimestamp': u '2016-12-07 16:25:19',
u 'issuer': u 'Test Issuer',
u 'issuercountryiso2a': u 'US',
u 'errormessage': u 'Ok',
u 'operatorname': u 'webservices@example.com',
u 'parenttransactionreference': u '1-2-345678',
u 'fraudcontrolreference': u 'TEST',
u 'accounttypedescription': u 'FRAUDCONTROL',
u 'errorcode': u '0',
u 'transactionreference': u '1-2-345679',
u 'maskedpan': u '411111######1111',
u 'requesttypedescription': u 'RISKDEC',
u 'fraudcontrolshieldstatuscode': u 'ACCEPT',
u 'livestatus': u '0'
}]
}
array(3) {
["requestreference"] => string(9) "A0bjmprty"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(17) {
["errorcode"] => string(1) "0"
["orderreference"] => string(12) "My_Order_123"
["fraudcontrolresponsecode"] => string(4) "0100"
["paymenttypedescription"] => string(4) "VISA"
["maskedpan"] => string(16) "411111######1111"
["transactionstartedtimestamp"] => string(19) "2016-12-09 11:14:35"
["issuer"] => string(11) "Test Issuer"
["issuercountryiso2a"] => string(2) "GB"
["errormessage"] => string(2) "Ok"
["operatorname"] => string(23) "webservices@example.com"
["parenttransactionreference"] => string(10) "1-2-345678"
["accounttypedescription"] => string(12) "FRAUDCONTROL"
["transactionreference"] => string(9) "1-2-345679"
["requesttypedescription"] => string(7) "RISKDEC"
["fraudcontrolreference"] => string(4) "TEST"
["fraudcontrolshieldstatuscode"] => string(6) "ACCEPT"
["livestatus"] => string(1) "0"
}
}
}
{
"requestreference":"W23-eyqd5u3x",
"version":"1.00",
"response":[{
"errorcode":"0",
"fraudcontrolresponsecode":"0150",
"paymenttypedescription":"VISA",
"orderreference":"My_Order_123",
"transactionstartedtimestamp":"2016-12-07 16:24:50",
"issuer":"Test Issuer",
"issuercountryiso2a":"GB",
"errormessage":"Ok",
"operatorname":"webservices@example.com",
"parenttransactionreference":"1-2-345678",
"accounttypedescription":"FRAUDCONTROL",
"transactionreference":"1-2-345679",
"requesttypedescription":"RISKDEC",
"maskedpan":"411111######1111",
"fraudcontrolreference":"TEST",
"fraudcontrolshieldstatuscode":"ACCEPT",
"livestatus":"0"
}],
"secrand":"ft9j6l"
}
<responseblock version="3.67">
<requestreference>X336659733</requestreference>
<response type="RISKDEC">
<merchant>
<orderreference>My_Order_123</orderreference>
<operatorname>webservices@example.com</operatorname>
</merchant>
<transactionreference>18-65-2</transactionreference>
<billing>
<payment type="VISA">
<issuer>Test Issuer</issuer>
<issuercountry>GB</issuercountry>
<pan>411111######1111</pan>
</payment>
</billing>
<timestamp>2012-06-21 13:32:43</timestamp>
<fraudcontrol>
<shieldstatuscode>ACCEPT</shieldstatuscode>
<reference>TEST</reference>
<recommendedaction>C</recommendedaction>
<responsecode>0150</responsecode>
</fraudcontrol>
<live>0</live>
<error>
<message>Ok</message>
<code>0</code>
</error>
<operation>
<parenttransactionreference>1-2-345679</parenttransactionreference>
<accounttypedescription>FRAUDCONTROL</accounttypedescription>
</operation>
</response>
<secrand>UIPGZ</secrand>
</responseblock>
Interpretation der Antwort
Hier ist die Feldspezifikation für eine RISKDEC Antwort:
Feld | Format | Beschreibung | |
fraudcontrolreference XPath: /fraudcontrol/reference |
Alphanumerisch (255) | Eindeutige Referenz zur Identifizierung der durchgeführten Risikoentscheidung Prüfung. | |
fraudcontrolresponsecode XPath: /fraudcontrol/responsecode |
Numerisch (4) | Ein numerischer Code, der einer Beschreibung der Ergebnisse der durchgeführten Risikoentscheidung Prüfungen zugeordnet ist. | |
fraudcontrolshieldstatuscode XPath: /fraudcontrol/shieldstatuscode |
Alpha (10) |
Einer der folgenden Werte:
|
|
requesttypedescription XPath: /@type |
Alpha (20) | Sie erhalten die Antwort "RISKDEC". | |
rulecategoryflag XPath: /fraudcontrol/categoryflag |
Alphanumerisch (255) |
Referenz, die zur Identifizierung einer Bedingung verwendet wird, die erfüllt wurde, um die DENY oder CHALLENGE fraudcontrolshieldstatuscode. Wird nur zurückgegeben, wenn die Prüfungen erfolgreich durchgeführt wurden. |
|
rulecategorymessage XPath: /fraudcontrol/categorymessage |
Text (unbestimmte Länge) |
Bedingung, die erfüllt wurde, um die DENY zurückzugeben oder CHALLENGE fraudcontrolshieldstatuscode. Wird nur zurückgegeben, wenn die Prüfungen erfolgreich durchgeführt wurden. |
Prüfung
Wir empfehlen Ihnen, Ihre Lösung gründlich zu testen, bevor Sie sie auf Ihrem Live-Website-Referenz aktivieren.
Klicken Sie hier für Details, die Sie einreichen können, um verschiedene RISKDEC Antworten auf unserem Testsystem zu simulieren.