Flutter支付集成插件paymob_payment的使用

Flutter支付集成插件paymob_payment的使用

轻松地在您的Flutter应用中通过在线卡接受付款。

示例

🚀 安装

在您的应用的pubspec.yaml文件中的dependencies部分添加以下内容:

paymob_payment : latest_version

🔨 初始化

使用单例初始化:

PaymobPayment.instance.initialize(
  apiKey: "", // 从仪表板选择设置 -> 账户信息 -> API Key
  integrationID: 123456, // 从仪表板选择开发者 -> 支付集成 -> 在线卡ID
  iFrameID: 123456, // 从paymob选择开发者 -> iFrames
);

或者创建自己的实例:

final PaymobPayment paymobPayment = PaymobPayment();
paymobPayment.initialize(
  apiKey: "", 
  integrationID: 123456, 
  iFrameID: 123456, 
);

🔖 使用

调用pay方法进行支付:

final PaymobResponse? response = await PaymobPayment.instance.pay(
  context: context,
  currency: "EGP",
  amountInCents: "20000", // 200 EGP
  onPayment: (response) => setState(() => this.response = response), // 可选
)

📨 PaymobResponse

变量 类型 描述
success bool 指示交易是否成功
transactionID String 交易ID
responseCode String 交易响应码
message String 描述交易的简短消息

🧪 测试卡片

✅ 成功支付

变量 描述
卡号 5123456789012346
到期月 12
到期年 30
CVV 123

❎ 拒绝支付

将CVV改为111或将到期年份改为20

注意: 您可能需要联系paymob支持来激活您的测试卡

示例代码

import 'package:flutter/material.dart';
import 'package:paymob_payment/paymob_payment.dart';

void main() {
  // 测试信息,请勿在您的应用中使用
  PaymobPayment.instance.initialize(
    apiKey: "ZXlKaGJHY2lPaUpJVXpVeE1pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmpiR0Z6Y3lJNklrMWxjbU5vWVc1MElpd2libUZ0WlNJNkltbHVhWFJwWVd3aUxDSndjbTltYVd4bFgzQnJJam8yT1RBMk56VjkuX3lZTklHVGkwVXBLTmVzdjh0Q0dxc0ZlTmVkNnJobGFid2RoUXlJNFFuMlBUZ2k1Q3VyaGFxbmt2SGlrbXo1enBzaUdxYmhiU0pDU3VCTzA4bGxpcFE=",
    integrationID: 3364826,
    iFrameID: 728907,
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        appBarTheme: const AppBarTheme(
          color: Color(0xFF007aec),
        ),
        elevatedButtonTheme: ElevatedButtonThemeData(
          style: ButtonStyle(
            backgroundColor: MaterialStateProperty.all(const Color(0xFF007aec)),
          )
        ),
      ),
      debugShowCheckedModeBanner: false,
      home: const PaymentView(),
    );
  }
}

class PaymentView extends StatefulWidget {
  const PaymentView({super.key});

  [@override](/user/override)
  State<PaymentView> createState() => _PaymentViewState();
}

class _PaymentViewState extends State<PaymentView> {
  PaymobResponse? response;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Paymob'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Image.network('https://paymob.com/images/logoC.png'),
            const SizedBox(height: 24),
            if (response != null)
              Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: [
                  Text("成功 ==》 ${response?.success}"),
                  const SizedBox(height: 8),
                  Text("交易ID ==》 ${response?.transactionID}"),
                  const SizedBox(height: 8),
                  Text("消息 ==》 ${response?.message}"),
                  const SizedBox(height: 8),
                  Text("响应码 ==》 ${response?.responseCode}"),
                  const SizedBox(height: 16),
                ],
              ),
            ElevatedButton(
              child: const Text('支付200 EGP'),
              onPressed: () => PaymobPayment.instance.pay(
                context: context,
                currency: "EGP",
                amountInCents: "20000",
                onPayment: (response) => setState(() => this.response = response),
              ),
            )
          ],
        ),
      ),
    );
  }
}

更多关于Flutter支付集成插件paymob_payment的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付集成插件paymob_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中集成Paymob支付插件paymob_payment可以通过以下几个步骤来实现。以下是一个基本的代码示例,展示如何在Flutter应用中使用该插件进行支付集成。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加paymob_payment依赖:

dependencies:
  flutter:
    sdk: flutter
  paymob_payment: ^最新版本号 # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Android和iOS

在集成支付插件之前,你需要确保在Android和iOS项目中配置了必要的支付信息。这通常涉及设置API密钥、商户ID等敏感信息。具体步骤请参考Paymob官方文档。

3. 初始化Paymob支付插件

在你的Flutter应用中,初始化Paymob支付插件并配置支付参数。以下是一个示例代码:

import 'package:flutter/material.dart';
import 'package:paymob_payment/paymob_payment.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Paymob Payment Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _initiatePayment,
            child: Text('Initiate Payment'),
          ),
        ),
      ),
    );
  }

  Future<void> _initiatePayment() async {
    // 初始化Paymob支付插件
    final PaymobPayment paymobPayment = PaymobPayment();

    // 配置支付参数
    final PaymobPaymentConfig config = PaymobPaymentConfig(
      publicKey: '你的公钥', // 替换为你的Paymob公钥
      amount: 100.0, // 支付金额(单位为最小货币单位,例如对于美元,100.0代表1.00美元)
      currency: 'USD', // 货币代码
      orderId: '订单ID_${DateTime.now().millisecondsSinceEpoch}', // 订单ID,需要唯一
      returnUrl: 'https://your-return-url.com', // 支付完成后的返回URL
      notifyUrl: 'https://your-notify-url.com', // 支付通知URL
      description: '商品描述', // 商品描述
      statementDescriptor: '商品描述', // 账单描述(某些支付渠道可能需要)
    );

    try {
      // 发起支付请求
      final PaymobPaymentResponse response = await paymobPayment.startPayment(config);

      // 处理支付响应
      if (response.status == 'success') {
        // 支付成功处理逻辑
        print('支付成功: ${response.data}');
      } else if (response.status == 'pending') {
        // 支付待处理逻辑(例如3D Secure验证)
        print('支付待处理: ${response.data}');
      } else if (response.status == 'failed') {
        // 支付失败处理逻辑
        print('支付失败: ${response.errorMessage}');
      } else if (response.status == 'canceled') {
        // 支付取消处理逻辑
        print('支付取消');
      }
    } catch (e) {
      // 处理异常
      print('支付过程中发生错误: $e');
    }
  }
}

4. 处理支付结果

在上面的代码中,我们处理了支付响应的几种可能状态:successpendingfailedcanceled。你需要根据你的业务需求来处理这些状态。

注意事项

  1. 安全性:不要在客户端代码中硬编码敏感信息,如公钥、私钥等。建议使用安全的存储方式,如Flutter的keychainkeystore插件。
  2. 测试环境:在集成和测试支付功能时,建议使用Paymob的测试环境,以避免在生产环境中产生不必要的费用。
  3. 用户体验:确保支付流程的用户体验友好,包括清晰的支付指示、错误处理和支付结果反馈。

以上代码提供了一个基本的框架,用于在Flutter应用中集成Paymob支付插件。根据你的具体需求,你可能需要调整支付参数和处理逻辑。

回到顶部