I'm Trying to make the payment with 3DS work, I have followed the three steps in this link: https://eu-gateway.mastercard.com/api/documentation/integrationGuidelines/supportedFeatures/pickAdditionalFunctionality/authentication/3DS/integrationModelAPI.html?locale=en_US
My Process:
Create a Session (Successful)
POST to "https://cibpaynow.gateway.mastercard.com/api/rest/version/71/merchant/TEST123456/session/"
Update the session with card details (Successful)
Initiate Authentication (Successful)[example code in steps link] https://cibpaynow.gateway.mastercard.com/api/rest/version/71/merchant/TEST123456/order/1/transaction/2
Authenticate Payer (Successful)[example code in steps link]
Proceed to payment (X)[example code in steps link]
So the issue at the last step, which I don't understand why does it happen, is when I run this, as mentioned in the steps with providing order.id and authentication.trasanctionId:
{
"authentication" :
{
"transactionId": "2"
},
"session": {
"id": "SESSION0002873236543L1392791G59"
},
"order":{
"amount":"1",
"currency":"EGP",
"reference" : "1"
},
"apiOperation": "PAY",
"transaction":{
"reference":"1"
}
}
This is the response I get, which makes no sense since it should be the same transactionId that I was authenticating:
{
"error": {
"cause": "INVALID_REQUEST",
"explanation": "A transaction with this transaction ID has already been processed but the request parameters do not match. To process a new transaction for this order, the transaction.id must be unique for the order."
},
"result": "ERROR"
}
Does anyone know what I did wrong?
========= EDIT ========
I May have concluded that it might be that I'm initiating a PAYER_WEBSITE authentication, and I'm PAYING through an api put request, I don't really know but this is my only explanation, if this is the issue how should I initiate an authentication that can be completed using a request that is not necessary to be from a website