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

1 回复

更多关于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'),
        ),
      ),
    );
  }
}
回到顶部