搜索插件、代码仓与 APP 分类

插件详情v2.4.29

go_sell_sdk_flutter

适用于 Android 和 iOS 的 goSellSDK 库的 Flutter 插件兼容版本。

AndroidiOS
近 30 天下载
567
喜欢数
25
Pub 分数
120

安装插件

flutter pub add go_sell_sdk_flutter

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

go_sell_sdk_flutter 包是一个 Flutter 插件,可无缝集成 goSellSDK,以便在 Android 和 iOS 平台上处理支付。它使开发者能够安全地收集支付信息、处理令牌化并管理 Flutter 应用中的交易。该插件设计简洁易用,支持多种支付方式,并确保符合行业安全标准。该 SDK 由 Tap Payments 维护,可在移动平台上提供一致的体验。

适合场景

  • 应用内购买
  • 电子商务结账
  • 移动销售点系统
  • 订阅计费
  • 数字钱包集成

主要特点

  • 跨平台兼容性
  • 安全支付令牌化
  • 支持多种支付方式
  • 与 Flutter 的轻松集成
  • 实时交易处理

适合对象

  • Flutter 开发人员构建电子商务应用
  • 需要安全移动支付的企业
  • 与 Tap Payments 集成的开发者
  • 需要符合 PCI 标准的支付处理的应用程序
  • 初创公司推出以移动设备为优先的支付解决方案

使用建议

  • 需要 Tap Payments 的 API 密钥
  • 需要为 Android 和 iOS 进行正确配置
  • 依赖于交易期间的网络连接
  • 可能需要额外的后端逻辑以实现完整的支付流程
  • 限支持的地区和货币

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

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

  • Android (https://github.com/Tap-Payments/goSellSDK-Android)

  • AndroidX (https://github.com/Tap-Payments/goSellSDK-AndroidX)

  • iOS (https://github.com/Tap-Payments/goSellSDK-ios)

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. Shipping

  10. Tax

  11. Reference

  12. Payment Item

  13. Configure Payment Type

  14. Use Tap Pay Button

  15. Handle SDK Result

  16. Apple Pay Setup

  17. Google Pay Setup

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.4.11
      

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

  
Future<void> setupSDKSession() async {  
  
       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: 100,  
              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,  
         // Supported payment methods List  supportedPaymentMethods: ["knet", "visa"],  
  
         /// SDK Appearance Mode appearanceMode: SDKAppearanceMode.fullscreen,  
           paymentType: PaymentType.ALL,  
           sdkMode: SDKMode.Sandbox,
      );  
 } on PlatformException {  
 }  

Transaction Modes

trxMode: TransactionMode.PURCHASE  
  

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

  • Purchase

  • dart TransactionMode.PURCHASE

Normal customer charge.

  • Authorize

  • dart TransactionMode.AUTHORIZE_CAPTURE

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

Use this mode to save the card of the customer with Tap and use it later.

  • Tokenize Card

  • dart TransactionMode.TOKENIZE_CARD

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.


Customer
  • New Customer (First time to pay using goSell SDK)
 Customer(  
      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.

  Customer(  
       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 ('').


Shipping
  • Model for Shipping
 Shipping(  
   name: "shipping",  
   amount: 150,  
   description: "shipping description",  
 ) 

Tax
  • Model for Tax
Tax(  
  amount: Amount(  
  type: "F",  
    value: 10,  
    minimumFee: 1,  
    maximumFee: 10,  
  ),  
  name: "tax1",  
  description: "tax description",  
),

Reference
  • Model for Reference
Reference(  
  acquirer: "acquirer",  
  gateway: "gateway",  
  payment: "payment",  
  track: "track",  
  transaction: "trans_910101",  
  order: "order_262625",  
),

Payment Item
  • Model for Payment Item
 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,  
        minimumFee: 1,  
        maximumFee: 10,  
      ),  
      name: "tax1",  
      description: "tax description",  
    )  
  ],  
  totalAmount: 100,  
),

Configure Payment Type

  
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 |


Use Tap Pay Button

  
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
  
setState(() {  
  
switch (tapSDKResult['sdk_result']) {  
  
case "SUCCESS":  
  
sdkStatus = "SUCCESS";  
  
handleSDKResult();  
  
break;  
  
case "FAILED":  
  
sdkStatus = "FAILED";  
  
handleSDKResult();  
  
break;  
  
case "SDK_ERROR":  
  
sdkErrorCode = tapSDKResult['sdk_error_code'].toString();  
  
sdkErrorMessage = tapSDKResult['sdk_error_message'];  
  
sdkErrorDescription = tapSDKResult['sdk_error_description'];  
  
break;  
  
case "NOT_IMPLEMENTED":  
  
sdkStatus = "NOT_IMPLEMENTED";  
  
break;  
  
}  
  
});  
  
void handleSDKResult() {  
  
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

Follow the steps shared in the following link to setup apple pay:

https://github.com/Tap-Payments/goSellSDK-ios#apple-pay

Enable Apple Pay Setup Button

The SDK now supports the enableApplePaySetup parameter which allows you to show the Apple Pay setup button to users who haven't configured Apple Pay on their device.

GoSellSdkFlutter.startPaymentProcess(
  merchantID: "YOUR_MERCHANT_ID",
  allowedCadTypes: CardType.ALL,
  applePayMerchantID: "merchant.com.tap.applepay",
  enableApplePaySetup: true,  // Show setup button if wallet not configured
  sdkMode: SDKMode.SANDBOX,
  paymentType: PaymentType.ALL,
);

Behavior:

  • When enableApplePaySetup: true → The Apple Pay setup button will be displayed if the wallet is not configured on the device
  • When enableApplePaySetup: false (default) → The Apple Pay setup button will be hidden

This feature enables users to easily configure Apple Pay during the payment process if they haven't already done so.



Google pay setup

Follow the steps shared in the following link to setup google pay:

https://github.com/Tap-Payments/goSellSDK-AndroidX?tab=readme-ov-file#google-pay


所属分类

依赖

依赖清单 1 项

  • plugin_platform_interface^2.0.2

源码仓库

使用此插件的项目

暂无相关数据。