Das Merchant Plug-in (MPI) ist ein Softwaremodul, das während des 3D Secure zum Einsatz kommt. Das MPI die Kartendaten des Kunden und kontaktiert den Kartenaussteller, um festzustellen, ob die Karte für das 3D Secure registriert ist. Ist dies der Fall, MPI das MPI die Adresse des Access Control Servers (ACS) des Kartenausstellers MPI . Der Händler leitet den Browser des Kunden zum ACS weiter, um dessen Identität zu überprüfen.
Trust Payments bietet Ihnen Zugang zu einer MPI -Implementierung, die automatisch von unserem JavaScript library während des Standard-Zahlungsvorgangs verwendet wird, so dass Ihre Server keine zusätzlichen sensiblen Daten verarbeiten müssen. Wenn Sie jedoch bereits Ihre eigene MPI als Teil Ihrer Lösung konfiguriert haben, befolgen Sie bitte das unten beschriebene alternative Verfahren:
Voraussetzungen
Wichtig:Wenn Sie Ihr eigenes MPI verwenden, liegt es in Ihrer Verantwortung, sicherzustellen, dass Ihr System der 3D Secure entspricht und stets auf dem neuesten Stand der von Visa Mastercard veröffentlichten Änderungen ist. Außerdem müssen Sie Trust Payments jedes 3D Secure unten aufgeführten 3D Secure gültige, unveränderte und verifizierte Werte Trust Payments .
Die Nichtbeachtung der nachstehenden Angaben kann dazu führen, dass eine Haftungsverlagerung verwirkt wird.
Wenn Sie keine Werte für bestimmte Felder in diesem Abschnitt haben, dürfen Sie die betreffenden FelderNICHTin Anfragen an Trust Payments übermitteln.
Umgang mit registrierten Karten
Nachdem festgestellt wurde, dass die Karte am 3D Secure teilnimmt und der Kunde erfolgreich authentifiziert wurde, muss Ihr System eine AUTH erstellen und übermitteln, um die Zahlung abzuschließen.
Die Spezifikation der Anfrage entspricht weitgehend der eines AUTH, wobei für 3D Secure zusätzliche Felder erforderlich sind, wie im folgenden Beispiel dargestellt.
Beispiele
Das folgende Beispiel setzt voraus, dass Sie die erforderlichen PCI-Zertifizierung um sensible Karteninhaberdaten in der Anfrage zu verarbeiten und zu übermitteln. Alternativ dazu können Sie die cachetoken Wert in der Anfrage.
#!/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"
}
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'
);
$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"
}]
}'
{
"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"
}]
}
<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>
</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>
Feldspezifikation
| Feld | Format | Beschreibung | |
| Bedingt | 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. |
| Bedingt | 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. |
| Erforderlich | enrolled XPath: /threedsecure/enrolled |
Saibling (1) | Geben Sie "Y" ein, um anzugeben, dass die Karte registriert ist. Informationen zum Umgang mit nicht registrierten Karten finden Sie weiter unten. |
| Erforderlich | status XPath: /threedsecure/status |
Saibling (1) |
Zeigt an, ob der Kunde im ACS des Kartenausstellers authentifiziert wurde oder nicht:
|
| Bedingt | threedversion XPath: /threedsecure/version |
Numerisch (6) |
Version von 3D Secure , die zur Authentifizierung der Zahlung 3D Secure . (z. B. „2.2.0“) Geben Sie diesen Wert immer an, wenn er verfügbar ist. |
| Bedingt | 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. |
Wir raten dringend davon ab, mit der Transaktion fortzufahren, wenn die status ist 'N' oder 'R':
- Wenn status ist 'N', bedeutet dies, dass der Kunde nicht authentifiziert wurde.
- Wenn status ist 'R', bedeutet dies, dass die Authentifizierung abgelehnt wurde.
Umgang mit nicht registrierten Karten (oder wenn die Registrierung "U" ist - Unbekannt)
Wenn sowohl Ihr Unternehmen als auch die Bank des Karteninhabers ihren Sitz im Europäischen Wirtschaftsraum (EWR) oder im Vereinigten Königreich haben, muss Ihre Implementierung mit der Zahlungsdiensterichtlinie (PSD2) übereinstimmen.
PSD2 Online-Kartenzahlungen über 3D Secure abgewickelt werden. Ist eine Karte nicht registriert, empfiehlt es sich, die Transaktion abzubrechen und dem Kunden alternative Zahlungsmethoden anzubieten.
Wenn Sie die oben beschriebenen rechtlichen Folgen bedacht haben und fortfahren dürfen, muss Ihr System eine AUTH Anfrage erstellen und manuell einreichen, um die Zahlung mit einer nicht registrierten Karte abzuschließen.
Die Spezifikation der Anfrage entspricht weitgehend der eines AUTH, wobei für 3D Secure zusätzliche Felder erforderlich sind 3D Secure wie im folgenden Beispiel dargestellt).
Beispiel
Das folgende Beispiel setzt voraus, dass Sie die erforderlichen PCI-Zertifizierung um sensible Karteninhaberdaten in der Anfrage zu verarbeiten und zu übermitteln. Alternativ dazu können Sie die cachetoken Wert in der Anfrage.
#!/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",
"enrolled":"N",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"f00e1111-0011-00a6-ab00-a00000a00000"
}
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',
'enrolled' => 'N',
'threedversion' => '2.2.0',
'threeddirectorytransactionreference' => 'f00e1111-0011-00a6-ab00-a00000a00000'
);
$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",
"enrolled":"N",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"f00e1111-0011-00a6-ab00-a00000a00000"
}]
}'
{
"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",
"enrolled":"N",
"threedversion":"2.2.0",
"threeddirectorytransactionreference":"f00e1111-0011-00a6-ab00-a00000a00000"
}]
}
<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>
</operation>
<threedsecure>
<enrolled>N</enrolled>
<version>2.2.0</version>
<directorytransactionreference>f00e1111-0011-00a6-ab00-a00000a00000</directorytransactionreference>
</threedsecure>
</request>
</requestblock>
Feldspezifikation
| Feld | Format | Beschreibung | |
| Erforderlich |
enrolled XPath: /threedsecure/enrolled |
Saibling (1) | Geben Sie "N" ein, um anzugeben, dass die Karte nicht registriert ist, oder "U", um anzugeben, dass die Registrierung unbekannt ist. |
| Bedingt |
threedversion XPath: /threedsecure/version |
Numerisch (6) |
Version von 3D Secure , die zur Authentifizierung der Zahlung 3D Secure . (z. B. „2.2.0“) Geben Sie diesen Wert immer an, wenn er verfügbar ist. |
| Bedingt |
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. |