After a successful authentication with a 3D Secure call, this call allows to parse the PaRes
field to retrieve the ECI, XID, CAVV and CAVVAlgorithm fields to be sent to the Sale function.
Note: The use of this method is discouraged and will be removed/restricted in future deployment. The
PaRes
parameter of Sale/Authorize calls must be used instead.
HTTP Method | API URL | API Version |
---|---|---|
POST | https://api.payzone.ma/transaction/{transactionID}/3dsparse | >= 002 |
Field | Type | Max Length | Required | Description |
---|---|---|---|---|
transactionID | Integer | 20 | yes | Reference transaction to S3Dcheck |
PaRes | String | 8192 | yes | Payer Authentication Response |
Note: Gateway API transactions are done with a different library than payment-page API. See the code sample comments for more info:
/*
* Transaction name is '3DSParse', once you create a new transaction passing this as parameter,
* you need to set the mandatory data using the follow methods:
* setPaRes()
*/
$client = new GatewayClient();
$transaction = $client->newTransaction('3DSParse', 'testMerchant', 'testPassword');
$transaction->setTransactionID(9567856);
$transaction->setPaRes($PaRes);
$response = $transaction->send();
if ('000' === $response->errorCode) {
$ECI = $response->ECI;
$XID = $response->XID;
$CAVV = $response->CAVV;
$CAVVAlgorithm = $response->CAVVAlgorithm;
} else {
echo "Error {$response->errorCode} with message {$response->errorMessage}";
}
PaymentGatewayConnector connector = new PaymentGatewayConnector(API_URL, ORIGINATOR, PASSWORD);
ThreeDSParseResponse response = null;
ThreeDSParseRequest request = new ThreeDSParseRequest();
request.setTransactionId(9567856L).setPaRes("XXXXXX...");
try {
response = connector.doThreeDSParseTransaction(request);
} catch (Exception e) {
e.printStackTrace();
}
if (response != null) {
if (TransactionResultCode.TRANSACTION_SUCCESSFULLY.equals(response.getErrorCode()) {
System.out.println("Success: " + response.getErrorMessage());
} else {
System.out.println("Failure: " + response.getErrorMessage());
}
}
const gateway = require("payxpert")("123456", "GreatP4ssw0rd").gateway;
let PaRes = "..."; // you should already have this data. How to retrieve it you can take a look in "3D Secure Check" example
let transactionId = "..."; // Also you should have transactionID from "3DS Check" transaction
let parse3dsResult = await gateway.parse3dSecure(transactionId, PaRes);
if (response.code == "000") {
// Success
// sale transaction could be performed
const body = {
customerIP: "8.8.4.4",
amount: 1500,
currency: "EUR",
orderID: "HELLO NODEJS",
cardNumber: "4111111111111111",
cardSecurityCode: "000",
cardHolderName: "CARDHOLDER NAME",
cardExpireMonth: "10",
cardExpireYear: "2024",
shopperName: "NodeJS Test",
shopperAddress: "NA",
shopperZipcode: "NA",
shopperCity: "NA",
shopperState: "NA",
shopperCountryCode: "NA",
shopperPhone: "NA",
shopperEmail: "NA",
// 3DS values
PaRes: parse3dsResult.PaRes,
ECI: parse3dsResult.ECI,
XID: parse3dsResult.XID,
CAVV: parse3dsResult.CAVV,
CAVVAlgorithm: parse3dsResult.CAVVAlgorithm
};
const responseCreatePayment = await gateway.creditCardSale(body);
if (responseCreatePayment.code == "000") {
// Success
// ...
}
}
var client = new GatewayClient(OriginatorConfig.ORIGINATOR_ID, OriginatorConfig.ORIGINATOR_PASSWORD);
String PaRes = "..."; // you should already have this data. How to retrieve it you can take a look in "3D Secure Check" example
String TransactionId = "..."; // Also you should have transactionID from "3DS Check" transaction
var parse3ds = client.New3DSParseTransaction(TransactionId, PaRes);
var parse3dsResult = await parse3ds.Send();
vif (parse3dsResult.IsSuccessfull())
{
Console.WriteLine("3DS: success. Performing SALE operation");
var transaction = client.NewSaleTransaction();
transaction.SetTransactionInformation(amount3ds, "EUR", orderId3ds, customerIP);
transaction.SetCardInformation("4111111111111111", "000", "CSHARP SDK", "10", "2024");
transaction.SetShopperInformation("CSHARP SDK", "MICROSOFT CLIENT", "666", "REDMOND", "WA", "US", "12445", "x@x.rr");
transaction.Set3DSInformation(PaRes, parse3dsResult);
var response = await transaction.Send();
if (response.IsSuccessfull())
{
Console.WriteLine("Sale operation ok. Transaction ID: " + response.transactionID);
} else
{
Console.WriteLine("Error performing sale: " + response.errorMessage);
}
}
else
{
Console.WriteLine("3DS parse: failure");
}
The body of the response is in JSON format.
The following fields are present in the response :
Name | Type | Description |
---|---|---|
errorCode | String | See API Response Codes |
errorMessage | String | See API Response Codes |
ECI | String | Electronic Commerce Indicator |
XID | String | Xid Transaction ID generated by the 3D Secure service that uniquely identifies a 3D Secure check request |
CAVV | String | Cavv Cardholder Authentication Verification Value |
CAVVAlgorithm | String | CAVVAlgorithm returned from 3D secure authentication |