Flutter支付功能插件mdpay的使用

Flutter支付功能插件mdpay的使用

Midtrans支付网关插件用于Flutter

Flutter Midtrans支付插件

请在使用此库之前阅读Midtrans文档,并确保您已经拥有Midtrans账户以访问仪表板。


Android设置

仅支持AndroidX,并且最低编译目标为28

android/app/src/main/res/values/styles.xml中添加样式:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

完整的styles.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- 显示启动屏幕。自动移除当Flutter绘制第一帧时 -->
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
</resources>

然后在AndroidManifest.xml中应用主题:

android:theme="@style/AppTheme"

iOS设置

无需特定设置。


示例用法

确保您已经准备了以下变量:

  • YOUR_CLIENT_ID: Midtrans客户端ID
  • YOUR_URL_BASE: 后端API的基础URL以处理支付

示例代码如下:

import 'package:mdpay/mdpay.dart';
...

final mdpay = Mdpay();

// 初始化客户端ID和URL基础
mdpay.init("YOUR_CLIENT_ID", "YOUR_URL_BASE");

// 设置支付完成后的回调
mdpay.setFinishCallback((finished) {
    // finished 是 TransactionFinished
});

// 执行支付
mdpay
    .makePayment(
        MidtransTransaction(
            7500,
            MidtransCustomer(
                "Apin", "Prastya", "apin.klas@gmail.com", "08123456789"),
            [
                MidtransItem(
                    "5c18ea1256f67560cb6a00cdde3c3c7a81026c29",
                    7500,
                    2,
                    "USB FlashDisk",
                )
            ],
            skipCustomer: true,
            customField1: "ANYCUSTOMFIELD"),
    )
    .catchError((err) => print("ERROR $err"));

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter中使用mdpay插件进行支付:

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

void main() => runApp(new MyApp());

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

class _MyAppState extends State<MyApp> {
  bool isMakePayment = false;
  final mdpay = Mdpay();

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化客户端ID和URL基础
    mdpay.init("YOUR_CLIENT_ID", "YOUR_URL_BASE");
    // 设置支付完成后的回调
    mdpay.setFinishCallback(_callback);
  }

  // 执行支付
  _makePayment() {
    setState(() {
      isMakePayment = true;
    });
    mdpay
        .makePayment(
          MidtransTransaction(
              7500,
              MidtransCustomer(
                  "Apin", "Prastya", "apin.klas@gmail.com", "085235419949"),
              [
                MidtransItem(
                  "5c18ea1256f67560cb6a00cdde3c3c7a81026c29",
                  7500,
                  2,
                  "USB FlashDisk",
                )
              ],
              skipCustomer: true,
              customField1: "ANYCUSTOMFIELD"),
        )
        .catchError((err) => print("ERROR $err"));
  }

  // 支付完成后的回调
  Future<void> _callback(TransactionFinished finished) async {
    setState(() {
      isMakePayment = false;
    });
    return Future.value(null);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text('mdpay 插件示例'),
        ),
        body: new Center(
          child: isMakePayment
              ? CircularProgressIndicator()
              : ElevatedButton(
                  child: Text("执行支付"),
                  onPressed: () => _makePayment(),
                ),
        ),
      ),
    );
  }
}

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

1 回复

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


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

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  mdpay: ^1.0.0  # 请使用最新版本

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

2. 配置支付平台

mdpay 插件支持多种支付平台,因此你需要在项目中配置相应的平台支持。

Android

android/app/build.gradle 文件中,确保你已经启用了 AndroidX 并添加了必要的依赖:

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
    }
    ...
}

dependencies {
    ...
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
    implementation 'com.google.android.material:material:1.4.0'
    ...
}

iOS

ios/Podfile 文件中,确保你已经启用了 use_frameworks!

use_frameworks!

然后运行 pod install 来安装依赖。

3. 初始化支付插件

在你的 Flutter 应用中,你需要初始化 mdpay 插件。通常你可以在 main.dart 文件中进行初始化:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  void initState() {
    super.initState();
    MDPay.init();  // 初始化支付插件
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('MDPay Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            _startPayment();
          },
          child: Text('Start Payment'),
        ),
      ),
    );
  }

  void _startPayment() async {
    // 配置支付参数
    var paymentParams = {
      'orderId': '123456',
      'amount': '100.00',
      'paymentMethod': 'alipay',  // 支付方式:alipay, wechatpay 等
    };

    try {
      var result = await MDPay.startPayment(paymentParams);
      if (result['status'] == 'success') {
        // 支付成功
        print('Payment Success: ${result['message']}');
      } else {
        // 支付失败
        print('Payment Failed: ${result['message']}');
      }
    } catch (e) {
      print('Payment Error: $e');
    }
  }
}
回到顶部