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 perform tokenized/recurring transactions using this SDK. 


To enable tokenization (for recurring or any other services that depend on auto-detection from the customers instead of saving credit card details), please follow the below instructions:

  1. Request a token in creating any payment request by passing the "tokeniseType" along with the "tokenFormat" with the preferred type and format that suits your business needs within your PaymentSdkConfigBuilder, as shown below.  
    configData.setTokenise(PaymentSdkTokenise.MERCHANT_MANDATORY, PaymentSdkTokenFormat.Hex32Format()) 


    To know more about these parameters and what are the available values you can pass please check the "2.3 Native Android SDK | Enums" solution article.


  2. Make sure your current Activity or Fragment extends CallbackPaymentInterface class.

  3. 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 Native Android SDK | Manage Shipping and Billing details and 2.1 Native Android SDK | Configuration Options & Parameters solution articles. 

    val billingData = PaymentSdkBillingDetails( 
            "City", 
            "ae", 
            "[email protected]", 
            "name ", 
            "phone", "state", 
            "address street", "zip" 
        ) 
    
        val shippingData = PaymentSdkShippingDetails( 
            "City", 
            "2 digit iso Country code", 
            "[email protected]", 
            "name ", 
            "phone", "state", 
            "address street", "zip" 
        ) 


     
  4. Then create an object from PaymentSdkConfigBuilder 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 Native Android SDK | Configuration Options & Parameters and 2.2 Native Android SDK | The PaymentSdkConfigBuilder Object solution articles.

    val configData = PaymentSdkConfigBuilder(profileId, serverKey, clientKey, amount ?: 0.0, currency) 
            .setCartDescription(cartDesc) 
            .setLanguageCode(locale) 
            .setBillingData(billingData) 
            .setMerchantCountryCode("AE") // ISO alpha 2 
            .setShippingData(shippingData) 
            .setCartId("123") 
            .setTransactionType(transType) 
            .showBillingInfo(false) 
            .showShippingInfo(true) 
            .forceShippingInfo(true) 
            .setScreenTitle(screenTitle) 
            .build();



  5. Only then you will be ready to start/initiate the payment by passing your PaymentSdkConfigBuilder object along with the current CallbackPaymentInterface inherited activity/fragment instance -in which you will handle the payment response- to the startCardPayment function. To know more about this please check our 2.2 Native Android SDK | The PaymentSdkConfigBuilder Object and Step 5 - Native Android SDK | Handle the payment response solution articles. 

    startCardPayment(context = this, 
    ptConfigData =  configData, 
    callback=this) 



  6. After this, you will receive the token along with the transaction reference (that generated this token) within your interface/class in which you handled the payment response. You will need to save them for future usage.


  7. Then perform any further recurring transaction according to your business needs by repeating steps 2 and 3 from this solution article, then directly start the tokenized card payment via the startTokenizedCardPayment function by passing the PaymentSDKConfiguration object and the current CallbackPaymentInterface inherited activity/fragment instance -which you are handling your payment within- along with the token and the transaction reference (saved from the previous step).

    startTokenizedCardPayment(context = this,
    ptConfigData = configData,
    token: *TOKEN*,
    transactionRef: *TransactionReference*
    callback = this)









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