Flutter支付集成插件khalti_client的使用

Flutter支付集成插件khalti_client的使用

概述

khalti_client 是一个用于在 Flutter 中实现 Khalti 客户端 API 的插件。目前该插件仅支持 Android 平台。


使用方法

初始化 KhaltiClient

首先,创建一个 KhaltiClient 实例并配置其公钥和支付偏好。

KhaltiClient _khaltiClient = KhaltiClient.configure(
  publicKey: "test_public_key_8a153ab792a64d3a88a1425209eecbf1", // 替换为您的测试公钥
  paymentPreferences: [KhaltiPaymentPreference.KHALTI], // 支持的支付方式
);

创建产品信息

定义要购买的产品信息,包括产品 ID、名称和金额(单位为 Paisa,1 Paisa = 0.01 NPR)。

KhaltiProduct product = KhaltiProduct(
  id: "test", // 产品唯一标识符
  name: "Test Product", // 产品名称
  amount: 1000, // 产品价格,单位为 Paisa
);

启动支付流程

通过调用 _khaltiClient.startPayment 方法启动支付流程,并传入回调函数以处理支付成功或失败的情况。

_khaltiClient.startPayment(
  product: product,
  onSuccess: (data) {
    print("支付成功"); // 支付成功时的回调
  },
  onFailure: (data) {
    print("支付失败"); // 支付失败时的回调
),

完整示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中集成 Khalti 支付功能。

import 'package:flutter/material.dart';

import 'package:khalti_client/khalti_client.dart'; // 引入 khalti_client 插件

void main() {
  runApp(MyApp()); // 运行应用
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState(); // 创建状态管理类
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState(); // 初始化状态
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Khalti 支付示例'), // 设置应用标题
        ),
        body: Center(
          child: TextButton(
            child: Text("通过 Khalti 支付"), // 显示支付按钮
            onPressed: _payViaKhalti, // 点击按钮时触发支付逻辑
          ),
        ),
      ),
    );
  }

  // 支付逻辑
  _payViaKhalti() async {
    // 配置 KhaltiClient
    KhaltiClient _khaltiClient = KhaltiClient.configure(
      publicKey: "test_public_key_8a153ab792a64d3a88a1425209eecbf1", // 替换为您的测试公钥
      paymentPreferences: [KhaltiPaymentPreference.KHALTI], // 支持的支付方式
    );

    // 定义产品信息
    KhaltiProduct product = KhaltiProduct(
      id: "test", // 产品唯一标识符
      name: "Test Product", // 产品名称
      amount: 1000, // 产品价格,单位为 Paisa
    );

    // 启动支付流程
    _khaltiClient.startPayment(
      product: product,
      onSuccess: (data) {
        print("支付成功"); // 支付成功时的回调
      },
      onFailure: (data) {
        print("支付失败"); // 支付失败时的回调
      },
    );
  }
}

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

1 回复

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


khalti_client 是一个用于在 Flutter 应用中集成 Khalti 支付功能的插件。Khalti 是尼泊尔的一个流行的移动支付平台,允许用户通过手机进行支付。

以下是如何在 Flutter 项目中使用 khalti_client 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  khalti_client: ^0.0.1  # 请使用最新版本

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

2. 初始化 Khalti 客户端

在你的 Dart 文件中导入 khalti_client 并初始化 Khalti 客户端:

import 'package:khalti_client/khalti_client.dart';

void main() {
  KhaltiClient.initialize(
    publicKey: 'your_public_key',  // 从 Khalti 仪表板获取的公钥
    isTestMode: true,  // 如果是测试环境,设置为 true
  );
  runApp(MyApp());
}

3. 发起支付请求

你可以使用 KhaltiClient 来发起支付请求。以下是一个简单的例子:

import 'package:flutter/material.dart';
import 'package:khalti_client/khalti_client.dart';

class PaymentPage extends StatelessWidget {
  Future<void> _makePayment() async {
    try {
      final response = await KhaltiClient.initiatePayment(
        amount: 1000,  // 金额(以尼泊尔卢比为单位)
        mobile: '98XXXXXXXX',  // 用户的手机号码
        productIdentity: 'product_id',  // 产品唯一标识
        productName: 'Product Name',  // 产品名称
      );

      if (response.status == 'Success') {
        // 支付成功处理
        print('Payment successful! Payment ID: ${response.paymentId}');
      } else {
        // 支付失败处理
        print('Payment failed: ${response.message}');
      }
    } catch (e) {
      // 捕获异常
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Khalti Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('Pay with Khalti'),
        ),
      ),
    );
  }
}
回到顶部