Flutter支付集成插件payu_ppi_flutter的使用

Flutter支付集成插件payu_ppi_flutter的使用

本文档将指导您如何在Flutter项目中集成和使用payu_ppi_flutter插件来实现支付功能。我们将通过一个简单的示例来展示整个过程。

简介

payu_ppi_flutter 是一个基于PayU的PPI SDK的Flutter插件,可用于Android和iOS平台上的支付集成。它允许开发者轻松地在他们的应用中添加PayU支付功能。

使用步骤

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  payu_ppi_flutter: ^1.0.0 # 请确保使用最新版本

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

2. 初始化插件

接下来,我们需要初始化插件并在应用启动时进行配置。请参考以下代码:

import 'package:flutter/material.dart';
import 'package:payu_ppi_flutter_example/HashService.dart';
import 'package:payu_ppi_flutter/payu_ppi_flutter.dart';
import 'package:payu_ppi_flutter/PayUConstantKeys.dart';

void main() {
  runApp(MaterialApp(home: MyApp()));
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> implements PayUPPIProtocol {
  late PayUPPIFlutter _ppi;

  [@override](/user/override)
  void initState() {
    super.initState();
    _ppi = PayUPPIFlutter(this);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('PayU PPI SDK'),
        ),
        body: Center(
          child: ElevatedButton(
            child: const Text("显示卡片"),
            onPressed: () async {
              _ppi.showCards(
                payUPPIParams: PayUParams.createPayUPPIParams(),
              );
            },
          ),
        ),
      ),
    );
  }

  showAlertDialog(BuildContext context, String title, String content) {
    Widget okButton = TextButton(
      child: const Text("确定"),
      onPressed: () {
        Navigator.pop(context);
      },
    );

    showDialog(
        context: context,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text(title),
            content: SingleChildScrollView(
              scrollDirection: Axis.vertical,
              child: Text(content),
            ),
            actions: [okButton],
          );
        });
  }

  [@override](/user/override)
  generateHash(Map response) {
    // 将响应参数传递给后端服务器
    // 后端将生成哈希并回调
    Map hashResponse = HashService.generateHash(response);
    _ppi.hashGenerated(hash: hashResponse);
  }

  [@override](/user/override)
  onCancel() {
    showAlertDialog(context, "取消", "用户取消操作");
  }

  [@override](/user/override)
  onError(Map? response) {
    showAlertDialog(context, "错误", response?.toString() ?? "未知错误");
  }
}

class PayUTestCredentials { 
  static const merchantKey = "smsplus"; // TODO: 添加商户密钥
  // 使用您的成功和失败URL
}

// 将这些值从您的应用传递到SDK,这些数据仅用于测试目的
class PayUParams {
  static Map createPayUPPIParams() {
    var payUParams = {
      PayUPPIParamKey.merchantKey: PayUTestCredentials.merchantKey,
      PayUPPIParamKey.referenceId: "payu${DateTime.now().millisecondsSinceEpoch}", // 如果有SKU详情,请设置等于总SKU金额
      PayUPPIParamKey.walletUrn: "1003097",
      PayUPPIParamKey.environment: "0",
      PayUPPIParamKey.walletIdentifier: "OLW",
      PayUPPIParamKey.mobileNumber: "9528340384"
    };

    return payUParams;
  }
}

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

1 回复

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


payu_ppi_flutter 是一个用于在 Flutter 应用中集成 PayU 支付的插件。PayU 是一家提供在线支付解决方案的公司,支持多种支付方式,包括信用卡、借记卡、网银、UPI 等。

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

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  payu_ppi_flutter: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

main.dart 或其他适当的位置初始化插件:

import 'package:payu_ppi_flutter/payu_ppi_flutter.dart';

void main() {
  PayuPpiFlutter.initialize(
    merchantKey: 'YOUR_MERCHANT_KEY',
    merchantId: 'YOUR_MERCHANT_ID',
    environment: Environment.test, // 或 Environment.production
  );
  runApp(MyApp());
}

3. 发起支付请求

在需要发起支付的地方,调用 PayuPpiFlutter.startPayment 方法:

import 'package:payu_ppi_flutter/payu_ppi_flutter.dart';

Future<void> initiatePayment() async {
  try {
    final paymentParams = PaymentParams(
      amount: '10.0',
      txnId: 'TX123456789',
      productInfo: 'Product Info',
      firstName: 'John',
      email: 'john.doe@example.com',
      phone: '9876543210',
      surl: 'https://your-success-url.com',
      furl: 'https://your-failure-url.com',
      hash: 'YOUR_HASH_STRING', // 根据 PayU 的文档生成
    );

    final paymentResult = await PayuPpiFlutter.startPayment(paymentParams);

    if (paymentResult.status == PaymentStatus.success) {
      print('Payment Success: ${paymentResult.response}');
    } else {
      print('Payment Failed: ${paymentResult.response}');
    }
  } catch (e) {
    print('Error: $e');
  }
}

4. 处理支付结果

PayuPpiFlutter.startPayment 方法返回一个 PaymentResult 对象,你可以根据 PaymentStatus 来处理支付结果。

5. 生成 Hash

PayU 要求对支付请求进行签名,以确保请求的完整性。你需要在服务器端生成 Hash 并将其传递给 Flutter 应用。Hash 的生成方式可以参考 PayU 的官方文档。

6. 配置 Android 和 iOS

确保在 AndroidManifest.xmlInfo.plist 中配置了必要的权限和 URL schemes。

Android:

AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />

iOS:

Info.plist 中添加以下内容:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>
回到顶部