Flutter支付集成插件switchpay的使用

Flutter支付集成插件switchpay的使用

Switchpay 是一个通过各种支付聚合器(PA)路由支付流量的智能系统。

配置

iOS

info.plist 文件中添加以下键。步骤如下:

  1. 打开你的项目目标文件的 info.plist 文件。
  2. 添加一个名为 NSAppTransportSecurity 的字典。
  3. 在该字典中添加一个名为 NSAllowsArbitraryLoads 的布尔值,并将其设置为 YES

或者,你也可以直接在 info.plist 文件的源代码中添加:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
Android

AndroidManifest.xml 文件的 <application> 标签中添加以下行:

android:usesCleartextTraffic="true"

例如:

<application
    ....
    android:usesCleartextTraffic="true"
    ....>
</application>

使用

要使用此插件,在 pubspec.yaml 文件中添加 switchpay 作为依赖项。

import 'package:switchpay/switchpay.dart';

示例

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

Switchpay(
    context: context,
    url: 'your_context', // 替换为实际的上下文URL
    token: 'your_token', // 替换为实际的令牌
    uuid: 'your_uuid', // 替换为实际的UUID
    orderId: 'your_unique_order_id', // 替换为唯一的订单ID
    amount: 'transactional_amount', // 替换为交易金额
    name: 'customer_name', // 替换为客户名称
    emailId: 'customer_email', // 替换为客户邮箱
    mobileNumber: 'customer_mobile_number', // 替换为客户手机号
    description: 'description_for_record', // 替换为描述信息
    enabledModeOfPayment: 'instrument like upi or cc', // 替换为启用的支付方式
    onInitLoading: (isLoading) {
        // TODO: 显示加载动作时重定向。
    },
    onTransactionCompleted: (status) {
        // TODO: 事务完成后执行的动作。(已弃用)
    },
    onTransactionDone: (status) {
        // TODO: 事务完成后执行的动作。(已弃用)
    },
    onTransactionFinished: (status) {
        // TODO: 事务完成后推荐执行的动作。
    },
    onErrorOccurred: (error) {
        // TODO: 如果发生任何错误,则执行的操作。
    },
    onCancel: (error) {
        // TODO: 如果用户点击返回按钮,则执行的操作。
    }
);

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

1 回复

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


当然,以下是一个关于如何在Flutter应用中集成并使用SwitchPay支付插件的示例代码。这个示例假设你已经设置好Flutter开发环境,并且已经有一个Flutter项目。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加SwitchPay的依赖。请注意,这里使用的是假设的包名和版本,实际使用时需要替换为SwitchPay插件的实际包名和最新版本。

dependencies:
  flutter:
    sdk: flutter
  switchpay: ^x.y.z  # 替换为实际的包名和版本号

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

2. 配置Android和iOS

根据SwitchPay插件的文档,你可能需要在AndroidManifest.xmlInfo.plist中添加一些配置。具体配置请参考SwitchPay的官方文档,因为这部分内容依赖于插件的具体要求。

3. 初始化并使用SwitchPay

在你的Flutter应用中,你可以按照以下步骤初始化并使用SwitchPay进行支付。

import 'package:flutter/material.dart';
import 'package:switchpay/switchpay.dart';  // 假设包名为switchpay

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

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

  Future<void> _initAndPay() async {
    // 初始化SwitchPay
    final SwitchPay switchPay = SwitchPay();

    // 配置支付参数,这里使用的是假设的参数名,请根据实际文档调整
    final Map<String, dynamic> paymentParams = {
      'amount': '100.00',  // 支付金额
      'currency': 'USD',   // 货币类型
      'description': 'Test Payment',  // 支付描述
      // 其他必要的支付参数...
    };

    try {
      // 调用支付方法
      final SwitchPayResult result = await switchPay.startPayment(paymentParams);

      // 处理支付结果
      if (result.status == 'success') {
        showDialog(
          context: context,
          builder: (context) => AlertDialog(
            title: Text('Payment Successful'),
            content: Text('Payment ID: ${result.paymentId}'),
            actions: <Widget>[
              TextButton(
                onPressed: () => Navigator.of(context).pop(),
                child: Text('OK'),
              ),
            ],
          ),
        );
      } else {
        showDialog(
          context: context,
          builder: (context) => AlertDialog(
            title: Text('Payment Failed'),
            content: Text('Error: ${result.errorMessage}'),
            actions: <Widget>[
              TextButton(
                onPressed: () => Navigator.of(context).pop(),
                child: Text('OK'),
              ),
            ],
          ),
        );
      }
    } catch (e) {
      // 处理异常
      showDialog(
        context: context,
        builder: (context) => AlertDialog(
          title: Text('Error'),
          content: Text('An error occurred: $e'),
          actions: <Widget>[
            TextButton(
              onPressed: () => Navigator.of(context).pop(),
              child: Text('OK'),
            ),
          ],
        ),
      );
    }
  }
}

// 假设的SwitchPayResult类,实际使用时请参考官方文档
class SwitchPayResult {
  final String status;
  final String paymentId;
  final String errorMessage;

  SwitchPayResult({required this.status, required this.paymentId, required this.errorMessage});
}

注意事项

  1. 实际参数:上面的代码中支付参数是假设的,你需要根据SwitchPay的实际要求调整这些参数。
  2. 错误处理:示例代码包含了基本的错误处理,但在实际项目中你可能需要更详细的错误处理逻辑。
  3. UI调整:示例中的UI非常简单,你可能需要根据实际需求调整UI设计。
  4. 安全性:确保你的支付参数和敏感信息在传输和存储过程中是安全的。

请根据SwitchPay的官方文档和API参考来调整上述代码,以确保正确集成和使用该插件。

回到顶部