Flutter支付功能插件gpayments的使用

Flutter支付功能插件gpayments的使用

简介

gpayments 是一个用于在 Flutter 应用中集成 4Geeks 支付网关的项目。

开始使用

这是一个还在开发中的项目。如果你发现任何错误或不兼容问题,请不要犹豫,报告并创建一个问题,我会尽快处理。

安装

由于 gpayments 目前还处于早期开发阶段,因此它还没有发布到 Pub.Dev 仓库。为了安装此插件,你需要手动下载并将其安装在项目的 packages 文件夹中。

使用方法

导入包

首先,在你的 Dart 文件中导入 gpayments 包:

#import 'package:gpayments/gpayments.dart';

初始化

然后,初始化主方法以生成认证令牌:

final gpaymentsToken = await GPayments.config(
  clientId: "client-id", 
  clientSecret: "client-secret"
);

创建支付

现在你可以使用 gpaymentsToken 来创建支付:

GPayments.createChargeWithCreditCard(
  token: gpaymentsToken, 
  amount: 12000, 
  description: 'test product sale charge', 
  entityDescription: 'test product', 
  currency: 'crc', 
  cardNumber: 4242424242424242, 
  securityCode: 123, 
  expMonth: 12, 
  expYear: 2023
);

API 使用

要使用 GPayments,你必须有一个 4Geeks 支付账户。记住,该服务目前仅在哥斯达黎加可用;然而,你可以处理来自世界各地的 Visa 或 MasterCard 信用卡支付。对于美国运通信用卡,你只能处理美元支付。

初始化 GPayments

开始之前,初始化 GPayments 并生成一个令牌。每次执行请求时,你都需要使用这个令牌来访问 4Geeks 支付 API:

final gpaymentsToken = await GPayments.config(
  clientId: "client-id", 
  clientSecret: "client-secret"
);

注意:别忘了在 4Geeks 支付 注册为商家,并可以使用沙箱凭证进行测试。此外,记得在 Dart 文件中导入包。

获取账户信息

要获取你的账户信息,可以使用以下代码片段:

GPayments.fetchAccountData(
  token: gpaymentsToken
);

更新账户信息

如果要编辑账户信息,可以使用以下方法:

GPayments.updateAccountData(
  token: gpaymentsToken,
  data: {
    "bank_name": "Bac"
  }
);

创建新客户

如果你想创建一个新的客户以便存储他们的令牌,以便将来进行交易,可以调用以下方法:

GPayments.createCustomer(
  token: gpaymentsToken,
  name: 'Michael Jordan',
  email: 'mjordan@nba.com',
  currency: 'crc',
  cardNumber: 4242424242424242,
  securityCode: 123,
  expMonth: 12,
  expYear: 2023
);

更新现有客户的账户信息

如果要更新现有客户的账户信息,步骤相同,但这次需要提供客户的 ID:

GPayments.updateCustomer(
  token: gpaymentsToken,
  customerId: "gjDKFJDJR456kgkgkfsFDKSLAFJGJKL75L",
  data: {
    "name": "Michael Jackson"
  }
);

获取客户信息

你可以获取所有客户的 ID:

GPayments.fetchAllCustomers(
  token: gpaymentsToken
);

或者提供特定的客户 ID 来获取该客户的详细信息:

GPayments.fetchCustomerId(
  token: gpaymentsToken,
  customerId: "gjDKFJDJR456kgkgkfsFDKSLAFJGJKL75L",
);

删除现有客户

如果要删除现有客户的记录,可以使用此方法:

GPayments.removeCustomer(
  token: gpaymentsToken,
  customerId: "gjDKFJDJR456kgkgkfsFDKSLAFJGJKL75L",
);

创建订阅计划

如果要为客户创建订阅计划,可以使用以下方法:

GPayments.createPlan(
  token: gpaymentsToken,
  planId: 'plan-1',
  name: 'Test Plan',
  amount: 300000,
  currency: 'crc',
  trialPeriod: 0,
  interval: 'month',
  intervalCount: 1,
  entityDescription: 'Test Credit Card'
)

获取计划信息

你可以获取所有计划的 ID:

GPayments.fetchAllPlans(
  token: gpaymentsToken
);

或者提供特定的计划 ID 来获取该计划的详细信息:

GPayments.fetchPlanId(
  token: gpaymentsToken,
  planId: "gjfkAS34WEDjrks454DFG44fdk",
);

删除现有计划

如果要删除现有计划,可以使用此方法:

GPayments.removePlan(
  token: gpaymentsToken,
  planId: "gjfkAS34WEDjrks454DFG44fdk",
);

订阅计划

要让客户订阅你的一个计划,可以使用以下方法:

GPayments.subscribePlan(
  token: gpaymentsToken,
  planId: "gjfkAS34WEDjrks454DFG44fdk",
  customerId: "gjDKFJDJR456kgkgkfsFDKSLAFJGJKL75L",
);

获取现有订阅

你可以获取所有订阅的 ID:

GPayments.fetchAllSubscriptions(
  token: gpaymentsToken
);

或者提供特定的订阅 ID 来获取该订阅的详细信息:

GPayments.fetchPlanId(
  token: gpaymentsToken,
  subscriptionId: "gjfkAS34WEDjrks454DFG44fdk",
);

取消订阅计划

要取消客户的订阅,可以使用以下方法:

GPayments.unsubscribePlan(
  token: gpaymentsToken,
  subscriptionId: "gjfkAS34WEDjrks454DFG44fdk",
);

创建支付

如果你想向客户收取特定金额的费用,你可以选择收取他们的信用卡费用或使用预存在的客户信用卡令牌。两种方式的详细信息如下:

收取信用卡费用

GPayments.createChargeWithCreditCard(
  token: gpaymentsToken,
  amount: 35.99,
  description: 'Test Product #1',
  entityDescription: 'Product #1',
  currency: 'usd',
  cardNumber: 4242424242424242,
  securityCode: 123,
  expMonth: 12,
  expYear: 2023
);

使用客户的注册 ID 收费

GPayments.createChargeWithCreditCard(
  token: gpaymentsToken,
  customerId: "gjDKFJDJR456kgkgkfsFDKSLAFJGJKL75L",
  amount: 35.99,
  description: 'Test Product #1',
  entityDescription: 'Product #1',
  currency: 'usd',
);

获取已执行的支付日志

最后,你可以获取所有已执行支付的 ID:

GPayments.fetchAllCharges(
  token: gpaymentsToken
);

或者提供特定的支付 ID 来获取该支付的详细信息:

GPayments.fetchChargeWithId(
  token: gpaymentsToken,
  chargeId: "3lkk98JKGJDF56Lkkasdef67",
);

更多关于Flutter支付功能插件gpayments的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付功能插件gpayments的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


gpayments 是一个用于在 Flutter 应用中集成支付功能的插件。它支持多种支付方式,如信用卡、支付宝、微信支付等。以下是如何在 Flutter 项目中使用 gpayments 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 gpayments 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  gpayments: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 以获取依赖。

2. 配置支付平台

根据你使用的支付方式,可能需要配置不同的平台。

Android

AndroidManifest.xml 中添加必要的权限和配置:

<uses-permission android:name="android.permission.INTERNET" />

iOS

Info.plist 中添加必要的配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

3. 初始化支付插件

在 Flutter 应用中初始化 gpayments 插件:

import 'package:gpayments/gpayments.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  [@override](/user/override)
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  final Gpayments _gpayments = Gpayments();

  [@override](/user/override)
  void initState() {
    super.initState();
    _initializePayments();
  }

  Future<void> _initializePayments() async {
    await _gpayments.initialize(
      publicKey: "YOUR_PUBLIC_KEY",
      environment: Environment.Sandbox,  // 或 Environment.Production
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _startPayment,
          child: Text('Pay Now'),
        ),
      ),
    );
  }

  Future<void> _startPayment() async {
    try {
      final PaymentResponse response = await _gpayments.startPayment(
        amount: 1000,  // 金额,单位为分
        currency: 'USD',
        description: 'Test Payment',
      );

      if (response.status == PaymentStatus.Success) {
        // 支付成功
        print('Payment successful: ${response.transactionId}');
      } else {
        // 支付失败
        print('Payment failed: ${response.message}');
      }
    } catch (e) {
      print('Error: $e');
    }
  }
}
回到顶部