CheckoutChamp
Submit TicketStatus
  • CheckoutChamp
  • Funnel Builder
    • Onboarding & Activation
      • Go Live Checklist
    • Dashboard Overview (APP)
    • Creating & Editing Funnels/Pages
      • Funnel Visualizer and Page Builder
        • Funnel Visualizer
          • Page Types
          • Connecting Funnel Pages
            • Route An Arrow For New And Repeat Customers
          • Edit Funnel Settings
            • Tracking Pixels
              • Server-side Google Tag Manager
            • Offers and Upsells
            • Collections
            • Coupons
            • Configure Google Analytics
            • Gateways
            • Affiliates
              • Everflow
            • Sales Tax Profiles
            • Add Ons
              • PAAY Add On
              • Route Add On
              • ShipEngine Add On
              • Google Places
              • Fraud Manager Add On
              • Facebook Messenger
              • reCAPTCHA Enterprise
            • SMTP Accounts
            • Fulfillment Houses
            • Ship Profiles
            • Fonts
            • Payments
              • Affirm
              • Afterpay
              • Amazon Pay
              • Apple Pay
                • Legacy Apple Pay Setup (Apple Pay Plugin)
              • Multi-Pay Rebills
              • BitPay
              • Bancontact
              • BLIK
              • Boleto
              • Google Pay
              • iDEAL
              • Klarna
              • P24
              • PayPal Seamless Checkout
                • Fastlane
              • SEPA
              • Sezzle
              • TWINT
            • Social Proof
            • Maintenance
          • URL Customization
          • Page Templates
        • Page Builder
          • Builder Toolbar
            • Device View Changer
            • Popups
          • Settings and Styles
          • Layer Manager
            • Hiding and Revealing Elements
          • Building Blocks
            • Basic Blocks
              • Rows & Columns
            • Form Blocks
              • Shopping Cart Element
            • Button Blocks
              • Button & Link Actions
            • Product Blocks
            • Carousel / Slider Blocks
            • Icon Blocks
            • Social Media Blocks
            • Testimonial Blocks
            • Extra Blocks
            • My Element Blocks
        • 🆕Page Builder 2.0
          • 📰New Features!
          • Builder Toolbar
            • Device View Changer
            • Popups
          • Settings & Style Manager
          • Layer Manager
            • Hiding and Revealing Elements
          • Building Blocks
            • Basic Blocks
              • Rows & Columns
            • Form Blocks
              • Shopping Cart Element
            • Button Blocks
              • Button & Link Actions
            • Product Blocks
            • Extra Blocks
              • Bullet List
              • Progress Bar
              • Collapsible List / FAQ Section
              • Testimonial Blocks
              • Carousel / Slider Blocks
              • Survey
              • Timer
            • My Element Blocks
          • Page Building Tips
            • Using Shopify information on a Thank You page
            • Placeholders and Input Formats
            • Hide element if box is checked/ Billing address same as Shipping
            • How to set Anchor Links
            • How to convert a button into a link
            • Adding Age Consent
            • Creating a Split Variation
            • Subscribe & Save
            • Tokens
            • Redirect from CheckoutChamp to externally hosted upsell or Thank You page
            • Duplicate Input Indicator
            • Product Quantity Select
            • Make a button appear after a set amount of time
            • Making A New Section Appear After a Timer Expires
            • Timer - Route to next page
            • Use link or button to initiate a pop-up
            • Convert Checkbox and Radio
            • Lazy Loading
            • Element Toolbar
            • Applying custom fields to inputs
            • Shipping Profiles
            • Duplicating Pages & Funnels
            • Bootstrap Integration
            • Customer File Uploads
            • Product Tiles
            • Variant Selection
              • Product Variant Selection
              • Customized Variant Bundles (Single Variant)
              • Product Checkbox
            • Product Table
            • Hover Effects (adding Pseudo-classes)
            • Page Sizes and Image Dimensions
            • Flex Settings
            • Using the Survey Element
            • Custom Classes
            • Creating a Marketing Opt-in Checkbox
            • Common Page Elements
            • Create a Common Menu
            • Currency Selector
            • Acquire and Send Session Data to 3rd Party
            • Language Replacement Mapping
            • "Upgrade" or Replace a Product
            • Pass custom parameter on URL and store onto order
            • Product Drop Down / Select
            • Genders
            • Keep customers on Upsell Page after buying an upsell
            • Dynamic Order Bumps
            • Dynamic Upsells
            • Main Site Color
      • Adding Local HTML Files
      • Domain Configuration
        • Domain Trouble Shooting
        • DNS Troubleshooting Guide
        • Redirecting your Root (Apex) Domain
        • GDPR by Clym
      • Publishing a Funnel
      • Basic SEO
    • Redirect Storefront to CheckoutChamp
      • BigCommerce Plugin
        • BigCommerce Checkout Redirect
        • Recurring Products
      • WooCommerce Plugin
        • WooCommerce Checkout Redirect
      • Magento Plugin
      • Redirect external funnel to CheckoutChamp Checkout
      • Using Google Analytics with Redirect
    • Customer/Membership Portal
      • Customer Portal (Without Plugin)
      • Membership Portal with CustomClub Plugin
      • SSO with External Sites
    • Account Settings
      • Domain Forwarding
    • Analytics Definitions
  • CRM
    • Getting Started in your CRM!
    • CRM Dashboard
    • CRM Account Settings
      • Fraud Protection
      • CRM Subscription Page
      • Enable Automatic Cancel on Refund and Void
      • Staggered Rebills
    • Customer Section
      • Customer Service
        • Customer Service Tutorial
        • Locate a Customer Record
        • Continuity Purchase Profile
        • Refund/Void a Transaction
        • Cancel an Order
        • Cancel or Pause a Subscription
        • Restart a Subscription
        • C/S Fulfillment Actions
        • Resend emails to customers
        • Rerun a Declined New Sale
        • Merge Existing Customers
      • Order Entry
      • Fulfillment
      • Quality Assurance
    • CRM Setup
      • Product Setup
        • Product Creation
        • Product Variations
          • Variant Bundles
      • Campaign Setup
        • Creating a Campaign
        • Campaign Categories
        • Campaign Types
        • Adding a Product to a Campaign
          • Common Offer Setups
            • T-Shirt Club
        • Auto-Responder Setup
          • Autoresponder Date Formats
        • Shipping Profiles
        • Taxes
        • Campaign Coupons
        • Custom Fields
        • Adding C.O.D. to Campaigns
        • Single Transaction Orders
        • Multi-Currency
      • Call Center Setup
        • Adding and Editing Call Centers
        • Adding Call Center Agents
        • Setting Call Center Commissions
        • Batch Update Call Center Source Values
        • Cancellation Reasons, Refund Reasons, and Call Dispositions
      • Affiliate Setup
        • Adding and Editing Affiliates
        • Affiliate Tracking Link/String
        • Affiliate Pixels
          • Testing and Troubleshooting CPA Pixels
          • Testing CPC Pixels
        • Affiliate Commissions
        • Setting up an Affiliate User
        • Batch Update Affiliate Source Values
        • General External Affiliate Software/Network Setup
        • Facebook Pixel Setup (Direct API)
    • Fulfillment Section
      • Add and Editing Fulfillment House
      • Fulfillment Batch Update
      • Fulfillment Summary Report
      • Bundle Fulfillment
      • Fulfillment Statuses
      • Testing Fulfillment through Order Entry
      • Cash on Delivery setup
        • C.O.D. Order Entry Option
      • Upload Returned Orders
      • Edit Fulfillment Items
      • Fulfillment Inventory
      • Shipping Validation
    • Gateway Setup
      • Gateway List
      • Adding a Gateway
        • Testing Your Gateway Through Order Entry
      • Gateway Integrations
        • Adyen
        • Adyen V2
          • Klarna on AdyenV2
          • PayByBank on AdyenV2
          • Afterpay on AdyenV2
        • Affirm
        • Afterpay
        • Airwallex
          • Airwallex - Alternate Payments
        • Amazon Pay API Integration
        • Apple Pay
        • Authorize.net
        • Bank of America
        • BitPay
        • Braintree
        • Cardinity
        • Cardstream
          • Cardstream - Alternate Payments
        • Celerispay
        • Centrobill
        • Checkout.com
          • Checkout.com - Alternate Payments
        • Corefy
        • Easytransac
        • eMerchantPay V3
          • eMerchantPay - Alternate Payments
        • Everyware
        • Fat Zebra
        • FibonatixV2
        • FlexFactor
        • Gala Technology
          • Gala Technology - Alternate Payments
        • Google Pay API
        • HiPay 3DS
        • Innova
        • iyzico
        • Klarna
        • MARKETFLOW
        • Maverick
        • Merchant Warrior
        • MojoPay
        • Mollie
        • Moonlight Payments
        • MuchBetter
        • MyCPO
        • NMI
          • NMI - useCustomerVault Configuration
        • NomuPay
          • NomuPay - Alternate Payments
          • Klarna on NomuPay
        • OpenPath
          • IoniaPay Instant Direct Payments (OpenPath)
        • PagBrasil
        • Pathly
        • Pay.com
        • PAY.ON
        • Payex-GreenMoney
        • PayGate
        • Paynetworx
        • PayPal Commerce Checkout
          • PayPal Commerce Checkout (Direct API)
          • PayPal Commerce Checkout (Legacy)
            • PayPal Seamless Checkout - 2-Click Upsells (without Reference Transactions)
          • PayPal Commerce Checkout (SDK)
        • Paysafe V2
        • Paystrax
        • PayXpert 3DS V2
        • Pixxles
        • Poynt
        • Priority Payments
        • Quaife
        • Quantum
        • QuickPay
        • Radom
        • RocketGate
        • SafeCharge
        • Sezzle
        • Skrill
        • Solid
        • Splitit
        • Square Payments
          • Square Payments V2 (Checkout Champ builder set-up)
        • Stripe
          • Stripe - Alternate Payments
          • Klarna on Stripe
        • SurePay
        • TruCommerce
        • Trust Payments
          • Trust Payments - Alternate Payments
        • TRX
        • UrPay
        • Vantiv
        • WAAVE
        • WEBPAY
        • WhiteLabel (WL) Payments
        • WithReach
        • WorldLine (Bambora)
        • Worldline V2
          • Worldline V2 - Alternate Payments
        • Worldnet
        • Worldpay
      • Advanced Transaction Routing Interface (ATRI)
        • ATRI Algorithms
        • Cascade Profiles
        • ATRI Settings and Notifications
      • Recycle Billing
      • Standard BIN Mapping
      • PrePaid BIN Mapping
      • Decline Message Mapping
      • Dynamic Descriptors
      • RDR
      • Ethoca Refunds
      • Direct API 3DS Instructions
      • dLocal Properties
      • Zero dollar card verification
    • Reports
      • Customer Reports
        • Order Summary
        • Order Details
          • Order Statuses
        • Cancellation Report
        • Retention Report
        • Revenue Summary
        • Customer Details Report
      • Payment Reports
        • Transaction Summary Report
        • Transaction Details Report
        • Account Updater
        • Card Processing
        • Refund Details
        • Chargeback Details
        • Billing Report
        • Projected Billing
        • Sales Tax
      • Gateway Reports
        • Reserve Report
      • Sale Reports
        • Continuity Report
          • Continuity Purchase Statuses
        • Affiliate Report
      • Call Center Reports
        • Customer Service Report
      • Fulfillment Reports
        • Fulfillment Details
      • UTM Filters
      • Key Performance Indicators - KPIs
    • Admin Setup
      • Plugin Setup
      • Create a User
        • Create an Affiliate User
        • Create An API User
        • Leads Agents
      • Import
        • Import Coupons
      • Export Webhook Profiles
        • Postback Export Profiles
        • FTP Export Profile
        • Export Webhook Field Mapping Options
      • Blacklist
      • Event Logs
      • Test Cards
      • Legacy Data Import
        • CheckoutChamp PGP Encryption Procedures
        • Migrating Data From a Processor To Checkout Champ
    • Plugins
      • Accounting
        • QuickBooks Online Plugin
      • Affiliate Systems
        • Everflow Integration
        • Trackfiliates
      • Analytics and Reporting
        • Wicked Reports
      • Authentication
        • PAAY
          • Authenticating with PAAY 3DS on Landers
        • PAAY 3RI
      • Chargeback Management
        • Fraud Deflect
        • Ethoca
        • Midigator
        • Optimal Alerts
        • ChargebackHelp
      • Data Sources
        • Big Commerce
          • BigCommerce Checkout Redirect
        • Smarty
        • ClickBank
        • Facebook Marketplace
        • FFL Scope
        • FluidPay Account Updater
        • Google Shopping
        • Gorgias
        • HubSpot
        • Listrak
        • OpenBorder
        • Paperform
        • Re:amaze
        • Recharge
        • ShipEngine
        • Shopify
          • Use Shopify Products Without Shopify Redirect
          • Octane AI
        • Triple Whale
        • WooCommerce
          • Using WooCommerce Catalog with Checkout Page
        • Zapier
        • Zendesk
        • DataDojo
        • ViralSweep
      • Debt Collection
      • Email Service Providers
        • Email Service Provider Plugins
        • Email Service Provider General Set Up
        • Active Campaign Deep Integration
        • InboxFirst
        • Klaviyo
        • Constant Contact
        • SendLane
        • Infusionsoft/Keap
        • Sendgrid
        • Ontraport
        • TxtFlo
        • Postscript
        • Maropost
        • Mailchimp
        • ConvertKit
        • Attentive
      • Express Consent
        • Expressed Consent
        • Expressed Consent CRM Configuration
        • Expressed Consent Guidelines
      • FlexPay
      • Fraud Services
        • Fraud Manager
        • Kount Enterprise
        • Device Data Collector Pixel (DDC Pixel)
        • IPQS
        • NoFraud
      • Fulfillment Houses
        • General Fulfillment House Setup
        • AliExpress
        • Amware
        • CJ Dropshipping
        • DesktopShipper
        • FTP Fulfillment Option
        • Fulfillment by Amazon
        • mintsoft
        • ShipBob
        • Shiphero
        • ShipStation
        • Save Rack
        • Store Pickup
        • Pharmacy Hub
        • Promise Pharmacy
      • Identity Verification
        • 1account
        • AgeChecker.net
        • ID.me
      • IVR Systems
      • List Management Services
        • Red Crane Media
        • Sociallity
      • Membership Services
        • Circle.so Webhook Guide
        • General Membership Club Plugin Setup
        • CustomClub
        • MemberMouse
        • Kajabi Webhook Guide
      • Phone Switches
        • ViciDial
        • Ytel
        • Five9 Sales Agent Call Pop
      • Rewards
        • LoyaltyLion
        • Stamped
      • RMA Services
      • Sales Call Tracking Services
      • Shipping Services
        • InsureShip
        • Route
      • SMS
        • ClickSend (Data Shuttle)
        • Twilio SMS Setup
        • SendPlex SMS Plugin
      • SMTP Maintenance
        • SMTP Maintenance Setup
        • Sendgrid SMTP Profile
        • Maropost SMTP Profile
        • Gmail SMTP Profile
      • Tax Services
        • Avalara Tax
          • Enabling and Setting Up the Avalara AvaTax Plugin
          • Add Avalara Tax to a Campaign
          • Add Tax Code to Products
          • Add Freight Tax to Shipping
          • Avalara Tax - Order Entry
        • Interpayments
        • TaxJar
          • Add TaxJar to Campaigns
          • Add Tax Code to Products
          • Add Freight Tax Code to Shipping
          • TaxJar Address Verification- Customer Service/ Order Entry
          • TaxJar Support Page
      • Telehealth
        • Beluga EHR
      • Upsell
        • Integrated Upsell Program
    • Frequently Asked Questions (FAQS)
      • General CRM Questions
      • Order Processing Questions
      • Fulfillment Questions
      • Reporting Questions
      • Affiliate Tracking Questions
      • Developer Questions
      • Builder Questions
      • How-to articles
        • Force Bill a Purchase
        • Submit a Support Ticket
    • Click-to-Cancel
  • API Documentation
    • API Documentation
      • Recommended API Flow
      • Performing API Calls
  • Policies
    • EULA
    • Privacy Policy
    • Acceptable Use Policy
    • Billing Policy
    • GDPR
    • A-C&B
Powered by GitBook
On this page
  • Enabling the PAAY Plugin
  • Finding Your PAAY API Key
  • Direct API
  • Form-code
  • Testing
  • Suggested PAAY Practices
  1. CRM
  2. Plugins
  3. Authentication
  4. PAAY

Authenticating with PAAY 3DS on Landers

PreviousPAAYNextPAAY 3RI

Last updated 8 months ago

LogoLogo

CheckoutChamp Links

  • Website Builder
  • CRM
  • Status
  • Need more help?

Refer a Friend

  • Referral Program

No account yet?

  • Schedule Sales Demo

PAAY Integration requires a valid Merchant Number (provided by processor) inside Merchant Account in Konnektive. if you aren’t sure where the Merchant Number is added.


Enabling the PAAY Plugin

Follow the steps in the article to enable the PAAY plugin.

Finding Your PAAY API Key

Once you have added the PAAY plugin, you can find your paayApiKey to use with the PAAY JavaScript you put on your lander by clicking on the PAAY tile (Admin → Plugins → Authentication).

You can also hit the Edit icon and copy the paayApiKey from the edit form.

Direct API

1) Go to your checkout page code and make sure that the card inputs are inside of a form with an id attribute.

<form id="kform">

2) Add the following data-threeds attributes to your card inputs:

card input name

data-threeds attribute

cardNumber

pan

cardMonth

month

cardYear

year

Code example:

<input name='cardNumber' type='TEXT' maxlength=16 isRequired data-threeds="pan"> <select name='cardMonth' style='width:30%' isRequired data-threeds="month"> <select name='cardYear' style='width:30%' isRequired data-threeds="year">

3) Add the hidden inputs x_transaction_id and paayAmount inside of the same form as the card inputs. Initialize the x_transaction_id input value to “1234” since a Javascript function will be added in a later step to randomly generate that value. Set the paayAmount input value to the total amount of the transaction if it is static or to an empty string if it is calculated upon selection or submission.

<input type="hidden" name="x_transaction_id" value="1234" data-threeds="id"/> <input type='hidden' name='paayAmount' id='paayAmount' value='' data-threeds="amount">

4) Add these scripts to your page before the closing body tag:

<script src="https://cdn.3dsintegrator.com/threeds.min.latest.js"></script> <script type="application/javascript"> var id = document.querySelector('[data-threeds=id]'); var uniqueId = function() { return 'id-' + Math.random().toString(36).substr(2, 16); }; id.value = uniqueId(); </script> <script> var tds = new ThreeDS("kform", "paayApiKeyGoesHere", null, {autoSubmit:false, endpoint:"https://sandbox-api.3dsintegrator.com", verbose:true}); </script> </body>

The first parameter of ThreeDS is the form id (The example from step 1 was <form id=”kform”>).

The second parameter of ThreeDS is your paayApiKey which can be found following the steps in the Finding Your PAAY API Key section above.

The fourth parameter of ThreeDS is the options object.

  • autoSubmit

    • true: Authentication will be automatically attempted as soon as the customer has filled in the required card inputs.

      • Default if autoSubmit not included in options object.

      • pros: May speed up the order processing time for the customer since authentication is started before submission and less code to integrate.

      • cons: Less control over when authentication happens, authentication may not be completed before submission / Import Order is called.

    • false: You will need to add code that calls the ThreeDS verify function.

      • pros: More control over how authentication is called (for example: you won’t want try to authenticate every card since it only works with Mastercard and Visa and can code to not authenticate in those circumstances), you can code to make sure authentication is completed and 3DS values sent in Import Order

      • cons: May add time to order processing as perceived by customer

    • We suggest setting autoSubmit to false and will provide instructions on calling the verify function in the next steps.

  • endpoint

    • testing: "https://sandbox-api.3dsintegrator.com"

    • production: remove endpoint property from options object

  • verbose

    • true: You can inspect element in the browser and see verbose output in the console

  • rebill

    • decimal total amount of rebill cycle 2 transaction to also authenticate the cycle 2 rebill transaction

    • If authentication is successful, these rebill 3DS parameters will be automatically added to the form as the inputs rebill_cavv, rebill_xid, and rebill_eci, and the CRM will send them to the gateway with the cycle 2 rebill transaction at the time of rebilling.

5) Add the following code if implementing the autoSubmit = false option. Otherwise skip to step 6.

5a) Code to check the card number and only attempt authentication if Mastercard or Visa based on first character of cardNumber input value (3=Amex, 6=Discover):

const cardNumber = document.getElementsByName("cardNumber")[0] ? document.getElementsByName("cardNumber")[0].value : null; if(cardNumber) { const firstCCDigit = cardNumber.charAt(0); if(firstCCDigit !== "3" && firstCCDigit !== "6") { triggerPAAY(); //Run PAAY authentication } }

5b) Code to trigger the PAAY authentication:

function triggerPAAY() { const paayCallback = function(data) { <import Order> } const successCallbackFunction = paayCallback; //if you don't want to accept orders without successful 3DS authentication, //make this a separate function that returns decline message to customer const failureCallbackFunction = paayCallback; tds.verify(successCallbackFunction, failureCallbackFunction, {amount: initialAmount}); if(tds.errors.length > 0) { const paayError = tds.errors[0]; } }

6) If authentication is successful, the PAAY JavaScript will automatically add the 3DS values as the hidden inputs cavv, xid, and eci inside your form.

Rebills

To also authenticate the cycle 2 rebill transaction and send the 3DS parameters to the gateway upon the first (cycle 2) rebilling, either set the rebill property of the options object while initializing ThreeDS or set tds.options.rebill before calling tds.verify.

This value is the decimal formatted total amount of the cycle 2 rebill transaction.

If authentication is successful, rebill 3DS parameters will be automatically added to the form as the inputs rebill_cavv, rebill_xid, and rebill_eci, and the CRM will send them to the gateway with the cycle 2 rebill transaction at the time of rebilling.

Initializing ThreeDS with rebill option example:

<script> var tds = new ThreeDS("kform", "paayApiKeyGoesHere", null, {autoSubmit:false, endpoint:"https://sandbox-api.3dsintegrator.com", verbose:true, rebill:89.95}); </script> </body>

Setting rebill property after initializing the ThreeDS object tds variable example:

tds.options.rebill = 89.95;

Authenticating Upsells

In order to authenticate the upsell transaction, you will need to save the cardNumber, cardMonth, and cardYear to session storage and then add hidden inputs with the data-threeds attributes pan, month, and year to your upsell page form. Then follow the same steps as for the checkout page and send the cavv, eci, xid, rebill_cavv, rebill_eci, rebill_xid on your Import Upsale call.

3DS 2.0

Replace this script:

<script src="https://cdn.3dsintegrator.com/threeds.min.latest.js"></script> //JavaScript library for 3DS 1.2

with the script for 3DS 2.0:

<script src="https://cdn.3dsintegrator.com/threeds.2.min.latest.js"></script> //JavaScript library for 3DS 2.0

PAAY will return additional parameters for 3DS 2.0 that you will need to send in the Import Order API and the Import Upsale API as the cavv, xid, and eci parameters.

3DS 2.0 parameter returned by PAAY

Parameter to send to Import Order / Import Upsale API

authenticationValue

cavv

dsTransId

xid

eci

eci

acsTransId

acsTransId

status

threeDsStatus


Form-code

1) Add your PAAY API Key to the checkout page of your form-code lander inside the CRM and Update.

2) Download Code

3) The downloaded checkout page will include these lines of code. Copy or edit to your checkout page (adding data-threeds attributes to the cardNumber, cardMonth, and cardYear inputs, the new hidden inputs x_transaction_id and paayAmount, calling the echoPaayJS function before the closing of the body tag)

Inside the form:

<input name='cardNumber' type='TEXT' maxlength=16 isRequired data-threeds="pan"> <select name='cardMonth' style='width:30%' isRequired data-threeds="month"> <select name='cardYear' style='width:30%' isRequired data-threeds="year"> <input type="hidden" name="x_transaction_id" value="1234" data-threeds="id"/> <input type='hidden' name='paayAmount' id='paayAmount' value='' data-threeds="amount">

Amex with PAAY 3DS also requires the threeds attributes on the additional inputs:

<input name='shipAddress1' type='TEXT' isRequired data-threeds="shippingStreetAddress"> <input name='shipPostalCode' type='TEXT' isRequired data-threeds="shippingZipCode"> <input name="emailAddress" type="TEXT" isRequired data-threeds="emailAddress"> <input name="firstName" type="TEXT" isRequired data-threeds="billingFirstName"> <input name="lastName" type="TEXT" isRequired data-threeds="billingLastName">

Before the closing body tag:

<?php $ksdk->echoPaayJS(); ?> </body>

The echoPaayJS function optionally takes the boolean parameter $testing and the decimal parameter $rebill. Testing mode is false by default. Fetching rebill parameters (rebill_xid, rebill_cavv, rebill_eci) is null by default. In the examples below, 2.99 is the amount you plan to rebill. The amount you actually authorize/bill cannot be more than 110% of the amount authenticated, so if you are unsure of the rebill amount we recommend estimating a higher amount.

  • echoPaayJS() - Will use the production PAAY endpoint and NOT fetch rebill parameters.

  • echoPaayJS($testing=true) - Will use the testing endpoint with verbose messaging that can be seen through the console and NOT fetch rebill parameters.

  • echoPaayJS($testing=true,$rebill=2.99) - Will use the testing endpoint AND fetch rebill parameters.

  • echoPaayJS($testing=false,$rebill=2.99) - Will use the production endpoint AND fetch rebill parameters.

Form-code upsells

On klander.js, change lines 587 and 719 to: var noSaveFields = ['cardSecurityCode','achAccountNumber']; That way the cardNumber will be saved to the session and automatically filled in on upsell page.

Then add the hidden inputs to the upsell page: <input name='cardNumber' type='hidden' data-threeds="pan"> <input name='cardMonth' type="hidden" data-threeds="month"> <input name='cardYear' type="hidden" data-threeds="year"> <input type="hidden" name="x_transaction_id" value="1234" data-threeds="id"/> <input type='hidden' name='paayAmount' id='paayAmount' value='25' data-threeds="amount"> With the value of paayAmount being the upsell total.

And add the line before the closing body tag: <?php $ksdk->echoPaayJS(); ?>


Testing

You can run a test using cardNumber 4111111111111111, cardMonth 01, cardYear 21.

During testing you can see the verbose messaging in the console.

You can see the parameters after they have been created by the JavaScript by inspecting the form.

If you are testing with NMI, you may see the decline message "XID data must be 20 bytes" when you submit the order. That message means that your test 3DS parameters were successfully sent to NMI.

If the 3DS parameters are passed in properly on the Import call and the transaction goes to a mid that accepts 3rd Party 3DS you will see a tag that says *3DSecure underneath the result of the transaction.


Suggested PAAY Practices

Compatible Card Types

PAAY can currently be used to authenticate Visa and Mastercard transactions, so we recommend only attempting authentication with those card types.

Rebills

We recommend authenticating the cycle 2 transaction rebill amount in addition to authenticating your cycle 1 transaction.

Trial Authentications

For trials, we recommend following these practices:

  • Hold Trial Charge - Authenticate the cycle 2 transaction amount and send as the initial authentication amount. Do not attempt a PAAY rebill authentication.

  • Full Authorize & Void and Validate Card Trials or any trial with either no cycle 1 price or only shipping for cycle 1 - Run the PAAY authentication using the cycle 2 transaction amount and then send to Konnektive as rebill 3DS parameters.

FAQ

Q) How come I cannot see the returned 3ds values from PAAY’s API?

A) Please check the PAAY SDK and confirm that the 'addResultToForm' sdk option is set to True. This sdk option is embedded as a default config and set to true with the integration. Any changes made to this can lead to unexpected resulsts on your page.

7) After getting the 3DS parameters from PAAY through the JavaScript on your lander, you will send them as the cavv, xid, eci, rebill_cavv, rebill_xid, rebill_eci parameters in API calls to Konnektive.

More information can be found at:

This section provides the instructions for funnels utilizing Konnektive’s .

Import Order
https://docs.3dsintegrator.com/docs/javascript-sdk
form-code
See here
PAAY Plugin
Enabling the PAAY Plugin
Finding Your PAAY API Key
Direct API
Rebills
Authenticating Upsells
3DS 2.0
Form-code
Form-code upsells
Testing
Suggested PAAY Practices