Flutter支付集成插件monnify_flutter的使用
Flutter支付集成插件monnify_flutter的使用
开始使用
这个项目专注于Monnify支付。它支持Android和iOS平台。
安装
要使用此插件进行支付,将其作为依赖项添加到你的pubspec.yaml
文件中:
dependencies:
monnify_flutter: ^x.y.z
然后在initState
方法中初始化插件:
import 'package:monnify_flutter/monnify_flutter.dart';
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final monnify = MonnifyFlutter.instance;
[@override](/user/override)
void initState() {
super.initState();
monnify.initializeMonnify(
/// 输入你的API密钥
apiKey: "Hidden.API_KEY",
/// 输入你的合同代码
contractCode: "Hidden.CONTRACT_CODE",
applicationMode: ApplicationMode.test); // 设置为测试模式
}
}
使用示例
你可以在你的Flutter应用中使用这个插件来实现支付功能。以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:monnify_flutter/common/app_enums/EnumClasses.dart';
import 'package:monnify_flutter/monnify_flutter.dart';
import 'package:monnify_flutter_example/hidden.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> {
final _monnifyPlugPlugin = MonnifyFlutter.instance;
final TextEditingController nameController = TextEditingController();
final TextEditingController emailController = TextEditingController();
final TextEditingController amountController = TextEditingController();
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// 异步初始化平台状态
Future<void> initPlatformState() async {
try {
final result = await _monnifyPlugPlugin.initializeMonnify(
apiKey: API_KEY, // 输入你的API密钥
contractCode: CONTRACT_CODE, // 输入你的合同代码
applicationMode: ApplicationMode.test, // 设置为测试模式
);
print("初始化结果: $result");
} on Exception {
print('初始化失败。');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Monnify 插件'),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: ListView(
children: [
const SizedBox(
height: 10.0,
),
customTextField(hint: "姓名:", controller: nameController),
const SizedBox(
height: 10.0,
),
customTextField(hint: "邮箱:", controller: emailController),
const SizedBox(
height: 10.0,
),
customTextField(hint: "金额:", controller: amountController),
const SizedBox(
height: 10.0,
),
TextButton(
style: TextButton.styleFrom(
backgroundColor: Theme.of(context).primaryColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10))),
onPressed: () async {
try {
final result = await _monnifyPlugPlugin.makePayment(
amount: amountController.text,
currencyCode: "NGN", // 货币代码
customerName: nameController.text,
customerPhoneNumber: '081234545657', // 客户电话号码
customerEmail: emailController.text,
paymentReference: referenceId(), // 支付引用ID
paymentDescription: "测试", // 支付描述
paymentMethod: PaymentMethod.all, // 支付方式
);
// 处理支付结果
print("支付结果: $result");
} catch (error) {
print("错误: $error");
}
},
child: const Text("支付",
style: TextStyle(color: Colors.white, fontSize: 30),)),
],
),
),
),
),
);
}
/// 随机生成的字符串
String referenceId() => DateTime.now().toString();
/// 自定义文本框
Widget customTextField({
String? hint,
TextEditingController? controller,
FocusNode? focusNode,
String? errorText,
Widget? suffixIcon,
bool readOnly = false,
TextInputType? textInputType,
ValueChanged<String>? onChanged,
Widget? label,
}) {
return TextField(
controller: controller,
focusNode: focusNode,
readOnly: readOnly,
decoration: InputDecoration(
suffixIcon: suffixIcon,
errorText: errorText,
hintText: hint,
label: label,
enabledBorder: const OutlineInputBorder(
borderSide: BorderSide(color: Colors.blue, width: 2),
borderRadius: BorderRadius.all(
Radius.circular(10),
),
),
labelStyle: const TextStyle(fontWeight: FontWeight.bold),
border: const OutlineInputBorder(
borderSide: BorderSide(color: Colors.blue, width: 10),
borderRadius: BorderRadius.all(
Radius.circular(10),
),
),
),
onChanged: onChanged,
keyboardType: textInputType,
textInputAction: TextInputAction.next,
onEditingComplete: () {},
);
}
}
更多关于Flutter支付集成插件monnify_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件monnify_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成并使用monnify_flutter
插件的示例代码。monnify_flutter
是一个用于集成Monnify支付服务的Flutter插件。请确保你已经在Flutter项目中添加了该插件的依赖,并完成了必要的配置。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加monnify_flutter
依赖:
dependencies:
flutter:
sdk: flutter
monnify_flutter: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来获取依赖。
2. 导入插件
在你需要使用Monnify支付的Dart文件中导入插件:
import 'package:monnify_flutter/monnify_flutter.dart';
3. 配置Monnify支付参数
你需要向Monnify后端发送请求以获取支付令牌(token)和其他必要信息。这通常是在你的服务器端完成的,但为演示目的,我们假设你已经有了这些信息。
4. 发起支付请求
下面是一个完整的示例代码,用于在Flutter应用中发起Monnify支付请求:
import 'package:flutter/material.dart';
import 'package:monnify_flutter/monnify_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Monnify Payment Integration'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
_startPayment();
},
child: Text('Start Payment'),
),
),
),
);
}
void _startPayment() async {
// 替换为从服务器获取的实际值
String publicKey = "你的公钥";
String paymentToken = "你的支付令牌";
String callbackUrl = "你的回调URL";
try {
MonnifyPaymentResult result = await MonnifyFlutter.startPayment(
publicKey: publicKey,
paymentToken: paymentToken,
callbackUrl: callbackUrl,
environment: MonnifyEnvironment.sandbox, // 使用沙盒环境进行测试,生产环境请使用MonnifyEnvironment.production
);
// 处理支付结果
if (result.success) {
print("Payment successful! Transaction ID: ${result.transactionId}");
// 显示支付成功界面或执行其他逻辑
} else {
print("Payment failed! Error: ${result.errorMessage}");
// 显示支付失败界面或执行其他逻辑
}
} catch (e) {
print("An error occurred: $e");
// 处理错误
}
}
}
// MonnifyPaymentResult 类定义(根据插件的实际情况可能有所不同)
class MonnifyPaymentResult {
final bool success;
final String? transactionId;
final String? errorMessage;
MonnifyPaymentResult({
required this.success,
this.transactionId,
this.errorMessage,
});
}
注意事项
- 安全性:不要在客户端代码中硬编码敏感信息,如公钥和支付令牌。这些信息应该从你的安全服务器端获取。
- 回调处理:确保你的回调URL能够正确接收和处理来自Monnify的支付结果通知。
- 错误处理:在实际应用中,你应该有更详细的错误处理和用户反馈机制。
以上代码提供了一个基本的框架,用于在Flutter应用中集成Monnify支付。根据Monnify插件的文档和API,你可能需要调整某些参数和方法调用。