Flutter支付功能插件open_payment的使用
Flutter支付功能插件open_payment的使用
Summary
此Flutter插件可让您无缝地将OPEN Payment Gateway集成到您的Flutter应用程序中,并开始收取付款。
要了解更多关于我们的SDK以及如何在项目中链接它们的信息,请参阅文档。
Pre-Requisites
Payment Token
支付令牌表示一个订单或购买。在应用中打开支付页面的第一步是创建支付令牌。 支付令牌可以通过调用创建支付令牌API来生成。此API应始终从您的服务器调用。您将收到支付令牌作为响应。
Access Token
访问密钥是从您的OPEN仪表板生成的唯一密钥。
Android
在android/app/build.gradle文件中更改minSdkVersion:
minSdkVersion 26
iOS
最低支持的iOS版本为14.0。
Get Started
Installation
在pubspec.yaml中添加依赖项:
dependencies:
  open_payment: ^3.0.0
Import
import 'package:open_payment/open_payment.dart';
Usage
调用支付功能
在按钮点击时调用支付功能:
floatingActionButton: FloatingActionButton(
  child: const Icon(Icons.add),
  onPressed: onPaymentClick,
)
onPaymentClick函数
Future<void> onPaymentClick() async {
  OpenPaymentPayload openPaymentPayload = OpenPaymentPayload(
    accessToken: "your-access-token",
    paymentToken: "payment-token",
    environment: PaymentEnvironment.live, // 或 PaymentEnvironment.sandbox
    logoUrl: "your-logo-url",
    mainColor: "#83025c",
    errorColor: "#ff0000"
  );
  await OpenPayment.initiatePayment(
    openPaymentPayload: openPaymentPayload,
    onTransactionComplete: (TransactionDetails transactionDetails) {
      // 处理交易结果
    },
    onError: (String error) {
      // 处理集成错误
    }
  );
}
完整示例
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:open_payment/open_payment.dart';
void main() {
  runApp(const MyApp());
}
class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  String accessToken = "c59bc560-c7ac-11eb-8009-bb514bcfec2b";
  String paymentToken = "pt_35672B414C88e2B";
  PaymentEnvironment environment = PaymentEnvironment.live;
  String? result;
  Future<void> onPaymentClick() async {
    OpenPaymentPayload openPaymentPayload = OpenPaymentPayload(
      accessToken: accessToken,
      paymentToken: paymentToken,
      environment: environment,
      // logoUrl: "your-logo-url",
      mainColor: "#83025c",
      errorColor: "#ff0000"
    );
    await OpenPayment.initiatePayment(
      openPaymentPayload: openPaymentPayload,
      onTransactionComplete: (TransactionDetails transactionDetails) {
        setState(() {
          result = transactionDetails.status;
        });
      },
      onError: (String error) {
        setState(() {
          result = error;
        });
      }
    );
  }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Open Payment Demo'),
        ),
        body: Center(
          child: Text(result ?? 'No result yet'),
        ),
        floatingActionButton: FloatingActionButton(
          child: const Icon(Icons.add),
          onPressed: onPaymentClick,
        ),
      ),
    );
  }
}
Initialize OpenPaymentPayload
您需要创建一个包含以下参数的负载:
| 参数 | 描述 | 
|---|---|
accessToken (Mandatory) | 
访问密钥是从您的OPEN仪表板生成的唯一密钥。如果为空字符串会抛出异常。 | 
paymentToken (Mandatory) | 
使用创建支付令牌API生成的令牌。如果为空字符串会抛出异常。 | 
environment (Mandatory) | 
可以传递以下枚举值:PaymentEnvironment.live 和 PaymentEnvironment.sandbox。 | 
logoUrl | 
设置徽标的图像URL。 | 
mainColor | 
图层的主要颜色。例如:#f8c5c5。 | 
errorColor | 
错误颜色(图标/错误线/错误消息)。例如:#83025c。 | 
onTransactionComplete 实现
每当交易完成时都会调用此方法。TransactionDetails.status 可能是 captured、failed、pending 和 cancelled。
注意:如果调用了onTransactionComplete,并不意味着支付成功。它仅表示交易已完成。
onTransactionComplete: (TransactionDetails transactionDetails) {
  // 处理交易结果
}
onError 实现
每当发生集成错误时都会调用此方法。
onError: (String error) {
  // 处理集成错误
}
希望这些信息对您有所帮助!如果有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter支付功能插件open_payment的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付功能插件open_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter应用中使用open_payment插件来实现支付功能的示例代码。open_payment插件允许你调用原生支付接口,比如支付宝、微信支付等。请注意,实际使用时你需要确保已正确配置相关支付平台的SDK和参数。
首先,确保你已经在pubspec.yaml文件中添加了open_payment依赖:
dependencies:
  flutter:
    sdk: flutter
  open_payment: ^最新版本号  # 请替换为实际最新版本号
然后,运行flutter pub get来获取依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用open_payment插件:
- 初始化插件并配置支付参数
 
在你的主Dart文件中(通常是main.dart),导入open_payment包并初始化:
import 'package:flutter/material.dart';
import 'package:open_payment/open_payment.dart';
void main() {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Open Payment Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PaymentScreen(),
    );
  }
}
class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
  final OpenPayment _openPayment = OpenPayment();
  Future<void> _initPayment() async {
    // 配置支付参数,这里以支付宝为例
    Map<String, dynamic> params = {
      'app_id': '你的支付宝APP ID',
      'method': 'alipay.trade.app.pay',
      'charset': 'UTF-8',
      'sign_type': 'RSA2',
      'timestamp': DateTime.now().millisecondsSinceEpoch.toString(),
      'version': '1.0',
      'biz_content': jsonEncode({
        'out_trade_no': '订单号',
        'product_code': 'QUICK_MSECURITY_PAY',
        'total_amount': '0.01', // 支付金额
        'subject': '测试订单',
      }),
      // 注意:实际使用中,sign字段需要根据你的私钥生成签名
      'sign': '签名', 
    };
    try {
      bool result = await _openPayment.startAlipay(params);
      if (result) {
        // 支付成功处理
        print('支付成功');
      } else {
        // 支付失败或取消处理
        print('支付失败或取消');
      }
    } catch (e) {
      print('支付发生错误: $e');
    }
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('支付功能演示'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _initPayment,
          child: Text('发起支付'),
        ),
      ),
    );
  }
}
- 处理支付回调
 
对于支付回调,由于open_payment插件直接调用了原生支付接口,支付结果通常是通过原生应用的机制回调给你的应用。你需要根据具体的支付平台文档在原生代码(iOS的AppDelegate或Android的Activity)中处理支付回调,并将结果传递回Flutter层。
由于这部分涉及到原生代码,且不同支付平台的回调处理机制不同,这里不展开详细说明。你可以参考open_payment插件的官方文档或相关支付平台的开发者文档来实现。
- 注意事项
 
- 确保你的应用已经正确配置了支付平台所需的权限和SDK。
 - 在生产环境中,务必保护好你的私钥和敏感信息。
 - 测试支付功能时,建议使用沙箱环境或测试账号,避免产生实际费用。
 
以上代码仅作为示例,实际使用时需要根据你的具体需求进行调整。希望这能帮助你实现Flutter应用中的支付功能。
        
      
            
            
            
