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 - Native IOS SDK | Configure the integration method".asd


This feature is subject to further approval from our risk team, so please contact us at [email protected] for further details to enable this feature for you.

In case your products/services are physical and you wish to hide those details, do check out "3.1 Flutter SDK | Manage Shipping and Billing details" solution article to know how to perform this.


Note that the digital product mode is not universally compatible with all processors. Therefore, it is advisable to seek guidance from your Relationship Manager (RM) to determine if it is suitable for your specific processor.


After making sure of configuring this SDK as you wish, you will need to import the package in your code first to start, as shown below: 

import 'package:flutter_paytabs_bridge/BaseBillingShippingInfo.dart';
import 'package:flutter_paytabs_bridge/PaymentSdkConfigurationDetails.dart';
import 'package:flutter_paytabs_bridge/PaymentSdkLocale.dart';
import 'package:flutter_paytabs_bridge/PaymentSdkTokenFormat.dart';
import 'package:flutter_paytabs_bridge/PaymentSdkApms.dart';
import 'package:flutter_paytabs_bridge/PaymentSdkTokeniseType.dart';
import 'package:flutter_paytabs_bridge/flutter_paytabs_bridge.dart';
import 'package:flutter_paytabs_bridge/IOSThemeConfiguration.dart';
import 'package:flutter_paytabs_bridge/PaymentSDKSavedCardInfo.dart';
import 'package:flutter_paytabs_bridge/PaymentSdkTransactionClass.dart';
import 'package:flutter_paytabs_bridge/PaymentSDKQueryConfiguration.dart';


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. using only the customer name and email in case your products/services are not physical and don't need to be shipped to the customers. To be able to do this, please follow the below instructions:


  1. Configure the billing information and assign the customer name and email (if you want you can pass the full billing details) as shown below: 
    To know more about this, please check our 2.1 Flutter SDK | Configuration Options & Parameters solution articles. 
    //In this case you don't need to provide all billing parameters only the customer name and email.
    //Also you may send the full billing details according to your business needs
    
    var billingDetails = BillingDetails(
          "John Smith",
          "[email protected]",
          "", 
          "", 
          "", 
          "", 
          "", 
          "");



  2. Then create an object from PaymentSdkConfigurationDetails and fill it out with your credentials and payment details. Don't forget to set the Digital product to "true. To know more about what the exact values that should be passed here, please check our 2.1 Flutter SDK | Configuration Options & Parameters and 2.2 Flutter SDK | The PaymentSdkConfigurationDetails Object solution articles.

    final configuration = PaymentSdkConfigurationDetails(
            profileId: "*profile id*",
            serverKey: "*server key*",
            clientKey: "*client key*",
            cartId: "12433",
            cartDescription: "Flowers",
            amount: 20.0,
            showBillingInfo: false,
            currencyCode: "AED",
            merchantCountryCode: "AE",
            billingDetails: billingDetails,
    
            isDigitalProduct: true
    
            );


    Setting the isDigitalProduct to ture can affect the behavior of the payment based on the following:

    - Along with showBilling to false and passing  the full billing details object the transactions will be authorized.

    - With the showBilling to false and passing only the billing name and email the transactions will be authorized

    - Setting the showBilling to false and didn't passing the billing details object the transactions will occur a validation error.

    - Or setting the showBilling to true and passing the billing object without filling in the details the transactions will occur a validation error.

    - Finally, by setting the showBilling to true and passing the billing object with only the name and email the transactions will be authorized.



  3. Only then you will be ready to start/initiate the payment by passing your PaymentSdkConfigurationDetails object to the startCardPayment function. To know more about this please check our 2.2 Flutter SDK | The PaymentSdkConfigurationDetails Object and Step 5 -Flutter SDK | Handle the payment response solution articles

    FlutterPaytabsBridge.startCardPayment(configuration, (event) { 
              setState(() {
            if (event["status"] == "success") {
              // Handle transaction details here.
              var transactionDetails = event["data"];
              print(transactionDetails);
              
              if (transactionDetails["isSuccess"]) {
                print("successful transaction");
              } else {
                print("failed transaction");
              }
            } else if (event["status"] == "error") {
              // Handle error here.
            } else if (event["status"] == "event") {
              // Handle cancel events here.
            }
          });
    });


     









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