Flutter支付集成插件ipay_money_flutter_sdk的使用

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

Flutter支付集成插件 ipay_money_flutter_sdk 的使用

ipay_money_flutter_sdk 是一个用于集成i-pay.money平台支付功能的Flutter插件。本文将介绍如何在你的Flutter项目中使用该插件。

开始使用

添加依赖

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

dependencies:
  ipay_money_flutter_sdk: ^latest_version

记得替换^latest_version为你需要的具体版本号。

导入包

然后,只需要导入这个包:

import 'package:ipay_money_flutter_sdk/ipay_money_flutter_sdk.dart';

示例代码

以下是不同支付类型的示例代码,包括卡支付、移动支付和Alizza支付。

卡支付(仅限生产环境)

IpayPayments(
  timeOut: 10,
  amount: '100',
  authorization: 'Your secret key',
  country: Country.ne,
  currency: 'XOF',
  exp: '01/10',
  pan: "1234567XXXXXX",
  cvv: '1XX',
  msisdn: '90XXXXXX',
  name: 'John Doe',
  targetEnvironment: TargetEnvironment.live,
  referencePrefix: "LoremIpsum",
  paymentType: PaymentType.card,
).ipayPayment(
  context: context,
  callback: (callback) async {
    if (jsonDecode(callback)['status'] == 'success') {
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text('Paiement effectuer avec succès , reférence du paiement : ${jsonDecode(callback)['reference']}'),
        duration: Duration(seconds: 3),
      ));
    } else if(jsonDecode(callback)['status'] == 'failed'){
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text('Paiement non effectuer'),
        duration: Duration(seconds: 3),
      ));
    }
  },
);

移动支付(适用于生产和测试环境)

IpayPayments(
  timeOut: 10,
  amount: '100',
  authorization: 'Your secret key',
  country: Country.ne,
  msisdn: '90XXXXXX',
  name: 'John Doe',
  targetEnvironment: TargetEnvironment.sandbox,
  referencePrefix: "LoremIpsum",
  paymentType: PaymentType.mobile,
).ipayPayment(
  context: context,
  callback: (callback) async {
    if (jsonDecode(callback)['status'] == 'success') {
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text('Paiement effectuer avec succès , reférence du paiement : ${jsonDecode(callback)['reference']}'),
        duration: Duration(seconds: 3),
      ));
    } else if(jsonDecode(callback)['status'] == 'failed'){
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text('Paiement non effectuer'),
        duration: Duration(seconds: 3),
      ));
    }
  },
);

Alizza支付(仅限生产环境)

IpayPayments(
  timeOut: 10,
  amount: '100',
  authorization: 'Your secret key',
  country: Country.ne,
  currency: 'XOF',
  msisdn: '90XXXXXX',
  name: 'John Doe',
  targetEnvironment: TargetEnvironment.live,
  referencePrefix: "LoremIpsum",
  paymentType: PaymentType.alizza,
).ipayPayment(
  context: context,
  callback: (callback) async {
    if (jsonDecode(callback)['status'] == 'success') {
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text('Paiement effectuer avec succès , reférence du paiement : ${jsonDecode(callback)['reference']}'),
        duration: Duration(seconds: 3),
      ));
    } else if(jsonDecode(callback)['status'] == 'failed'){
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text('Paiement non effectuer'),
        duration: Duration(seconds: 3),
      ));
    }
  },
);

完整示例Demo

下面是一个完整的示例应用,展示了如何选择不同的支付方式,并进行相应的支付操作。

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:ipay_money_flutter_sdk/ipay_money_flutter_sdk.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TestPage(),
    );
  }
}

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

  @override
  State<TestPage> createState() => _TestPageState();
}

class _TestPageState extends State<TestPage> {
  final TextEditingController _nameController = TextEditingController();
  final TextEditingController _numberController = TextEditingController();
  final TextEditingController _amountController = TextEditingController();
  final TextEditingController _cvvController = TextEditingController();
  final TextEditingController _expController = TextEditingController();
  final TextEditingController _panController = TextEditingController();
  PaymentType _paymentType = PaymentType.mobile;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('iPayMoney Sdk Test'),
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 20),
              child: Column(
                children: [
                  TextFormField(
                    controller: _nameController,
                    decoration: InputDecoration(labelText: "Nom et prénom"),
                  ),
                  TextFormField(
                    controller: _numberController,
                    keyboardType: TextInputType.number,
                    decoration: InputDecoration(labelText: "Numéro de téléphone"),
                  ),
                  TextFormField(
                    controller: _amountController,
                    keyboardType: TextInputType.number,
                    decoration: InputDecoration(labelText: "Montant"),
                  ),
                  if (_paymentType == PaymentType.card)
                    Column(
                      children: [
                        TextFormField(
                          controller: _panController,
                          keyboardType: TextInputType.number,
                          decoration: InputDecoration(labelText: "Numéro de la carte"),
                        ),
                        Row(
                          children: [
                            Flexible(
                              child: TextFormField(
                                controller: _expController,
                                keyboardType: TextInputType.text,
                                decoration: InputDecoration(labelText: "Date expiration"),
                              ),
                            ),
                            Flexible(
                              child: TextFormField(
                                controller: _cvvController,
                                keyboardType: TextInputType.number,
                                maxLength: 3,
                                obscureText: true,
                                decoration: InputDecoration(labelText: "Cvv"),
                              ),
                            ),
                          ],
                        ),
                      ],
                    ),
                  ElevatedButton(
                    onPressed: () {
                      IpayPayments(
                        timeOut: 60,
                        amount: _amountController.text,
                        authorization: 'Your secret key',
                        country: Country.ne,
                        currency: 'XOF',
                        exp: _expController.text,
                        pan: _panController.text,
                        cvv: _cvvController.text,
                        msisdn: _numberController.text,
                        name: _nameController.text,
                        targetEnvironment: TargetEnvironment.live,
                        paymentType: _paymentType,
                      ).ipayPayment(
                        context: context,
                        callback: (callback) async {
                          if (jsonDecode(callback)['status'] == 'success') {
                            ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                              content: Text('Paiement effectuer avec succès , reference du paiement : ${jsonDecode(callback)['reference']}'),
                              duration: const Duration(seconds: 3),
                            ));
                          } else {
                            print(callback.toString());
                          }
                        },
                      );
                    },
                    child: const Text('Payer'),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

以上是关于ipay_money_flutter_sdk的基本使用方法和一个简单的完整示例应用。希望这能帮助你快速集成支付功能到你的Flutter项目中。


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用ipay_money_flutter_sdk插件进行支付的示例代码。这个插件假定你已经具备了一些Flutter开发的基础知识,并且已经设置好了Flutter开发环境。

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

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

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

接下来,你需要在你的Flutter应用中导入并使用这个插件。以下是一个基本的示例,展示了如何初始化插件并调用支付功能:

  1. 导入插件

在你的Dart文件中(比如main.dart或者一个特定的支付页面),导入插件:

import 'package:ipay_money_flutter_sdk/ipay_money_flutter_sdk.dart';
import 'package:flutter/material.dart';
  1. 初始化插件

在适当的生命周期方法中(比如initState),你可以初始化插件。但是,通常支付插件的初始化可能只需要在应用启动时进行一次,或者根据需求在需要支付前进行。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 在这里可以初始化插件(如果需要的话)
    // IpayMoneyFlutterSdk.instance.init(...);
    
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PaymentScreen(),
    );
  }
}

注意:初始化方法可能依赖于具体的插件实现,请参考插件的官方文档以获取正确的初始化方法。

  1. 实现支付功能

在你的支付页面中,实现支付按钮和支付逻辑:

class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  void _startPayment() async {
    try {
      // 构建支付参数,这里只是示例,实际参数需要根据支付平台的要求进行配置
      Map<String, dynamic> paymentParams = {
        "merchantId": "你的商户ID",
        "orderId": "订单ID",
        "amount": "支付金额",
        // 其他必要的支付参数
      };

      // 调用支付方法
      bool result = await IpayMoneyFlutterSdk.instance.pay(paymentParams);

      // 处理支付结果
      if (result) {
        showSnackBar("支付成功");
      } else {
        showSnackBar("支付失败");
      }
    } catch (e) {
      // 处理异常
      showSnackBar("支付发生错误: ${e.message}");
    }
  }

  void showSnackBar(String message) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text(message),
        duration: Duration(seconds: 2),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("支付页面"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _startPayment,
          child: Text("支付"),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的支付页面,其中包含一个支付按钮。当用户点击按钮时,会调用_startPayment方法,该方法会构建支付参数并调用ipay_money_flutter_sdk插件的pay方法进行支付。支付结果会通过SnackBar显示给用户。

注意

  • 上述代码中的支付参数(如merchantIdorderIdamount等)需要根据你实际的支付平台要求进行配置。
  • 异常处理和支付结果的处理可能需要根据你的业务逻辑进行更详细的实现。
  • 请务必参考ipay_money_flutter_sdk插件的官方文档,以获取最新的API信息和参数配置。

希望这个示例能帮助你在Flutter项目中集成并使用ipay_money_flutter_sdk插件进行支付。

回到顶部