Flutter移动支付插件mobilepay_flutter的使用

Flutter移动支付插件mobilepay_flutter的使用

mobilepay_flutter 是一个用于 Flutter 应用的插件,支持通过 MobilePay AppSwitch 进行移动支付。本指南将详细介绍如何在 Flutter 应用中使用该插件。

iOS

要使 mobilepay_flutter 在 iOS 上正常工作,请遵循以下步骤:

  1. 按照 Mobile Pay 提供的指南进行操作:

  2. 将所需的键添加到您的 .plist 文件中。

示例代码

以下是 mobilepay_flutter 插件的基本使用示例:

import 'dart:io';

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

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  bool _mobilePlayInstalled = false;
  bool _loading = false;
  MobilePayResult? _paymentResult;

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

  Future<void> initMobilePay() async {
    bool mobilePlayInstalled;

    // 初始化 MobilePay
    MobilePay().init("APPDK0000000000", MobilePayCountry.DENMARK, "SIMPLECONCEPT");

    try {
      // 检查是否安装了 MobilePay 应用
      mobilePlayInstalled = await MobilePay().isMobilePayInstalled;
    } on PlatformException {
      mobilePlayInstalled = false;
    }

    if (!mounted) return;

    // 更新 UI 状态
    setState(() {
      _mobilePlayInstalled = mobilePlayInstalled;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Mobile Pay Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Mobile Pay Installed: $_mobilePlayInstalled\n'),
              FlatButton(
                child: Text("Pay"),
                onPressed: initiatePayment,
              ),
              if (_loading) CircularProgressIndicator(),
              if (_paymentResult != null) buildPaymentResult()
            ],
          ),
        ),
      ),
    );
  }

  // 发起支付
  initiatePayment() async {
    if (_mobilePlayInstalled) {
      setState(() {
        _loading = true;
      });

      try {
        // 创建支付请求
        final result = await MobilePay()
            .createPayment(productPrice: 10.5, orderId: "some_order");
        setState(() {
          _paymentResult = result;
        });
      } catch (e) {
        print(e);
      } finally {
        setState(() {
          _loading = false;
        });
      }
    } else {
      // 如果未安装 MobilePay 应用,则提示用户下载
      await MobilePay().downloadMobilePay();
    }
  }

  // 显示支付结果
  Widget buildPaymentResult() {
    if (_paymentResult!.isCanceled)
      return Text(
        "交易已取消",
        style: Theme.of(context).textTheme.displayMedium,
      );
    if (_paymentResult!.isFailure)
      return Column(
        children: <Widget>[
          Text(
            "交易失败",
            style: Theme.of(context).textTheme.displayMedium,
          ),
          Text("${_paymentResult!.errorCode}: ${_paymentResult!.errorMessage}")
        ],
      );

    return Column(
      children: <Widget>[
        Text(
          "交易成功",
          style: Theme.of(context).textTheme.displayMedium,
        ),
        Text("${_paymentResult!.amountWithdrawnFromCard} €"),
        Text("${_paymentResult!.orderId}"),
        Text("${_paymentResult!.transactionId}"),
      ],
    );
  }
}

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

1 回复

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


mobilepay_flutter 是一个用于在 Flutter 应用中集成移动支付功能的插件。它支持多种支付方式,如支付宝、微信支付等。以下是如何使用 mobilepay_flutter 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  mobilepay_flutter: ^latest_version

替换 latest_version 为最新的插件版本号。

2. 安装依赖

运行以下命令来安装依赖:

flutter pub get

3. 初始化插件

在应用启动时,初始化 mobilepay_flutter 插件。通常在 main.dart 文件中进行初始化:

import 'package:mobilepay_flutter/mobilepay_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await MobilePayFlutter.initialize(
    aliPayAppId: 'your_alipay_app_id', // 支付宝App ID
    weChatAppId: 'your_wechat_app_id', // 微信App ID
  );
  runApp(MyApp());
}

4. 配置支付方式

根据你使用的支付方式,配置相应的参数。例如,配置支付宝或微信支付。

支付宝

AndroidManifest.xml 中添加以下配置:

<activity
    android:name="com.alipay.sdk.app.H5PayActivity"
    android:configChanges="orientation|keyboardHidden|navigation|screenSize"
    android:exported="false"
    android:screenOrientation="behind">
</activity>

微信支付

AndroidManifest.xml 中添加以下配置:

<activity
    android:name="com.tencent.mm.opensdk.openapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop">
</activity>

5. 发起支付

在需要发起支付的地方,调用 MobilePayFlutter 的相应方法。例如,发起支付宝支付:

void payWithAliPay() async {
  try {
    final result = await MobilePayFlutter.aliPay(
      orderInfo: 'your_order_info', // 订单信息
    );
    if (result == MobilePayResult.success) {
      // 支付成功
    } else {
      // 支付失败
    }
  } catch (e) {
    // 处理异常
  }
}

发起微信支付:

void payWithWeChat() async {
  try {
    final result = await MobilePayFlutter.weChatPay(
      appId: 'your_wechat_app_id', // 微信App ID
      partnerId: 'your_partner_id', // 商户ID
      prepayId: 'your_prepay_id', // 预支付ID
      packageValue: 'your_package_value', // 包名
      nonceStr: 'your_nonce_str', // 随机字符串
      timeStamp: 'your_timestamp', // 时间戳
      sign: 'your_sign', // 签名
    );
    if (result == MobilePayResult.success) {
      // 支付成功
    } else {
      // 支付失败
    }
  } catch (e) {
    // 处理异常
  }
}

6. 处理支付结果

支付完成后,可以通过回调或监听器处理支付结果。MobilePayFlutter 提供了 MobilePayResult 枚举来表示支付结果:

enum MobilePayResult {
  success,
  fail,
  cancel,
  unknown,
}
回到顶部