Flutter移动开发集成插件fiuu_mobile_xdk_flutter的使用

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

Flutter移动开发集成插件fiuu_mobile_xdk_flutter的使用

简介

fiuu_mobile_xdk_flutter 是一个用于Flutter项目的支付插件,支持Android和iOS平台。本文将介绍如何在Flutter项目中集成并使用该插件。

推荐配置

  • 最低Android SDK版本: 27++
  • 最低Android API级别: 19++
  • 最低Android目标版本: Android 4.4
  • 最低Flutter版本: 0.2.8++
  • Xcode版本: 9++
  • 最低目标版本: iOS 8

安装步骤

1. 添加依赖

pubspec.yaml 文件中添加 fiuu_mobile_xdk_flutter 插件:

dependencies:
  fiuu_mobile_xdk_flutter: "<put latest release version here>"

2. 获取包

运行以下命令以获取插件:

flutter packages get

3. 导入插件

在Dart代码中导入插件:

import 'package:fiuu_mobile_xdk_flutter/fiuu_mobile_xdk_flutter.dart';

4. 配置iOS

Info.plist 文件中添加以下键值对:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>Payment images</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Payment images</string>

示例结果

成功交易结果示例(JSON字符串):

{
  "status_code": "11",
  "amount": "1.01",
  "chksum": "34a9ec11a5b79f31a15176ffbcac76cd",
  "pInstruction": 0,
  "msgType": "C6",
  "paydate": 1459240430,
  "order_id": "3q3rux7dj",
  "err_desc": "",
  "channel": "Credit",
  "app_code": "439187",
  "txn_ID": "6936766"
}

参数及含义:

  • "status_code": "00" 表示成功,"11" 表示失败,"22" 表示待处理(仅适用于现金渠道)
  • "amount": 交易金额
  • "paydate": 交易日期
  • "order_id": 交易订单ID
  • "channel": 交易渠道描述
  • "txn_ID": Fiuu生成的交易ID

错误结果示例(JSON字符串):

{
  "Error": "Communication Error"
}

参数及含义:

  • "Communication Error": 因多种可能原因导致支付过程启动错误,请联系Fiuu支持人员解决。

准备支付详情对象

var paymentDetails = {
  // 可选,当使用在线沙箱环境和账户凭证时需要
  'mp_dev_mode': false,

  // 必填,从Fiuu获得的值
  'mp_username': 'username',
  'mp_password': 'password',
  'mp_merchant_ID': 'merchantid',
  'mp_app_name': 'appname',
  'mp_verification_key': 'vkey123',

  // 必填,支付值
  'mp_amount': '1.10', // 最小值为1.01
  'mp_order_ID': 'orderid123',
  'mp_currency': 'MYR',
  'mp_country': 'MY',

  // 其他可选参数...
};

启动支付模块

String result = await MobileXDK.start(paymentDetails);
print("Result: $result");

完整示例代码

以下是一个完整的Flutter应用示例,演示了如何集成和使用 fiuu_mobile_xdk_flutter 插件:

import 'package:flutter/material.dart';
import 'package:fiuu_mobile_xdk_flutter/fiuu_mobile_xdk_flutter.dart';
import 'dart:io' show Platform;
import 'package:intl/intl.dart';

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

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

class _MyAppState extends State<MyApp> {
  String? _result;

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fiuu XDK Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                child: const Text('Start Payment'),
                onPressed: () async {
                  DateTime now = DateTime.now();
                  String orderId = DateFormat('yyyyMMddkkmmss').format(now);
                  var paymentDetails = {
                    "mp_username": "your_username",
                    "mp_password": "your_password",
                    "mp_merchant_ID": "your_merchant_id",
                    "mp_app_name": "your_app_name",
                    "mp_verification_key": "your_verification_key",

                    "mp_order_ID": orderId, // 唯一订单ID
                    "mp_currency": "MYR",
                    "mp_country": "MY",
                    "mp_amount": "1.01", // 最小值为1.01
                    "mp_channel": "multi", // multi表示所有渠道
                    "mp_bill_description": "bill description",
                    "mp_bill_name": "bill name",
                    "mp_bill_email": "example@gmail.com",
                    "mp_bill_mobile": "123456789",
                  };

                  String? result = await MobileXDK.start(paymentDetails);
                  setState(() {
                    _result = result;
                    print("XDK Result = $result");
                  });
                },
              ),
              if (Platform.isAndroid)
                GestureDetector(
                  onTap: () async {
                    print("Google Pay Button Tapped!");
                    DateTime now = DateTime.now();
                    String orderId = DateFormat('yyyyMMddkkmmss').format(now);

                    var paymentDetails = {
                      'mp_sandbox_mode': true,
                      'mp_merchant_ID': 'your_merchant_id',
                      'mp_verification_key': 'your_verification_key',
                      'mp_order_ID': orderId,
                      'mp_currency': 'MYR',
                      'mp_country': 'MY',
                      'mp_amount': '1.23',
                      'mp_bill_description': 'Test Google Pay',
                      'mp_bill_name': 'GPay',
                      'mp_bill_email': 'example@gmail.com',
                      'mp_bill_mobile': '123456789',
                      'mp_extended_vcode': false,
                    };

                    String? result = await MobileXDK.googlePay(paymentDetails);
                    setState(() {
                      _result = result;
                      print("Google Pay Result = $result");
                    });
                  },
                  child: Image.asset(
                    'assets/gpay.png',
                    width: 99,
                    height: 99,
                  ),
                ),
              if (_result != null)
                Container(
                  margin: const EdgeInsets.all(16.0),
                  padding: const EdgeInsets.all(8.0),
                  decoration: BoxDecoration(
                    border: Border.all(color: Colors.black),
                    borderRadius: BorderRadius.circular(8.0),
                  ),
                  child: Text('Result: $_result'),
                ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用fiuu_mobile_xdk_flutter插件的示例代码案例。请注意,实际使用中可能需要根据你的具体需求进行调整,并且确保你已经按照插件的官方文档完成了必要的配置。

1. 添加依赖

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

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

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

2. 导入插件

在你需要使用该插件的Dart文件中导入它:

import 'package:fiuu_mobile_xdk_flutter/fiuu_mobile_xdk_flutter.dart';

3. 初始化插件

通常,你需要在应用启动时初始化插件。这可以在你的main.dart文件的MyApp类的构造函数或initState方法中进行:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    // 初始化插件,例如设置API密钥等
    FiuuMobileXdkFlutter.initialize(apiKey: '你的API密钥');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Demo'),
        ),
        body: Center(
          child: Text('Hello, Fiuu Mobile XDK Flutter!'),
        ),
      ),
    );
  }
}

4. 使用插件功能

假设fiuu_mobile_xdk_flutter插件提供了一个用于显示广告的功能,你可以这样调用它:

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

class AdScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('显示广告'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 显示广告
            FiuuMobileXdkFlutter.showAd().then((result) {
              if (result) {
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('广告显示成功')),
                );
              } else {
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('广告显示失败')),
                );
              }
            }).catchError((error) {
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('发生错误: $error')),
              );
            });
          },
          child: Text('显示广告'),
        ),
      ),
    );
  }
}

5. 在应用中导航到广告屏幕

最后,你可以在你的应用中添加一个按钮或其他导航元素来导航到广告屏幕:

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('主页'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => AdScreen()),
            );
          },
          child: Text('前往广告页面'),
        ),
      ),
    );
  }
}

总结

以上代码展示了如何在Flutter项目中集成fiuu_mobile_xdk_flutter插件,并进行简单的功能调用。实际使用中,你可能需要查阅插件的官方文档以获取更多详细信息和高级用法。

回到顶部