Flutter支付集成插件flutter_paymob的使用
Flutter支付集成插件flutter_paymob的使用
Flutter Paymob
Flutter Paymob 是一个允许 Flutter 应用程序通过 Paymob 服务接受在线银行卡和电子钱包支付的库。
Inspired by Ahmed Abogameel!
🚀 安装
在您的应用的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_paymob: latest_version
⭐ 初始化
为了初始化 FlutterPaymob 实例,您可以使用 initialize
方法。以下是如何初始化它的示例代码:
void main() {
WidgetsFlutterBinding.ensureInitialized();
FlutterPaymob.instance.initialize(
apiKey: "auth key", // 从仪表板选择设置 -> 账户信息 -> API Key
integrationID: 123456, // 从仪表板选择开发者 -> 支付集成 -> 在线卡 ID
walletIntegrationId: 123456, // 从仪表板选择开发者 -> 支付集成 -> 在线钱包
iFrameID: 12346, // 从 Paymob 选择开发者 -> iframes
);
runApp(const MyApp());
}
📌 注意:您也可以创建自己的实例:
final FlutterPaymob flutterPaymob = FlutterPaymob(); flutterPaymob.initialize( apiKey: "auth key", integrationID: 123456, walletIntegrationId: 123456, iFrameID: 12346, );
💡 使用
初始化后,您可以使用 FlutterPaymob 实例进行支付尝试,包括银行卡支付和钱包支付。
💳 卡支付
要使用 FlutterPaymob 实例发起卡支付,可以使用 payWithCard
方法。以下是具体用法:
ElevatedButton(
onPressed: () {
FlutterPaymob.instance.payWithCard(
context: context,
currency: "EGP",
amount: 100,
onPayment: (response) {
if (response.success == true) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(response.message ?? "Success")),
);
}
},
);
},
child: const Text("Pay with card"),
),
📲 钱包支付
要使用 FlutterPaymob 实例发起钱包支付,可以使用 payWithWallet
方法。以下是具体用法:
ElevatedButton(
onPressed: () {
FlutterPaymob.instance.payWithWallet(
context: context,
currency: "EGP",
amount: 100,
number: "01010101010",
onPayment: (response) {
if (response.success == true) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(response.message ?? "Success")),
);
}
},
);
},
child: const Text("Pay With Wallet"),
),
🔧 PaymobResponse
变量 | 类型 | 描述 |
---|---|---|
success | bool | 表示交易是否成功 |
transactionID | String? | 交易的 ID |
responseCode | String? | 交易的响应码 |
message | String? | 简要描述交易的消息 |
测试
您可以使用以下测试数据来执行测试交易:
MasterCard
变量 | 描述 |
---|---|
卡号 | 5123456789012346 |
到期月份 | 12 |
到期年份 | 25 |
CVV | 123 |
Wallet
手机号码 | PIN | OTP |
---|---|---|
01010101010 | 123456 | 123456 |
示例代码
以下是一个完整的示例代码,展示了如何集成 Flutter Paymob 插件并实现卡支付和钱包支付功能:
import 'package:flutter/material.dart';
import 'package:flutter_paymob/flutter_paymob.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
FlutterPaymob.instance.initialize(
apiKey: "auth key",
integrationID: 123456,
walletIntegrationId: 123456,
iFrameID: 123456,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Paymob'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () {
FlutterPaymob.instance.payWithCard(
context: context,
currency: "EGP",
amount: 100,
onPayment: (response) {
if (response.success == true) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(response.message ?? "Success")),
);
}
},
);
},
child: const Text("Pay with card"),
),
ElevatedButton(
onPressed: () {
FlutterPaymob.instance.payWithWallet(
context: context,
currency: "EGP",
amount: 100,
number: "01010101010",
onPayment: (response) {
if (response.success == true) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(response.message ?? "Success")),
);
}
},
);
},
child: const Text("Pay With Wallet"),
),
],
),
),
);
}
}
希望以上内容能帮助您成功集成 Flutter Paymob 插件!如果有任何问题或需要进一步的帮助,请随时联系我。
更多关于Flutter支付集成插件flutter_paymob的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件flutter_paymob的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成并使用flutter_paymob
插件的一个基本示例。这个插件允许你在Flutter应用中集成Paymob支付服务。
首先,确保你的Flutter开发环境已经配置好,并且你有一个有效的Paymob账户和API密钥。
1. 添加依赖
在你的pubspec.yaml
文件中添加flutter_paymob
依赖:
dependencies:
flutter:
sdk: flutter
flutter_paymob: ^最新版本号 # 替换为实际最新版本号
然后运行flutter pub get
来获取依赖。
2. 配置Android
在android/app/src/main/AndroidManifest.xml
中添加必要的权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
3. 配置iOS(如果需要)
如果你也在iOS上开发,确保在Info.plist
中配置了必要的权限和URL Scheme(根据Paymob的要求)。
4. 初始化Paymob并处理支付
在你的Flutter应用中,你可以这样初始化Paymob并处理支付:
import 'package:flutter/material.dart';
import 'package:flutter_paymob/flutter_paymob.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Paymob Integration Example'),
),
body: Center(
child: PaymobButton(),
),
),
);
}
}
class PaymobButton extends StatefulWidget {
@override
_PaymobButtonState createState() => _PaymobButtonState();
}
class _PaymobButtonState extends State<PaymobButton> {
final Paymob _paymob = Paymob();
void _startPayment() async {
try {
// 替换为你的实际API密钥和支付信息
String apiKey = "your_api_key_here";
String publicKey = "your_public_key_here";
String privateKey = "your_private_key_here";
String paymentMethod = "CARD"; // 或其他支付方式,如 "CASH", "BANK_TRANSFER" 等
double amount = 100.0; // 支付金额
String currency = "EGP"; // 货币类型
String description = "Payment Description"; // 支付描述
String reference = "order_reference_${DateTime.now().toIso8601String()}"; // 订单参考号
// 初始化Paymob配置
await _paymob.initialize(
apiKey: apiKey,
publicKey: publicKey,
privateKey: privateKey,
);
// 开始支付
PaymobResult result = await _paymob.startPayment(
paymentMethod: paymentMethod,
amount: amount,
currency: currency,
description: description,
reference: reference,
);
// 处理支付结果
if (result.success) {
print("Payment successful: ${result.response}");
} else {
print("Payment failed: ${result.error}");
}
} catch (e) {
print("Error initializing or starting payment: $e");
}
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: _startPayment,
child: Text('Start Payment'),
);
}
}
5. 处理支付回调(可选)
根据Paymob的文档,你可能需要处理支付完成后的回调。这通常涉及到在你的服务器端设置Webhook,并在Flutter应用中处理返回的结果。这部分代码将取决于你的具体实现和需求。
注意事项
- 确保你使用的是最新的
flutter_paymob
插件版本。 - 替换代码中的
your_api_key_here
,your_public_key_here
,your_private_key_here
等占位符为你的实际Paymob密钥。 - 根据Paymob的API文档,确保你传递的参数是正确的,并且符合Paymob的要求。
这样,你就可以在Flutter应用中集成Paymob支付服务了。