go_sell_sdk_flutter 2.3.5 copy "go_sell_sdk_flutter: ^2.3.5" to clipboard
go_sell_sdk_flutter: ^2.3.5 copied to clipboard

Flutter plugin compatible version of goSellSDK library for both Android and iOS.

go_sell_sdk_flutter #

Flutter plugin compatible version of goSellSDK library for both Android and iOS that fully covers payment/authorization/card saving/card tokenization process inside your Android application.
Original SDKS

Getting Started #

Table of Contents #


  1. Requirements
  2. Installation
  3. Installation with pubspec.yaml
  4. Usage
  5. Configure Your App
  6. Configure SDK Session
  7. Transaction Modes
  8. Customer
  9. Configure Payment Type
  10. Use Tap Pay Button
  11. Handle SDK Result
  12. Apple Pay Setup
  13. Additional Android Configuration
  14. SupportedPaymentMethods
  15. Appearance Mode

Requirements #


To use the SDK the following requirements must be met:

  1. Visual Studio - InteliJ Idea
  2. Dart 2.7.1 or newer
  3. Flutter: >=3.0.0 or newer
  4. iOS 11 or later
  5. XCode 12 or later

Installation #


Include goSellSDK plugin as a dependency in your pubspec.yaml #

dependencies: go_sell_sdk_flutter: ^2.3.5 

Configure your app #

goSellSDK should be set up. To set it up, add the following lines of code somewhere in your project and make sure they will be called before any usage of goSellSDK.

 * Configure App. (You must get those keys from tap) */GoSellSdkFlutter.configureApp(    
bundleId: Platform.isAndroid? "ANDROID-PACKAGE-NAME" : "IOS-APP-ID", productionSecreteKey: Platform.isAndroid? "Android-Live-KEY" : "iOS-Live-KEY", sandBoxsecretKey: Platform.isAndroid?"Android-SANDBOX-KEY" : "iOS-SANDBOX-KEY", lang: "en");   


Configure SDK Session Example

try { GoSellSdkFlutter.sessionConfigurations( trxMode: TransactionMode.PURCHASE, transactionCurrency: "kwd", amount: '100', customer: Customer( customerId: "", // customer id is important to retrieve cards saved for this customer email: "test@test.com", isdNumber: "965", number: "00000000", firstName: "test", middleName: "test", lastName: "test", metaData: null), paymentItems: <PaymentItem>[ PaymentItem( name: "item1", amountPerUnit: 1, quantity: Quantity(value: 1), discount: { "type": "F", "value": 10, "maximum_fee": 10, "minimum_fee": 1 }, description: "Item 1 Apple", taxes: [ Tax( amount: Amount( type: "F", value: 10, minimum_fee: 1, maximum_fee: 10), name: "tax1", description: "tax description") ], totalAmount: 100), ], // List of taxes taxes: [ Tax( amount: Amount( type: "F", value: 10, minimum_fee: 1, maximum_fee: 10), name: "tax1", description: "tax description"), Tax( amount: Amount( type: "F", value: 10, minimum_fee: 1, maximum_fee: 10), name: "tax1", description: "tax description") ], // List of shipping shippings: [ Shipping( name: "shipping 1", amount: 100, description: "shipping description 1"), Shipping( name: "shipping 2", amount: 150, description: "shipping description 2") ], // Post URL postURL: "https://tap.company", // Payment description paymentDescription: "paymentDescription", // Payment Metadata paymentMetaData: { "a": "a meta", "b": "b meta", }, // Payment Reference paymentReference: Reference( acquirer: "acquirer", gateway: "gateway", payment: "payment", track: "track", transaction: "trans_910101", order: "order_262625"), // payment Descriptor paymentStatementDescriptor: "paymentStatementDescriptor", // Save Card Switch isUserAllowedToSaveCard: true, // Enable/Disable 3DSecure isRequires3DSecure: false, // Receipt SMS/Email receipt: Receipt(true, false), // Authorize Action [Capture - Void] authorizeAction: AuthorizeAction( type: AuthorizeActionType.CAPTURE, timeInHours: 10), // Destinations destinations:Destinations( amount: 100, currency: 'kwd', count: 2, destinationlist: [ Destination( id: "", amount: 100, currency: "kwd", description: "des", reference: "ref_121299"), Destination( id: "", amount: 100, currency: "kwd", description: "des", reference: "ref_22444444") ]) , // merchant id merchantID: "", // Allowed cards allowedCadTypes: CardType.ALL, applePayMerchantID: "merchant.applePayMerchantID", allowsToSaveSameCardMoreThanOnce: false, // pass the card holder name to the SDK cardHolderName: "Card Holder NAME", // disable changing the card holder name by the user allowsToEditCardHolderName: false, paymentType: PaymentType.ALL, sdkMode: SDKMode.Sandbox); } on PlatformException { }   
``` ---   
<a name="transaction_modes"></a>    
**Transaction Modes**  
  
``` dart trxMode: TransactionMode.PURCHASE ```   
  
You can set the transaction mode into one of the following modes:  
- **Purchase**  
- ``` dart TransactionMode.PURCHASE ```<br/>  

> Normal customer charge.  
- **Authorize**  
- ``` dart TransactionMode.AUTHORIZE_CAPTURE ```<br/>  
> Only authorization is happening. You should specify an action after successful authorization: either capture the amount or void the charge after specific period of time.  
- **Save Card**  
- ``` dart TransactionMode.SAVE_CARD ```<br/>  
> Use this mode to save the card of the customer with Tap and use it later.  
- **Tokenize Card**  
- ``` dart TransactionMode.TOKENIZE_CARD ```<br/>  
> Use this mode if you are willing to perform the charging/authorization manually. The purpose of this mode is only to collect and tokenize card information details of your customer if you don't have PCI compliance certificate but willing to process the payment manually using our services.  
    
---   
<a name="customer"></a>  
  
###### Customer  
  
- New Customer (First time to pay using goSell SDK)  
``` dartCustomer(customerId: "", email: "test@test.com", isdNumber: "965", number: "00000000", firstName: "test", middleName: "test", lastName: "test", metaData: null)``` > After the first transaction success, you receive the customerId in the response. Save it to be used in the next transaction. - Existed Customer (paid before using goSell SDK)    
You need to set the customerId only and you can see the customer saved cards if the user has. ``` dartCustomer(    
 customerId: "cus_smdnd3346nd3dks3jd9drd7d", email: "", isdNumber: "965", number: "00000000", firstName: "", middleName: "", lastName: "", metaData: null)```    
 > Please note that goSell SDK using the customerId only if it's not Empty ('').    
    
 ---    
 <a name="configure_payment_type"></a> **Configure Payment Type** - Set the payment type inside the [sessionConfigurations](#configure_sdk_session) ```dart paymentType: PaymentType.ALL ``` | Payment Type  | Description | | ------------- | ------------- | | ALL  | Shows all the available payment methods  | | CARD  | Shows only cards payment methods  | | DEVICE  | Shows payment methods depending on the device, for iOS it shows ApplePay only  |    
 ---   
<a name="tap_pay_button"></a>    
**Use Tap Pay Button**  
  
```dart Positioned( bottom: Platform.isIOS ? 0 : 10, left: 18, right: 18, child: SizedBox( height: 45, child: ElevatedButton( clipBehavior: Clip.hardEdge, style: ButtonStyle( backgroundColor: MaterialStateProperty.all(_buttonColor), shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(30), ), ), ), onPressed: startSDK, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 25, height: 25, child: AwesomeLoader( outerColor: Colors.white, innerColor: Colors.white, strokeWidth: 3.0, controller: loaderController, ), ), Spacer(), Text( 'PAY', style: TextStyle( color: Colors.white, fontSize: 16.0, ), ), Spacer(), Icon( Icons.lock_outline, color: Colors.white, ), ], ), ), ), ),   


Handle SDK Result

  • Start SDK
tapSDKResult = await GoSellSdkFlutter.startPaymentSDK;   
  • Hnadle SDK result
switch (tapSDKResult['trx_mode']) { case "CHARGE": case "AUTHORIZE": case "SAVE_CARD": extractSDKResultKeysAndValues(); break; case "TOKENIZE": token :                          =tapSDKResult['token']; token_currency                   =tapSDKResult['token_currency']; card_first_six                   =tapSDKResult['card_first_six']; card_last_four                   =tapSDKResult['card_last_four']; card_object                      =tapSDKResult['card_object']; card_exp_month                   =tapSDKResult['card_exp_month']; card_exp_year                    =tapSDKResult['card_exp_year']; break;} } void extractSDKResultKeysAndValues() {    
id                             = tapSDKResult['charge_id']; description                    = tapSDKResult['description']; message                        = tapSDKResult['message']; card_first_six                 = tapSDKResult['card_first_six']; card_last_four                 = tapSDKResult['card_last_four']; card_object                    = tapSDKResult['card_object']; card_brand                     = tapSDKResult['card_brand']; card_exp_month                 = tapSDKResult['card_exp_month']; card_exp_year                  = tapSDKResult['card_exp_year']; acquirer_id                    = tapSDKResult['acquirer_id']; acquirer_response_code         = tapSDKResult['acquirer_response_code']; acquirer_response_message      = tapSDKResult['acquirer_response_message']; source_id                      = tapSDKResult['source_id']; source_channel                 = tapSDKResult['source_channel']; source_object                  = tapSDKResult['source_object']; source_payment_type            = tapSDKResult['source_payment_type']; responseID                     = tapSDKResult['charge_id'];}   


Apple pay setup

Supported Payment Methods

When you pass this value it will only enabled methods for payment if you do not pass it or pass it as empty array you will have all available payment methods to your account

You can pass the supported payment methods as array of String to supportedPaymentMethods key:

Available values :

  • AMERICAN_EXPRESS
  • APPLE_PAY
  • BENEFIT
  • BENEFITPAY
  • CAREEMPAY
  • FAWRY
  • GOOGLE_PAY
  • KNET
  • MADA
  • MASTERCARD
  • MEEZA
  • OMANNET
  • PAYPAL
  • POST_PAY
  • NAPS
  • STC_PAY
  • TABBY
  • VISA


Appearance Mode

You can set the appearance mode into one of the following modes:

  • windowed
    dart SDKAppearanceMode.windowed

    Show sheet as windowed

  • fullscreen
    dart SDKAppearanceMode.fullscreen

Show sheet as full screen

Additional Android Configuration #

To use GooglePay in your app , you will be required to do additional configuration as follows:

  1. In build.gradle file
  2. Ensure your min sdk is 21
minSdk 21  
targetSdk 33  
  1. In Manifest file , Inside the <application tag do the below:
<meta-data  
android:name="com.google.android.gsm.wallet.api.enabled"  
android:value="true"  
/>  
23
likes
0
pub points
90%
popularity

Publisher

unverified uploader

Flutter plugin compatible version of goSellSDK library for both Android and iOS.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on go_sell_sdk_flutter