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 import the SDK package classes in your code first to start, as shown below: 


import 'paytabs-ionic-native';
import { PaymentSDKBillingDetails, PaymentSDKShippingDetails, PaymentSDKConfiguration, PayTabsIonic } from 'paytabs-ionic-native';
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. To be able to do this, please follow the below instructions:


  1. Make sure you import PaymentSDKConfiguration class.

  2. 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 Ionic SDK | Manage Shipping and Billing details and 2.1 Ionic SDK | Configuration Options & Parameters solution articles. 
             
    let billingDetails: PaymentSDKBillingDetails = {
              name: 'John Smith',
              email: '[email protected]',
              phone: '+201111111111',
              addressLine: 'Address line',
              city: 'Dubai',
              state: 'Dubai',
              countryCode: 'AE', //country ISO two characters code
              zip: '1234'
      };
    
      const shippingDetails: PaymentSDKShippingDetails = {
              name: 'John Smith',
              email: '[email protected]',
              phone: '+201111111111',
              addressLine: 'Address line',
              city: 'Dubai',
              state: 'Dubai',
              countryCode: 'AE', //country ISO two characters code
              zip: '1234'
      };
    Generic



  3. 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 Ionic SDK | Configuration Options & Parameters and 2.2 Ionic SDK | The PaymentSDKConfiguration Object solution articles.              

      let configuration: PaymentSDKConfiguration = {
              profileID: '*profile ID*',
              serverKey: '*server key*',
              clientKey: '*client key*',
              cartID: '12345',
              currency: 'USD',
              cartDescription: 'Flowers',
              merchantCountryCode: 'ae', //2 chars iso country code
              merchantName: 'Flowers Store',
              amount: 20,
              screenTitle:'Pay with Card',
              billingDetails,
              shippingDetails,
      };
    Generic



  4. Only then you will be ready to start/initiate the payment by passing your PaymentSDKConfiguration object to the startCardPayment function in which you await until the promise (returned response object) is settled to handle/alter the payment response. To know more about this please check our 2.2 Ionic SDK | The PaymentSDKConfiguration Object and Step 5 - Ionic SDK | Handle the payment response solution articles                   

    //note that the await should be used inside an async function or at the top level of a module
    
    const result = await PayTabsIonic.startCardPayment(configuration);
    
     this.handleResult(result);
          handleResult(result: any) {
              if (result.status == 'success') {
                // Handle transaction details here.
                const 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.
              }
            }
    Generic


    This will make the payment behavior would be like the one below, in which your customers will have to provide their full card details.

     








⌂ To get familiar with the whole process and the other steps, kindly navigate to our "The Ionic 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.