PayTabs SDK makes the integration with the PayTabs payment gateway very easy by providing a ready-made payment screen that handles the card entry and, billing & shipping information and completes the missing details.


This article is dedicated to walking you through how to initiate the payment/request payload using the configuration options and parameters that have already been clarified in the previous step, "Step 2 - Configure the integration method".


After making sure of configuring this SDK as you wish, you will need to make sure you import/add the SDK package in your package.json file, and work on the javascript file (the primary entry point of your project, as shown below: 


"main": "index.js",
"cordova": {
    "plugins": {
      "com.paytabs.cordova.plugin": {}
    }
  }
Generic


Implementing this option will enable you to initiate payments targeted to be paid using the supported types of credit cards such as Visa, MasterCard, Amex, .. etc. Furthermore, your SDK will save the card on your behalf to show it in a list of saved cards for any further payments. To be able to do this, please follow the below instructions: 


  1. Configure the billing & shipping information for this payment, noting that the shipping information is optional. To know more about this, please check our 3.1 Cordova SDK | Manage Shipping and Billing details and 2.1 Cordova SDK | Configuration Options & Parameters solution articles. 
       
    let billingDetails = new cordova.plugins.CordovaPaymentPlugin.PaymentSDKBillingDetails(
                   name= "John Smith",
                   email= "[email protected]",
                   phone= "9731111111",
                   addressLine= "address line",
                   city= "Dubai",
                   state= "Dubai",
                   countryCode= "ae", // ISO alpha 2
                   zip= "1234")
    
    let shippingDetails = new cordova.plugins.CordovaPaymentPlugin. PaymentSDKShippingDetails(
                   name= "John Smith",
                   email= "[email protected]",
                   phone= "9731111111",
                   addressLine= "address line",
                   city= "Dubai",
                   state= "Dubai",
                   countryCode= "ae", // ISO alpha 2
                   zip= "1234")
    Generic



  2. Then create an object from PaymentSDKConfiguration and fill it out with your credentials and payment details. To know more about what is the exact values that should be passed here, please check our 2.1 Cordova SDK | Configuration Options & Parameters and 2.2 Cordova SDK | The PaymentSdkConfiguration Object solution articles.

    let configuration = new cordova.plugins.CordovaPaymentPlugin.PaymentSDKConfiguration();
        configuration.profileID = "*your profile id*"
        configuration.serverKey= "*server key*"
        configuration.clientKey = "*client key*"
        configuration.cartID = "545454"
        configuration.currency = "AED"
        configuration.cartDescription = "Flowers"
        configuration.merchantCountryCode = "ae"
        configuration.merchantName = "Flowers Store"
        configuration.amount = 20
        configuration.screenTitle = "Pay with Card"
        configuration.billingDetails = billingDetails
        configuration.forceShippingInfo = false
    Generic



  3. Only then you will be ready to start/initiate the payment with the previously saved card by passing your PaymentSDKConfiguration object to the startPaymentWithSavedCards function in which the callback event will handle/alter the payment response. To know more about this please check our 2.2 Cordova SDK | The PaymentSdkConfiguration Object and Step 5 - Cordova SDK | Handle the payment response solution articles.

    cordova.plugins.CordovaPaymentPlugin.startPaymentWithSavedCards(configuration, support3DsBool,
    function (result) {
            if (result["status"] == "success") {
                // Handle transaction details here.
                var transactionDetails = result["data"];
                console.log("responseCode:" + transactionDetails.paymentResult.responseCode)
                console.log("transactionTime:" + transactionDetails.paymentResult.transactionTime)
                console.log("responseMessage:" + transactionDetails.paymentResult.responseMessage)
                console.log("transactionReference:" + transactionDetails.transactionReference)
                console.log("token:" + transactionDetails.token)
              } else if (result["status"] == "error") {
                // Handle error here the code and message.
              } else if (result["status"] == "event") {
                // Handle events here.
              }
        }, function (error) {
            console.log(error)
        });
    Generic


    Only cards that has been saved through this startPaymentWithSavedCards function will be shown in the list.


    This would make the payment behavior like the one below, in which once your customers choose one of the saved cards, the payment will be performed directly if the support3DsBoolean was false or will be directed to the 3DS phase if it is true.










⌂ To get familiar with the whole process and the other steps, kindly navigate to our "The Cordova SDK Integration Manual" solution article. 

 And to navigate to the previous step in the integration process "Step 2 - Configure the integration method" click here

 And to get familiar with the rest of the steps regarding the current step "Step 3 - Initiating the payment" click here.

⇨ 
Or you can navigate to the next step in the integration process "Step 4 - Accepting the payment" kindly click here.