Flutter支付集成插件redsys_with_flutter的使用

Flutter支付集成插件redsys_with_flutter的使用

Redsys with Flutter 是一个用于在 Flutter 应用程序中集成 Redsys 银行支付网关的插件包。通过此插件,您可以轻松地在 Flutter 应用中处理支付。


特性

  • 与 Redsys 支付网关无缝集成。
  • 简单的配置和设置。
  • 同时支持 iOS 和 Android 平台。
  • 提供交易成功、失败和取消的回调。
  • 详细的文档和示例。

如果您遇到任何问题或希望为该插件的开发做出贡献,请在 GitHub 仓库 上提交问题或拉取请求。


安装

要使用 Redsys with Flutter,请按照以下步骤操作:

  1. pubspec.yaml 文件中添加依赖:
dependencies:
  redsys_with_flutter: ^1.0.0
  1. 或者运行以下命令:
flutter pub add redsys_with_flutter
  1. 运行以下命令以获取包:
flutter pub get

使用方法

导入插件

在项目中导入必要的类:

import 'package:redsys_with_flutter/common/ui_direct_payment_config.dart';
import 'package:redsys_with_flutter/flutter_with_redsys.dart';
import 'package:redsys_with_flutter/common/tpvv_configuration.dart';
import 'package:redsys_with_flutter/common/tpvv_constants.dart';

配置 Redsys 设置

在应用中配置 Redsys 的参数:

RedsysWithFlutter.configure(
  merchantCode: 'YOUR_MERCHANT_CODE', // 商户代码
  terminal: 'YOUR_TERMINAL',          // 终端编号
  currency: 'YOUR_CURRENCY',          // 货币代码(例如:978 表示欧元)
  secretKey: 'YOUR_SECRET_KEY',       // 密钥
  transactionType: TransactionType.authorization, // 交易类型
  urlEnvironment: UrlEnvironment.live, // 环境(测试或生产)
);

处理支付

实现支付功能的代码如下:

final _pluginRedsysPlugin = FlutterWithRedsys();

performCardPayment(context, {String? alias, String? originalAlias}) async {
  TPVVConfiguration tpvvConfig = TPVVConfiguration();
  tpvvConfig.amount = 10.0; // 支付金额
  tpvvConfig.enableRedirection = true; // 是否重定向
  tpvvConfig.enableResultAlert = true; // 是否启用结果通知
  tpvvConfig.paymentMethods = TPVVConstants.PAYMENT_METHOD_T; // 支付方式
  tpvvConfig.license = "<dev_license_for_ios_or_android>"; // 开发者许可证
  tpvvConfig.environment = TPVVConstants.ENVIRONMENT_TEST; // 测试环境
  tpvvConfig.fuc = "<merchant_fuc>"; // 商户功能码
  tpvvConfig.terminal = "002"; // 终端编号
  tpvvConfig.merchantUrl = "<merchant_url_for_results_reporting>"; // 商户结果报告 URL
  tpvvConfig.currency = "978"; // 货币代码
  tpvvConfig.order = "978"; // 订单号
  tpvvConfig.reference = 'ahmad'; // 参考信息
  tpvvConfig.enableResultAlert = true; // 启用结果通知
  tpvvConfig.enableRedirection = true; // 启用重定向
  tpvvConfig.uiDirectPaymentConfig = UIDirectPaymentConfig(); // UI 直接支付配置
  tpvvConfig.merchantData = "<id_transaction_to_be_set>"; // 交易 ID

  log(tpvvConfig.toJson().toString()); // 打印配置信息

  // 发起支付请求
  var call = await _pluginRedsysPlugin.webPayment(tpvvConfig.toJson());
  log(call.toString()); // 打印返回值
  var resp = jsonDecode(call.toString()); // 解析返回值
  log('ressssppp$resp'); // 打印解析后的结果
}

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 中使用 redsys_with_flutter 插件进行支付:

import 'dart:async';
import 'dart:convert';
import 'dart:developer';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:redsys_with_flutter/common/ui_direct_payment_config.dart';
import 'package:redsys_with_flutter/flutter_with_redsys.dart';
import 'package:redsys_with_flutter/common/tpvv_configuration.dart';
import 'package:redsys_with_flutter/common/tpvv_constants.dart';

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

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

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _pluginRedsysPlugin = FlutterWithRedsys();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    String platformVersion;
    try {
      TPVVConfiguration tpvvConfig = TPVVConfiguration();

      tpvvConfig.amount = 10.0;
      tpvvConfig.paymentMethods = TPVVConstants.PAYMENT_METHOD_T;
      tpvvConfig.license = "<dev_license_for_ios_or_android>";
      tpvvConfig.environment = TPVVConstants.ENVIRONMENT_TEST;
      tpvvConfig.fuc = "<merchant_fuc>";
      tpvvConfig.terminal = "002";
      tpvvConfig.merchantUrl = "<merchant_url_for_results_reporting>";
      tpvvConfig.currency = "978";
      tpvvConfig.merchantData = "<id_transaction_to_be_set>";

      var call = await _pluginRedsysPlugin.webPayment(tpvvConfig.toJson());
      log("CALL $call");
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  performCardPayment(context, {String? alias, String? originalAlias}) async {
    TPVVConfiguration tpvvConfig = TPVVConfiguration();
    tpvvConfig.amount = 10.0;
    tpvvConfig.enableRedirection = true;
    tpvvConfig.enableResultAlert = true;
    tpvvConfig.paymentMethods = TPVVConstants.PAYMENT_METHOD_T;
    tpvvConfig.license = "<dev_license_for_ios_or_android>";
    tpvvConfig.environment = TPVVConstants.ENVIRONMENT_TEST;
    tpvvConfig.fuc = "<merchant_fuc>";
    tpvvConfig.terminal = "002";
    tpvvConfig.merchantUrl = "<merchant_url_for_results_reporting>";
    tpvvConfig.currency = "978";
    tpvvConfig.order = "978";
    tpvvConfig.reference = 'ahmad';
    tpvvConfig.enableResultAlert = true;
    tpvvConfig.enableRedirection = true;
    tpvvConfig.uiDirectPaymentConfig = UIDirectPaymentConfig();
    tpvvConfig.merchantData = "<id_transaction_to_be_set>";

    log(tpvvConfig.toJson().toString());
    var call = await _pluginRedsysPlugin.webPayment(tpvvConfig.toJson());
    log(call.toString());
    var resp = jsonDecode(call.toString());
    log('ressssppp$resp');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: TextButton(
            child: Text('Running on: $_platformVersion\n'),
            onPressed: () {
              performCardPayment(context);
            },
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


redsys_with_flutter 是一个用于在 Flutter 应用中集成 Redsys 支付的插件。Redsys 是西班牙常用的支付网关之一,支持信用卡、借记卡等多种支付方式。通过该插件,你可以轻松地在 Flutter 应用中实现支付功能。

1. 安装插件

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

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

然后运行 flutter pub get 来安装插件。

2. 配置 Redsys 参数

在使用插件之前,你需要从 Redsys 获取以下信息:

  • 商户代码 (Merchant Code)
  • 终端号 (Terminal)
  • 密钥 (Secret Key)

这些信息通常由 Redsys 提供,并且需要在支付请求中使用。

3. 创建支付请求

在 Flutter 项目中,你可以使用 RedsysWithFlutter 类来创建支付请求。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatelessWidget {
  final redsys = RedsysWithFlutter();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Redsys Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 配置支付参数
            final paymentParams = PaymentParams(
              merchantCode: '你的商户代码',
              terminal: '你的终端号',
              amount: '1000', // 金额(以分为单位)
              order: '123456', // 订单号
              currency: '978', // 货币代码(978 代表欧元)
              transactionType: '0', // 交易类型(0 代表授权)
              merchantURL: 'https://your-merchant-url.com', // 商户URL
              merchantName: '你的商户名称',
              titular: 'Card Holder Name', // 持卡人姓名
              productDescription: 'Product Description', // 产品描述
              secretKey: '你的密钥', // 密钥
            );

            // 发起支付请求
            final result = await redsys.startPayment(paymentParams);

            // 处理支付结果
            if (result['success'] == true) {
              print('支付成功');
            } else {
              print('支付失败: ${result['error']}');
            }
          },
          child: Text('Pay with Redsys'),
        ),
      ),
    );
  }
}
回到顶部