Flutter支付插件khipu_pay_plugin的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter支付插件khipu_pay_plugin的使用

KhipuPay 是一个库,允许你在你的 Flutter 应用程序中集成 Khipu 支付。

示例

要使用以下任何示例,你需要导入该库。

import 'package:khipu_pay_plugin/khipu_pay_plugin.dart';

初始化

有两种实例化库的方式,我们推荐使用第一种方式,因为它会从环境变量中获取 apiKey

这是最好的方法,因为它允许你安全地保存你的 API 密钥,并且不会在代码中暴露它。

KhipuPay.initialize();

第二种方式是直接将 apiKey 传递给 initialize 方法。

KhipuPay.initialize(
  apiKey: 'your_api_key',
);

重要提示: 处理付款并不需要初始化库,因为可以使用后端调用 Khipu API。因此,只有当你希望从前端调用 Khipu API 时才需要初始化库。

创建付款

为了创建一个付款,需要调用 createPayment 方法并传入一个 KhipuPaymentForm 对象作为参数。createPayment 方法将返回一个 KhipuPayment 对象。

KhipuPayment khipuPayment = await KhipuPay.instance.createPayment(
  KhipuPaymentForm(
    subject: 'Test Payment',
    amount: 1000,
    currency: 'CLP',
    transactionId: '123',
    payerName: 'John Doe',
  )
);

处理付款

为了处理一个付款,需要调用 processPayment 方法并传入通过 createPayment 方法获得的 paymentId 参数。processPayment 方法将返回一个 KhipuResult 对象。

KhipuResult? result = await KhipuPay.processPayment(paymentId: 'your_payment_id');

检查付款状态

为了检查付款的状态,需要调用 paymentStatus 方法并传入通过 createPayment 方法获得的 paymentId 参数。paymentStatus 方法将返回一个 KhipuPayment 对象。

KhipuPayment? payment = await KhipuPay.instance.paymentStatus(paymentId: 'your_payment_id');

平台特定注意事项

Android

gradle-wrapper.properties 文件中,将 distributionUrl 更改为最新版本的 Gradle。

我们建议使用以下版本:

https\://services.gradle.org/distributions/gradle-8.4-bin.zip

build.gradle 文件中,将 com.android.tools.build:gradle 的版本更改为与 Gradle 版本兼容的最新版本(例如 8.3.2)。

iOS

Podfile 中删除 use_frameworks!,以避免与 Khipu 库发生冲突。

target 'Runner' do
  # use_frameworks!

重要提示

  • 此库不是官方库,它是为方便在 Flutter 应用程序中集成 Khipu 支付而创建的。
  • Khipu 提供了用于开发环境和生产环境的 apiKey,你必须根据应用程序所处的环境更改这些字段,以便正确处理付款。

参考资料

许可证

MIT 许可证


完整示例代码

import 'package:flutter/material.dart';

import 'package:khipu_pay_plugin/khipu_pay_plugin.dart';

import 'widget/ticket_card.dart';

void main() {
  KhipuPay.initialize(apiKey: 'your_api_key');
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  KhipuPayment? khipuPayment;

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        backgroundColor: Colors.blueGrey,
        body: TicketCard(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              const Spacer(),
              const Text(
                'KhipuPay Plugin',
                style: TextStyle(
                  fontSize: 25,
                  fontWeight: FontWeight.bold,
                ),
              ),
              const Spacer(),
              ElevatedButton(
                onPressed: () async {
                  khipuPayment = await KhipuPay.instance.createPayment(KhipuPaymentForm(
                    subject: 'Test Payment',
                    amount: 1000,
                    currency: 'CLP',
                    transactionId: '123',
                    payerName: 'John Doe',
                  ));
                },
                child: const Text('Create Payment'),
              ),
              ElevatedButton(
                onPressed: () async {
                  final _ = await KhipuPay.processPayment(paymentId: khipuPayment?.paymentId ?? '');
                },
                child: const Text('Launch Khipu'),
              ),
              ElevatedButton(
                onPressed: () async {
                  final _ = await KhipuPay.instance.paymentStatus(paymentId: khipuPayment?.paymentId ?? '');
                },
                child: const Text('Get Payment Status'),
              ),
              const Spacer(),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用khipu_pay_plugin插件的一个代码示例。这个插件通常用于在Flutter应用中集成Khipu支付服务。请注意,为了成功运行下面的代码,你需要确保已经正确安装了Flutter和Dart开发环境,并且已经在你的项目中添加了khipu_pay_plugin依赖。

首先,你需要在pubspec.yaml文件中添加khipu_pay_plugin依赖:

dependencies:
  flutter:
    sdk: flutter
  khipu_pay_plugin: ^最新版本号 # 请替换为实际可用的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用khipu_pay_plugin进行支付集成。

1. 导入插件

在你的Dart文件中导入插件:

import 'package:khipu_pay_plugin/khipu_pay_plugin.dart';

2. 初始化插件

在使用插件之前,你可能需要进行一些初始化设置。这通常涉及到设置Khipu支付的API密钥或其他必要信息。然而,由于khipu_pay_plugin的具体API可能有所不同,这里假设你需要通过某种方式配置插件(实际使用时应参考插件的官方文档)。

void initKhipuPay() {
  // 假设有一个配置函数,这里仅为示例
  // KhipuPayPlugin.configure(apiKey: 'your_api_key'); // 如果插件需要这样的配置
}

3. 发起支付请求

下面是一个发起支付请求的示例代码。在实际应用中,你需要根据Khipu支付的要求填充所有必要的支付参数。

void startPayment() async {
  // 假设这些是支付所需的一些参数
  String receiverId = 'receiver_id';
  String amount = '100.00'; // 金额
  String currency = 'USD'; // 货币类型
  String description = 'Payment for goods'; // 支付描述
  String returnUrl = 'https://yourwebsite.com/success'; // 支付成功后的回调URL
  String cancelUrl = 'https://yourwebsite.com/cancel'; // 支付取消后的回调URL

  // 发起支付请求
  try {
    bool result = await KhipuPayPlugin.startPayment(
      receiverId: receiverId,
      amount: amount,
      currency: currency,
      description: description,
      returnUrl: returnUrl,
      cancelUrl: cancelUrl,
    );

    if (result) {
      print('Payment initiated successfully.');
    } else {
      print('Failed to initiate payment.');
    }
  } catch (e) {
    print('Error initiating payment: $e');
  }
}

4. 处理支付结果

支付结果通常是通过回调URL处理的,这意味着用户完成支付后,Khipu会重定向到你在returnUrlcancelUrl中指定的URL。在这些页面上,你可以处理支付成功或取消的逻辑。

由于Flutter主要是用于构建移动应用的,处理Web回调可能需要在你的后端服务器上进行。你可以在服务器端接收到Khipu的回调通知后,通过API或其他方式通知你的Flutter应用支付结果。

注意事项

  • 请务必阅读khipu_pay_plugin的官方文档,以获取最准确和最新的API信息。
  • 确保你的应用已经正确处理了用户隐私和数据安全的相关要求。
  • 测试支付功能时,建议使用测试环境,避免产生实际的财务交易。

以上代码是一个基本的示例,实际使用中可能需要根据具体需求进行调整。

回到顶部