To complete the 3D Secure authenticated payment, make another request to the /authorise3d
endpoint and pass the following parameters with the call:
merchantAccount
– Your merchant account number.md
– A payment session identifier returned by the card issuer.paResponse
– Payment authorisation response returned by the card issuer on the previous step.shopperIP
– We strongly recommend that you provideshopperIP
as it is used in a number of risk checks (like location-based and number of payment attempts checks).
The following example demonstrates how to complete the 3D Secure payment:
{ "merchantAccount":"TestMerchant", "md":"31h..........vOXek7w", "paResponse":"eNqtmF........wGVA4Ch", "shopperIP":"61.294.12.12" }
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Body> <ns1:authorise3d xmlns:ns1="http://payment.services.adyen.com"> <ns1:paymentRequest3d> <merchantAccount xmlns="http://payment.services.adyen.com">TestMerchant</merchantAccount> <md xmlns="http://payment.services.adyen.com">31h..........vOXek7w=</md> <paResponse xmlns="http://payment.services.adyen.com">eNqtmF........wGVA4Ch</paResponse> <shopperIP xmlns="http://payment.services.adyen.com">62.194.82.12</shopperIP> </ns1:paymentRequest3d> </ns1:authorise3d> </soap:Body> </soap:Envelope>
curl --user 'user:pass' https://pal-test.adyen.com/pal/servlet/Payment/authorise3d \ --data-urlencode 'merchantAccount=yourMerchantAccount' \ --data-urlencode 'md=d7T...J+xbw==' \ --data-urlencode 'paResponse=eNqtmF....7pqfKo='
package com.adyen.examples.api.Library; import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.service.Payment; import com.adyen.model.PaymentRequest3d; import com.adyen.model.BrowserInfo; import com.adyen.model.Amount; public class Authorise3dSecurePayment { public void authorise3dPayment() throws Exception { // Create new Client Client client = new Client("YourWSUser", "YourWSPassword", Environment.TEST, "myTestPayment"); Payment payment = new Payment(client); // Create new 3d Payment Request PaymentRequest3d paymentRequest3d = new PaymentRequest3d(); // Set Browser Info BrowserInfo browserInfo = new BrowserInfo(); browserInfo.setUserAgent("YourUserAgent"); browserInfo.setAcceptHeader("YourAcceptHeader"); // Set 3d Payment Request paymentRequest3d.setMerchantAccount("YourMerchantAccount"); paymentRequest3d.setBrowserInfo(browserInfo); paymentRequest3d.set3DRequestData("YourMD","YourPaResponse"); paymentRequest3d.setShopperIP("1.2.3.4"); PaymentResult paymentResult = payment.authorise3D(paymentRequest3d); System.out.println("Payment Result:"); System.out.println("- pspReference: " + paymentResult.getPspReference()); System.out.println("- resultCode: " + paymentResult.getResultCode()); System.out.println("- authCode: " + paymentResult.getAuthCode()); System.out.println("- refusalReason: " + paymentResult.getRefusalReason()); } }
For information on available fields, refer to PaymentRequest3d.