Flutter支付插件flutter_kgo_vnpay的使用

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

Flutter支付插件flutter_kgo_vnpay的使用

flutter_kgo_vnpay 是一个用于连接 VNPAY SDK 的 Flutter 插件。本文档将指导你如何在 Flutter 应用中使用该插件。

获取开始

此项目旨在帮助你连接到 VNPAY SDK。VNPAY 是越南的一个在线支付平台,你可以通过此插件集成其支付功能到你的 Flutter 应用中。

iOS 配置

ios/Runner/Info.plist 文件中添加以下配置:

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

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>vnpayxxx</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>vnpayxxx</string>
        </array>
    </dict>
</array>

Android 配置

对于 Android 平台,你需要进行一些额外的配置,但具体步骤未在文档中明确说明。通常情况下,你需要确保 AndroidManifest.xml 文件中包含必要的权限和配置。

使用方法

1. 添加依赖

在项目的 pubspec.yaml 文件中添加 flutter_kgo_vnpay 依赖:

dependencies:
  flutter_kgo_vnpay: ^0.0.2+3

2. 安装依赖

运行以下命令安装依赖:

$ flutter pub get

完整示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 flutter_kgo_vnpay 插件来实现支付功能。

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

import 'package:flutter/services.dart';
import 'package:flutter_kgo_vnpay/flutter_kgo_vnpay.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _flutterKgoVnpayPlugin = FlutterKgoVnpay();

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

  // 异步方法,初始化平台状态
  Future<void> initPlatformState() async {
    String platformVersion;
    // 可能会抛出 PlatformException,所以我们使用 try/catch 来处理
    try {
      platformVersion = await _flutterKgoVnpayPlugin.getPlatformVersion() ?? 
          'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    // 如果小部件从树中移除时异步消息还在飞行,则丢弃回复而不是调用 setState 更新非存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            children: [
              // 按钮用于触发支付流程
              TextButton(
                onPressed: () {
                  _flutterKgoVnpayPlugin.show(
                    paymentUrl: 
                      'https://sandbox.vnpayment.vn/paymentv2/vpcpay.html?vnp_Amount=93830000&vnp_Command=pay&vnp_CreateDate=20220713172638&vnp_CurrCode=VND&vnp_IpAddr=27.72.98.245&vnp_Locale=vn&vnp_OrderInfo=Mua+bh+tnds+cho+xe+%2C+ma+don%3A+220713LNZHKU&vnp_ReturnUrl=httpsO://kgo.life&vnp_TmnCode=xxx&vnp_TxnRef=1000013&vnp_Version=2.1.0&vnp_SecureHash=xxxx',
                    tmnCode: 'kgoxxx',
                    scheme: 'kgo-vnpay',
                  );
                },
                child: Text('Nạp tiền'), // 文本按钮显示“Nạp tiền”,意为“充值”
              ),
              // 显示当前平台版本
              Text('Running on: $_platformVersion\n'),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用flutter_kgo_vnpay插件进行支付的代码示例。flutter_kgo_vnpay是一个用于集成越南支付网关VNPay的Flutter插件。以下是一个简单的使用案例,展示了如何初始化插件并进行支付。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_kgo_vnpay: ^最新版本号  # 请替换为最新的版本号

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

2. 配置Android和iOS

根据flutter_kgo_vnpay的文档,你可能需要在AndroidManifest.xmlInfo.plist中添加一些配置。具体配置请参考插件的官方文档。

3. 初始化插件并进行支付

在你的Flutter应用中,你可以按照以下步骤初始化插件并启动支付流程:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter VNPay Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _startPayment,
            child: Text('Start Payment'),
          ),
        ),
      ),
    );
  }

  Future<void> _startPayment() async {
    // 配置支付参数
    final Map<String, String> paymentParams = {
      'tn': 'your_transaction_no', // 交易号,唯一标识一笔交易
      'vnp_Amount': '100000',      // 交易金额,单位:越南盾(VND)
      'vnp_Command': 'pay',        // 固定值'pay'
      'vnp_Currency': 'VND',       // 交易货币
      'vnp_Desc': 'Test Payment',  // 交易描述
      'vnp_IpAddr': '127.0.0.1',   // 发起交易请求的IP地址(测试环境可以是任意值)
      'vnp_Locale': 'vn',          // 语言代码(vn:越南语, en:英语)
      'vnp_Mode': 'test',          // 模式(test: 测试模式, live: 正式模式)
      'vnp_ReturnUrl': 'https://your_return_url', // 支付成功后的回调URL
      'vnp_Receiver': 'your_merchant_id', // 商户ID
      // 其他可选参数请参考VNPay文档
    };

    try {
      // 启动支付
      final FlutterKgoVnpayResult result = await FlutterKgoVnpay.startPayment(paymentParams);
      
      // 处理支付结果
      if (result.code == '00') {
        // 支付成功
        print('Payment successful: ${result.message}');
      } else {
        // 支付失败
        print('Payment failed: ${result.message}');
      }
    } catch (e) {
      // 处理异常
      print('Error starting payment: $e');
    }
  }
}

// FlutterKgoVnpayResult类定义(假设插件提供了此类,实际情况可能有所不同)
class FlutterKgoVnpayResult {
  String code;
  String message;
  // 其他可能的返回字段

  FlutterKgoVnpayResult({required this.code, required this.message});
}

注意事项

  1. 交易号和商户ID:在实际应用中,交易号和商户ID等敏感信息需要从你的服务器获取,而不是硬编码在客户端。
  2. 回调URL:支付成功后的回调URL应该是一个你能够控制的服务器地址,用于接收支付结果通知。
  3. 错误处理:在实际应用中,应该添加更多的错误处理逻辑,以处理各种可能的异常情况。
  4. 安全性:确保你的应用遵循最佳安全实践,特别是在处理支付信息时。

这个示例展示了如何使用flutter_kgo_vnpay插件进行支付的基本流程。根据你的具体需求,你可能需要调整支付参数和处理逻辑。

回到顶部