Flutter支付集成插件phonepe_pg_web的使用

Flutter支付集成插件phonepe_pg_web的使用

该插件为PhonePe PG SDK提供了Flutter包装器,允许您通过您的Flutter Web应用轻松接受付款。

使用方法

要使用该插件,请首先在您的pubspec.yaml文件中添加以下依赖:

dependencies:
  phonepe_pg: ^1.0.0

然后导入包:

import 'package:phonepe_pg/phonepe_pg.dart';

初始化交易

调用initTransaction()方法并传入以下参数来初始化交易:

  • merchantTransactionId: 可选的交易标识符。
  • customerMobile: 客户的手机号码。
  • amount: 需要支付的金额(以派士为单位,100派士等于1印度卢比)。
  • redirectType: 重定向类型。

redirectType 参数可以设置为 RedirectType.REDIRECTRedirectType.POST。如果指定 RedirectType.REDIRECT,用户将被重定向到PhonePe应用以完成支付。如果指定 RedirectType.POST,支付将在您的Flutter应用内完成。

initTransaction() 方法返回一个 PaymentResponse 对象,其中包含交易状态和重定向URL(如果指定了 RedirectType.REDIRECT)。

示例

以下示例展示了如何使用PhonePe PG SDK初始化交易:

import 'package:phonepe_pg/phonepe_pg.dart';

Future<PaymentResponse> initTransaction() async {
  PaymentResponse paymentResponse = await PhonePePg.initTransaction({
    'customerMobile': '+919876543210', // 客户手机号
    'amount': 100, // 金额,100派士等于1印度卢比
    'redirectType': RedirectType.REDIRECT, // 重定向类型
  });

  return paymentResponse;
}

启动交易

要启动交易,请使用 initTransaction() 方法返回的重定向URL调用 launchUrl() 方法。

调试模式

在调试模式下,插件将使用PhonePe沙盒环境。要在初始化 PhonePePg 对象时启用调试模式,请将 debug 属性设置为 true

PhonePePg phonePePg = PhonePePg(
  merchantId: 'YOUR_MERCHANT_ID', // 商户ID
  merchantUserId: 'YOUR_MERCHANT_USER_ID', // 商户用户ID
  salt: 'YOUR_SALT', // 盐值
  saltIndex: 'YOUR_SALT_INDEX', // 盐值索引
  redirectUrl: 'YOUR_REDIRECT_URL', // 重定向URL
  callbackUrl: 'YOUR_CALLBACK_URL', // 回调URL
  debug: true, // 调试模式
);

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

1 回复

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


phonepe_pg_web 是一个用于在 Flutter 应用中集成 PhonePe 支付网关的插件。它允许开发者通过 WebView 或类似的方式将 PhonePe 的支付页面嵌入到应用中,从而实现支付功能。

以下是如何在 Flutter 项目中使用 phonepe_pg_web 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 phonepe_pg_web 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  phonepe_pg_web: ^1.0.0  # 请使用最新版本

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

2. 导入插件

在你的 Dart 文件中导入 phonepe_pg_web 插件。

import 'package:phonepe_pg_web/phonepe_pg_web.dart';

3. 配置支付参数

在使用 PhonePe 支付之前,你需要配置支付参数,例如商户 ID、订单 ID、金额等。

final paymentParams = {
  'merchantId': 'YOUR_MERCHANT_ID',
  'transactionId': 'YOUR_TRANSACTION_ID',
  'amount': '100', // 金额,单位为分
  'callbackUrl': 'YOUR_CALLBACK_URL',
  'mobileNumber': 'YOUR_CUSTOMER_MOBILE_NUMBER',
  'message': 'Payment for order #123',
};

4. 启动支付

使用 PhonePePgWeb.launchPayment 方法启动支付流程。你可以传递一个 BuildContext 和支付参数。

void initiatePayment(BuildContext context) async {
  try {
    final result = await PhonePePgWeb.launchPayment(
      context,
      paymentParams,
    );

    // 处理支付结果
    if (result['status'] == 'SUCCESS') {
      // 支付成功
      print('Payment Successful: ${result['transactionId']}');
    } else {
      // 支付失败
      print('Payment Failed: ${result['errorMessage']}');
    }
  } catch (e) {
    // 捕获异常
    print('Error: $e');
  }
}

5. 处理支付结果

launchPayment 方法的回调中,你可以处理支付结果。result 对象包含了支付的状态和相关信息。

6. 注意事项

  • 回调 URL: 确保你提供了正确的回调 URL,以便 PhonePe 在支付完成后能够通知你的服务器。
  • 测试环境: 在开发阶段,你可以使用 PhonePe 提供的测试环境和测试商户 ID。
  • 安全性: 不要在客户端硬编码敏感信息,如 API 密钥或商户 ID。建议通过后端生成支付参数。

7. 示例代码

以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('PhonePe Payment Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () => initiatePayment(context),
            child: Text('Pay with PhonePe'),
          ),
        ),
      ),
    );
  }

  void initiatePayment(BuildContext context) async {
    final paymentParams = {
      'merchantId': 'YOUR_MERCHANT_ID',
      'transactionId': 'YOUR_TRANSACTION_ID',
      'amount': '100', // 金额,单位为分
      'callbackUrl': 'YOUR_CALLBACK_URL',
      'mobileNumber': 'YOUR_CUSTOMER_MOBILE_NUMBER',
      'message': 'Payment for order #123',
    };

    try {
      final result = await PhonePePgWeb.launchPayment(
        context,
        paymentParams,
      );

      if (result['status'] == 'SUCCESS') {
        // 支付成功
        print('Payment Successful: ${result['transactionId']}');
      } else {
        // 支付失败
        print('Payment Failed: ${result['errorMessage']}');
      }
    } catch (e) {
      print('Error: $e');
    }
  }
}
回到顶部