3DSecure2
You can integrate your e-commerce application directly to our platform-agnostic 3D2 Secure API so your merchants can mitigate fraud while at the same time allowing the cardholders to enjoy additional security when using their cards online. Paysafe is compliant to 3D Secure version 1.0.2.
Click the links below to view our code samples.
Authentication
Process an authentication
Authentications auth = Authentications.Builder()
.merchantRefNum(System.Guid.NewGuid().ToString())
.amount(99999999999)
.currency("USD")
.deviceFingerprintingId("3bf74a2a-8668-4f14-b2bf-fd8e07ae2100")
.card()
.holderName("john")
.cardNum("4111111111111111")
.cardExpiry()
.month(System.DateTime.Now.Month)
.year(System.DateTime.Now.Year)
.Done()
.Done()
.merchantUrl(@"https://mysite.com")
.authenticationPurpose("PAYMENT_TRANSACTION")
.deviceChannel("BROWSER")
.messageCategory("PAYMENT")
.Build();
Authentications response = client.threeDSecureV2Service().authentications(auth);
Look up an authentication using an authentication ID
EnrollmentChecks enrollmentChecks = client.threeDSecureService().submit(EnrollmentChecks.Builder()
.merchantRefNum(System.Guid.NewGuid().ToString())
.amount(100)
.currency("CAD")
.customerIp("204.91.0.12")
.userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36")
.card()
.cardNum("4107857757053670")
.cardExpiry()
.month(10)
.year(2018)
.Done()
.Done()
.acceptHeader("text/html,application/xhtml+xml,application/xml;q\u003d0.9,image/webp,*/*;q\u003d0.8")
.merchantUrl("https://www.google.com")
.Build());
Authentications response = client.threeDSecureService().submit(Authentications.Builder()
.merchantRefNum(enrollmentChecks.merchantRefNum())
.paResp(enrollmentChecks.paReq())
.enrollmentId(enrollmentChecks.id())
.Build());
Authentications auth_response = client.threeDSecureService().get(response);
Process a complex authentication
Authentications auth = Authentications.Builder()
.merchantRefNum(System.Guid.NewGuid().ToString())
.amount(99999999999)
.currency("USD")
.mcc("0742")
.merchantName("Merchant Name Inc")
.merchantUrl("https://mysite.com")
.deviceFingerprintingId("3bf74a2a-8668-4f14-b2bf-fd8e07ae2100")
.card()
.holderName("john")
.cardNum("4111111111111111")
.cardExpiry()
.month(System.DateTime.Now.Month)
.year(System.DateTime.Now.Year)
.Done()
.Done()
.billingDetails()
.city("New York")
.country("US")
.state("AL")
.street("My street 1")
.street2("My street 2")
.zip("M5H 2N2")
.useAsShippingAddress(false)
.Done()
.shippingDetails()
.city("New York")
.country("US")
.state("AL")
.street("My street 1")
.street2("My street 2")
.zip("CHY987")
.shipMethod("S")
.Done()
.profile()
.cellPhone("+154657854697")
.email("example@example.com")
.phone("+154657854697")
.Done()
.deviceFingerprintingId("dd45e08a-8eab-443a-a6f3-4361f92bc7d9")
.deviceChannel("BROWSER")
.requestorChallengePreference("NO_PREFERENCE")
.messageCategory("PAYMENT")
.transactionIntent("GOODS_OR_SERVICE_PURCHASE")
.authenticationPurpose("PAYMENT_TRANSACTION")
.maxAuthorizationsForInstalmentPayment(2)
.initialPurchaseTime("2019-01-21T14:47:31.540Z")
.billingCycle()
.endDate("2014-01-26")
.frequency(1)
.Done()
.orderItemDetails()
.preOrderItemAvailabilityDate("2014-01-26")
.preOrderPurchaseIndicator("MERCHANDISE_AVAILABLE")
.reorderItemsIndicator("FIRST_TIME_ORDER")
.shippingIndicator("SHIP_TO_BILLING_ADDRESS")
.Done()
.purchasedGiftCardDetails()
.amount(1234)
.count(2)
.currency("USD")
.Done()
.userAccountDetails()
.addCardAttemptsForLastDay(1)
.changedDate("2010-01-26")
.changedRange("DURING_TRANSACTION")
.createdDate("2010-01-26")
.createdRange("NO_ACCOUNT")
.passwordChangedDate("2012-01-26")
.passwordChangedRange("NO_CHANGE")
.paymentAccountDetails()
.createdRange("NO_ACCOUNT")
.createdDate("2010-01-26")
.Done()
.priorThreeDSAuthentication()
.data("Some up to 2048 bytes undefined data")
.method("FRICTIONLESS_AUTHENTICATION")
.id("123e4567-e89b-12d3-a456-426655440000")
.time("2014-01-26T10:32:28Z")
.Done()
.shippingDetailsUsage()
.cardHolderNameMatch(true)
.initialUsageDate("2014-01-26")
.initialUsageRange("CURRENT_TRANSACTION")
.Done()
.suspiciousAccountActivity(true)
.totalPurchasesSixMonthCount(1)
.transactionCountForPreviousDay(1)
.transactionCountForPreviousYear(3)
.travelDetails()
.isAirTravel(true)
.airlineCarrier("Wizz air")
.departureDate("2014-01-26")
.destination("SOF")
.origin("BCN")
.passengerFirstName("John")
.passengerLastName("Smith")
.Done()
.userLogin()
.authenticationMethod("NO_LOGIN")
.data("Some up to 2048 bytes undefined data")
.time("2014-01-26T10:32:28Z")
.Done()
.Done()
.browserDetails()
.acceptHeader("*/*")
.colorDepthBits("24")
.customerIp("207.48.141.20")
.javascriptEnabled(true)
.javaEnabled(true)
.language("en-US")
.screenHeight(768)
.screenWidth(1024)
.timezoneOffset(240)
.userAgent("Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)")
.Done()
.Build();
Authentications response = client.threeDSecureV2Service().authentications(auth);
Process an authentication with payment token
Authentications auth = Authentications.Builder()
.merchantRefNum(System.Guid.NewGuid().ToString())
.amount(99999999999)
.currency("USD")
.mcc("0742")
.merchantName("Merchant Name Inc")
.merchantUrl("https://mysite.com")
.deviceFingerprintingId("3bf74a2a-8668-4f14-b2bf-fd8e07ae2100")
.card()
.paymentToken("SCba8jzccp9Ou72w")
.Done()
.billingDetails()
.city("New York")
.country("US")
.state("AL")
.street("My street 1")
.street2("My street 2")
.zip("M5H 2N2")
.useAsShippingAddress(false)
.Done()
.shippingDetails()
.city("New York")
.country("US")
.state("AL")
.street("My street 1")
.street2("My street 2")
.zip("CHY987")
.shipMethod("S")
.Done()
.profile()
.cellPhone("+154657854697")
.email("example@example.com")
.phone("+154657854697")
.Done()
.deviceFingerprintingId("dd45e08a-8eab-443a-a6f3-4361f92bc7d9")
.deviceChannel("BROWSER")
.requestorChallengePreference("NO_PREFERENCE")
.messageCategory("PAYMENT")
.transactionIntent("GOODS_OR_SERVICE_PURCHASE")
.authenticationPurpose("PAYMENT_TRANSACTION")
.maxAuthorizationsForInstalmentPayment(2)
.initialPurchaseTime("2019-01-21T14:47:31.540Z")
.billingCycle()
.endDate("2014-01-26")
.frequency(1)
.Done()
.orderItemDetails()
.preOrderItemAvailabilityDate("2014-01-26")
.preOrderPurchaseIndicator("MERCHANDISE_AVAILABLE")
.reorderItemsIndicator("FIRST_TIME_ORDER")
.shippingIndicator("SHIP_TO_BILLING_ADDRESS")
.Done()
.purchasedGiftCardDetails()
.amount(1234)
.count(2)
.currency("USD")
.Done()
.userAccountDetails()
.addCardAttemptsForLastDay(1)
.changedDate("2010-01-26")
.changedRange("DURING_TRANSACTION")
.createdDate("2010-01-26")
.createdRange("NO_ACCOUNT")
.passwordChangedDate("2012-01-26")
.passwordChangedRange("NO_CHANGE")
.paymentAccountDetails()
.createdRange("NO_ACCOUNT")
.createdDate("2010-01-26")
.Done()
.priorThreeDSAuthentication()
.data("Some up to 2048 bytes undefined data")
.method("FRICTIONLESS_AUTHENTICATION")
.id("123e4567-e89b-12d3-a456-426655440000")
.time("2014-01-26T10:32:28Z")
.Done()
.shippingDetailsUsage()
.cardHolderNameMatch(true)
.initialUsageDate("2014-01-26")
.initialUsageRange("CURRENT_TRANSACTION")
.Done()
.suspiciousAccountActivity(true)
.totalPurchasesSixMonthCount(1)
.transactionCountForPreviousDay(1)
.transactionCountForPreviousYear(3)
.travelDetails()
.isAirTravel(true)
.airlineCarrier("Wizz air")
.departureDate("2014-01-26")
.destination("SOF")
.origin("BCN")
.passengerFirstName("John")
.passengerLastName("Smith")
.Done()
.userLogin()
.authenticationMethod("NO_LOGIN")
.data("Some up to 2048 bytes undefined data")
.time("2014-01-26T10:32:28Z")
.Done()
.Done()
.browserDetails()
.acceptHeader("*/*")
.colorDepthBits("24")
.customerIp("207.48.141.20")
.javascriptEnabled(true)
.javaEnabled(true)
.language("en-US")
.screenHeight(768)
.screenWidth(1024)
.timezoneOffset(240)
.userAgent("Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)")
.Done()
.Build();
Authentications response = client.threeDSecureV2Service().authentications(auth);
To obtain a deviceFingerprintingId, please check the Javascript SDK documentation.