Flutter支付插件aangaraa_pay_flutter的使用
Flutter支付插件aangaraa_pay_flutter的使用
Aangaraa Pay Flutter Plugin
这是一个用于在Flutter应用中轻松集成MTN Mobile Money和Orange Money支付服务的插件,适用于喀麦隆市场。
安装
在pubspec.yaml
文件中添加依赖:
dependencies:
aangaraa_pay_flutter: ^0.0.1
或者直接从GitHub安装:
dependencies:
aangaraa_pay_flutter:
git:
url: https://github.com/votre-username/aangaraa_pay_flutter.git
ref: main
运行以下命令以安装依赖:
flutter pub get
配置
在使用插件之前,需要初始化它,并提供API密钥和API基础URL。
import 'package:aangaraa_pay_flutter/aangaraa_pay_flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final AangaraaPayFlutter aangaraaPay = AangaraaPayFlutter();
[@override](/user/override)
void initState() {
super.initState();
_initializePlugin();
}
Future<void> _initializePlugin() async {
await aangaraaPay.initialize(
apiKey: 'VOTRE_CLE_API',
baseUrl: 'YOUR_API_BASE_URL',
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Aangaraa Pay Example'),
),
body: Center(
child: Text('Initialized!'),
),
);
}
}
使用
执行支付
调用initiatePayment
方法来发起支付请求。需要指定运营商(MTN或Orange)、金额、电话号码等信息。
Future<void> _makePayment(String operator) async {
try {
final result = await aangaraaPay.initiatePayment(
operator: operator, // 指定运营商
amount: '1000', // 支付金额
currency: 'XAF', // 货币类型
phoneNumber: '237600000000', // 用户电话号码
description: 'Test payment', // 支付描述
transactionId: DateTime.now().millisecondsSinceEpoch.toString(), // 唯一交易ID
returnUrl: 'YOUR_RETURN_URL', // 返回URL
notifyUrl: 'YOUR_NOTIFY_URL', // 通知URL
apiKey: 'YOUR_API_KEY', // API密钥
baseUrl: 'YOUR_API_BASE_URL', // API基础URL
);
print('Status: ${result['status']}');
print('Transaction ID: ${result['transaction_id']}');
} catch (e) {
print('Error: $e');
}
}
参数说明
参数名称 | 描述 |
---|---|
operator |
运营商 (MTN_Cameroon 或 Orange_Cameroon ) |
amount |
支付金额 |
currency |
货币类型 (XAF ) |
phoneNumber |
用户电话号码 |
description |
支付描述 |
transactionId |
唯一交易ID |
returnUrl |
支付完成后跳转的URL |
notifyUrl |
交易状态更新的通知URL |
apiKey |
API密钥 |
baseUrl |
API基础URL |
查询交易状态
可以使用checkTransactionStatus
方法查询支付状态。
Future<void> _checkTransactionStatus(String transactionId) async {
try {
final status = await aangaraaPay.checkTransactionStatus(
payToken: transactionId, // 交易ID
appKey: 'YOUR_API_KEY', // API密钥
baseUrl: 'YOUR_API_BASE_URL', // API基础URL
);
print('Status: ${status['status']}');
} catch (e) {
print('Error: $e');
}
}
完整示例
以下是完整的代码示例,包含用户输入手机号和金额,并选择运营商进行支付的功能。
import 'package:flutter/material.dart';
import 'package:aangaraa_pay_flutter/aangaraa_pay_flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final AangaraaPayFlutter aangaraaPay = AangaraaPayFlutter();
final TextEditingController _phoneController = TextEditingController();
final TextEditingController _amountController = TextEditingController();
String _paymentStatus = '';
[@override](/user/override)
void initState() {
super.initState();
_initializePlugin();
}
Future<void> _initializePlugin() async {
await aangaraaPay.initialize(
apiKey: 'VOTRE_CLE_API',
baseUrl: 'YOUR_API_BASE_URL',
);
}
Future<void> _makePayment(String operator) async {
try {
setState(() {
_paymentStatus = 'Processing $operator Payment...';
});
final result = await aangaraaPay.initiatePayment(
operator: operator,
amount: _amountController.text,
currency: 'XAF',
phoneNumber: _phoneController.text,
description: 'Test payment',
transactionId: DateTime.now().millisecondsSinceEpoch.toString(),
returnUrl: 'YOUR_RETURN_URL',
notifyUrl: 'YOUR_NOTIFY_URL',
apiKey: 'YOUR_API_KEY',
baseUrl: 'YOUR_API_BASE_URL',
);
setState(() {
_paymentStatus = '${operator} Payment Status: ${result['status']}';
});
// 查询最终状态
if (result['transaction_id'] != null) {
await Future.delayed(const Duration(seconds: 5));
final status = await aangaraaPay.checkTransactionStatus(
payToken: result['transaction_id'],
appKey: 'YOUR_API_KEY',
baseUrl: 'YOUR_API_BASE_URL',
);
setState(() {
_paymentStatus = 'Final Status: ${status['status']}';
});
}
} catch (e) {
setState(() {
_paymentStatus = 'Error: $e';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Aangaraa Pay Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: _phoneController,
decoration: InputDecoration(
labelText: 'Phone Number',
hintText: 'Enter phone number',
),
keyboardType: TextInputType.phone,
),
SizedBox(height: 16),
TextField(
controller: _amountController,
decoration: InputDecoration(
labelText: 'Amount',
hintText: 'Enter amount in XAF',
),
keyboardType: TextInputType.number,
),
SizedBox(height: 24),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: () => _makePayment('MTN'),
child: Text('Pay with MTN'),
),
ElevatedButton(
onPressed: () => _makePayment('Orange_Cameroon'),
child: Text('Pay with Orange'),
),
],
),
SizedBox(height: 24),
Text(
_paymentStatus,
style: TextStyle(fontSize: 16),
textAlign: TextAlign.center,
),
],
),
),
);
}
[@override](/user/override)
void dispose() {
_phoneController.dispose();
_amountController.dispose();
super.dispose();
}
}
更多关于Flutter支付插件aangaraa_pay_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付插件aangaraa_pay_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
aangaraa_pay_flutter
是一个用于在 Flutter 应用中集成支付功能的插件。它支持多种支付方式,如信用卡、移动支付等。以下是如何使用 aangaraa_pay_flutter
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 aangaraa_pay_flutter
插件的依赖:
dependencies:
flutter:
sdk: flutter
aangaraa_pay_flutter: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 配置支付环境
根据你使用的支付方式,你可能需要在项目中配置一些环境变量或密钥。例如,如果你使用的是 Stripe 支付,你需要在 AndroidManifest.xml
和 Info.plist
中配置 Stripe 的 API 密钥。
3. 初始化支付插件
在你的 Flutter 应用中,首先需要初始化支付插件。通常,你可以在 main.dart
文件中进行初始化:
import 'package:aangaraa_pay_flutter/aangaraa_pay_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await AangaraaPayFlutter.initialize(
publicKey: 'your_public_key', // 你的支付公钥
environment: Environment.sandbox, // 使用沙盒环境或生产环境
);
runApp(MyApp());
}
4. 创建支付页面
接下来,你可以创建一个支付页面,用户可以在该页面选择支付方式并完成支付。
import 'package:flutter/material.dart';
import 'package:aangaraa_pay_flutter/aangaraa_pay_flutter.dart';
class PaymentPage extends StatelessWidget {
final _paymentController = AangaraaPayFlutter.paymentController();
Future<void> _makePayment() async {
try {
final paymentIntent = await _paymentController.createPaymentIntent(
amount: 1000, // 支付金额(以分为单位)
currency: 'USD', // 货币类型
);
final paymentResult = await _paymentController.confirmPayment(
paymentIntentId: paymentIntent.id,
);
if (paymentResult.status == PaymentStatus.succeeded) {
// 支付成功
print('Payment succeeded!');
} else {
// 支付失败
print('Payment failed: ${paymentResult.message}');
}
} catch (e) {
print('Error: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payment'),
),
body: Center(
child: ElevatedButton(
onPressed: _makePayment,
child: Text('Pay Now'),
),
),
);
}
}
5. 处理支付结果
在 _makePayment
方法中,你可以处理支付结果。根据支付结果,你可以显示成功或失败的消息,或者导航到其他页面。
6. 运行应用
最后,运行你的 Flutter 应用,并测试支付功能。
flutter run
7. 其他注意事项
- 测试环境:在开发阶段,建议使用沙盒环境进行测试,以避免产生真实的支付交易。
- 错误处理:确保在支付过程中处理所有可能的错误,并提供友好的用户提示。
- 安全性:不要在客户端代码中硬编码敏感信息(如 API 密钥),建议通过后端服务来管理这些信息。
8. 参考文档
如果你需要更详细的信息,可以参考 aangaraa_pay_flutter
的官方文档或 GitHub 仓库。
https://pub.dev/packages/aangaraa_pay_flutter