Flutter支付插件idpay的使用
Flutter支付插件idpay的使用
通过使用此插件,您将能够轻松地在IDPAY支付门户中注册交易,并因此以字符串的形式收到您的支付网关链接。
如何使用?
创建一个交易
String peymantLink = await IdpayPayment().payTheMoney(
order_id,
amount,
phone,
isSandBox,
apiKey,
name,
mail,
desc,
callback,
);
必需参数
参数 | 类型 | 描述 |
---|---|---|
order_id |
string | 必需。订单的ID |
参数 | 类型 | 描述 |
---|---|---|
amount |
int | 必需。订单价格(土曼) |
可选参数
参数 | 类型 | 描述 |
---|---|---|
phone |
int | 可选。用户的电话号码 |
参数 | 类型 | 描述 |
---|---|---|
isSandBox |
int | 必需。测试模式设为1,产品模式设为0 |
参数 | 类型 | 描述 |
---|---|---|
apiKey |
string | 必需。请输入自己的API密钥,在测试模式下使用此密钥:6a7f99eb-7c20-4412-a972-6dfb7cd253a4 |
参数 | 类型 | 描述 |
---|---|---|
name |
string | 可选。用户的姓名 |
参数 | 类型 | 描述 |
---|---|---|
mail |
string | 可选。用户的电子邮件 |
参数 | 类型 | 描述 |
---|---|---|
desc |
string | 可选。支付描述 |
参数 | 类型 | 描述 |
---|---|---|
callback |
string | 可选。用户将在交易状态后返回的URL |
完整示例
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() {
return _MyAppState();
}
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: '创建数据示例',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SafeArea(
child: Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () async {
String myLink;
final idpay = IdpayPayment();
myLink = await idpay.payTheMoney(
101,
10000,
09123456789,
1,
"6a7f99eb-7c20-4412-a972-6dfb7cd253a4",
"طاها اهوازی",
"tahax.dev@gmail.com",
"Pay for supporting",
"https://test.com",
);
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => PaymentPage(peymantUrl: myLink),
),
);
print("这是我的链接变量: $myLink");
},
child: Text("支付"),
),
),
),
),
);
}
}
class PaymentPage extends StatelessWidget {
final String peymantUrl;
const PaymentPage({Key? key, required this.peymantUrl}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: WebView(
javascriptMode: JavascriptMode.unrestricted,
initialUrl: peymantUrl,
),
),
);
}
}
更多关于Flutter支付插件idpay的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付插件idpay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
idpay
是一个用于集成 IDPay 支付网关的 Flutter 插件。IDPay 是一个伊朗的在线支付网关,允许用户通过多种方式进行支付,包括银行卡、电子钱包等。
以下是如何在 Flutter 项目中使用 idpay
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 idpay
插件的依赖:
dependencies:
flutter:
sdk: flutter
idpay: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 idpay
插件:
import 'package:idpay/idpay.dart';
3. 初始化 IDPay
在使用 IDPay 进行支付之前,你需要初始化插件。通常你需要在应用的某个地方(例如 main.dart
或支付页面的 initState
方法中)进行初始化。
void initState() {
super.initState();
IdPay.initialize(
apiKey: 'YOUR_API_KEY', // 你的 IDPay API Key
sandbox: true, // 是否使用沙盒环境,测试时设置为 true,生产环境设置为 false
);
}
4. 发起支付请求
你可以使用 IdPay.startPayment
方法来发起支付请求。这个方法需要传入 IdPayRequest
对象,该对象包含支付所需的信息。
Future<void> startPayment() async {
final request = IdPayRequest(
orderId: 'ORDER_ID', // 你的订单 ID
amount: 10000, // 支付金额(以 IRR 为单位)
name: 'John Doe', // 用户姓名
phone: '09123456789', // 用户手机号
mail: 'john.doe@example.com', // 用户邮箱
desc: 'Payment for order #123', // 订单描述
callback: 'https://your-callback-url.com', // 回调 URL
);
try {
final response = await IdPay.startPayment(request);
if (response.status == 'success') {
// 支付成功
print('Payment successful: ${response.trackId}');
} else {
// 支付失败
print('Payment failed: ${response.message}');
}
} catch (e) {
// 处理异常
print('Error: $e');
}
}
5. 处理回调
支付完成后,IDPay 会将用户重定向到你指定的回调 URL。你需要在服务器端处理回调并验证支付结果。
6. 检查支付状态
你可以使用 IdPay.getPaymentStatus
方法来检查支付状态:
Future<void> checkPaymentStatus(String trackId) async {
try {
final status = await IdPay.getPaymentStatus(trackId);
if (status == 'paid') {
// 支付成功
print('Payment is successful');
} else {
// 支付未完成或失败
print('Payment status: $status');
}
} catch (e) {
// 处理异常
print('Error: $e');
}
}
7. 处理错误
在使用 idpay
插件时,可能会遇到各种错误。你需要在代码中妥善处理这些错误,例如网络错误、支付失败等。
8. 测试与上线
在开发过程中,确保使用沙盒环境进行测试。在准备上线时,将 sandbox
参数设置为 false
,并确保使用正确的 API Key 和回调 URL。
示例代码
以下是一个简单的完整示例:
import 'package:flutter/material.dart';
import 'package:idpay/idpay.dart';
class PaymentPage extends StatefulWidget {
[@override](/user/override)
_PaymentPageState createState() => _PaymentPageState();
}
class _PaymentPageState extends State<PaymentPage> {
[@override](/user/override)
void initState() {
super.initState();
IdPay.initialize(
apiKey: 'YOUR_API_KEY',
sandbox: true,
);
}
Future<void> startPayment() async {
final request = IdPayRequest(
orderId: 'ORDER_ID',
amount: 10000,
name: 'John Doe',
phone: '09123456789',
mail: 'john.doe@example.com',
desc: 'Payment for order #123',
callback: 'https://your-callback-url.com',
);
try {
final response = await IdPay.startPayment(request);
if (response.status == 'success') {
print('Payment successful: ${response.trackId}');
} else {
print('Payment failed: ${response.message}');
}
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('IDPay Payment'),
),
body: Center(
child: ElevatedButton(
onPressed: startPayment,
child: Text('Pay with IDPay'),
),
),
);
}
}