Flutter支付结账插件checkout_plugin的使用

Flutter支付结账插件checkout_plugin的使用

本文档将向您展示如何在Flutter应用中使用checkout_plugin插件来集成支付网关以接受付款。

开始使用

该项目是一个用于Flutter的插件包,包含针对Android和/或iOS平台的特定实现代码。以下是开始使用的步骤:

对于Flutter开发的帮助,您可以访问官方文档,其中提供了教程、示例、移动开发指南和完整的API参考。

完整示例

以下是一个简单的示例,展示了如何在Flutter应用中使用checkout_plugin插件进行支付。

示例代码

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

import 'package:flutter/services.dart';
import 'package:checkout_plugin/checkout_plugin.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';
  late CheckoutPlugin _obj;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('支付插件示例应用'),
        ),
        body: Center(
            child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
              RaisedButton(onPressed: openCheckout, child: Text('支付'))
            ])),
      ),
    );
  }

  [@override](/user/override)
  void initState() {
    super.initState();
    _obj = CheckoutPlugin();
  }

  void openCheckout() async {
    var options = {
      'secureKey': '您的安全密钥',
      'requestParameters': {
        'memberId': '1234567',
        'paymentMode': 'CC',
        'terminalId': '',
        'merchantTransactionId': '唯一订单ID',
        'amount': '1.00',
        'currency': 'USD',
        'toType': 'docspartner',
        'paymentBrand': 'VISA',
        'merchantRedirectUrl': 'https://www.merchantredirecturl.com',
        'tmplAmount': '1.00',
        'tmplCurrency': 'USD',
        'orderDescription': '测试交易',
        'country': 'UK',
        'state': 'NA',
        'street': '19 Scrimshire Lane',
        'city': 'Aston',
        'email': 'abc@domain.com',
        'postCode': 'CH5 3LJ',
        'telnocc': '+44',
        'phone': '07730432996',
        'hostUrl': 'https://www.hostURL.com/',
        'device': 'ios' // 根据设备类型选择ios或android
      }
    };

    try {
      _obj.clear();
      var event_success = CheckoutPlugin.EVENT_SUCCESS;
      var event_failed = CheckoutPlugin.EVENT_FAILED;

      _obj.on(event_success, _handlePaymentSuccess);
      _obj.on(event_failed, _handlePaymentFail);
      _obj.payment(options);
    } catch (e) {
      debugPrint('错误: $e');
    }
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
    _obj.clear();
  }

  void _handlePaymentSuccess(PaymentSuccessResponse response) {
    print('支付成功 主程序' + response.response.toString());
    _obj.clear();
  }

  void _handlePaymentFail(PaymentFailureResponse response) {
    print('支付失败 主程序' + response.response.toString());
    _obj.clear();
  }
}

代码解释

  • 导入必要的库:

    import 'package:flutter/material.dart';
    import 'dart:async';
    
    import 'package:flutter/services.dart';
    import 'package:checkout_plugin/checkout_plugin.dart';
    
  • 初始化应用:

    void main() {
      runApp(MyApp());
    }
    
  • 创建主应用状态类:

    class MyApp extends StatefulWidget {
      [@override](/user/override)
      _MyAppState createState() => _MyAppState();
    }
    
  • 定义状态类并初始化插件对象:

    class _MyAppState extends State<MyApp> {
      String _platformVersion = '未知';
      late CheckoutPlugin _obj;
    
      [@override](/user/override)
      void initState() {
        super.initState();
        _obj = CheckoutPlugin();
      }
    
  • 构建UI:

    [@override](/user/override)
    Widget build(BuildContext context) {
      return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: const Text('支付插件示例应用'),
          ),
          body: Center(
              child: Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                RaisedButton(onPressed: openCheckout, child: Text('支付'))
              ])),
        ),
      );
    }
    
  • 打开支付界面:

    void openCheckout() async {
      var options = {
        'secureKey': '您的安全密钥',
        'requestParameters': {
          'memberId': '1234567',
          'paymentMode': 'CC',
          'terminalId': '',
          'merchantTransactionId': '唯一订单ID',
          'amount': '1.00',
          'currency': 'USD',
          'toType': 'docspartner',
          'paymentBrand': 'VISA',
          'merchantRedirectUrl': 'https://www.merchantredirecturl.com',
          'tmplAmount': '1.00',
          'tmplCurrency': 'USD',
          'orderDescription': '测试交易',
          'country': 'UK',
          'state': 'NA',
          'street': '19 Scrimshire Lane',
          'city': 'Aston',
          'email': 'abc@domain.com',
          'postCode': 'CH5 3LJ',
          'telnocc': '+44',
          'phone': '07730432996',
          'hostUrl': 'https://www.hostURL.com/',
          'device': 'ios' // 根据设备类型选择ios或android
        }
      };
    
  • 处理支付结果:

    void _handlePaymentSuccess(PaymentSuccessResponse response) {
      print('支付成功 主程序' + response.response.toString());
      _obj.clear();
    }
    
    void _handlePaymentFail(PaymentFailureResponse response) {
      print('支付失败 主程序' + response.response.toString());
      _obj.clear();
    }
    

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

1 回复

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


在Flutter中使用checkout_plugin插件来处理支付和结账功能,可以简化与支付网关的集成过程。以下是一个基本的使用指南,帮助你在Flutter应用中集成checkout_plugin

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  checkout_plugin: ^1.0.0  # 使用最新版本号

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

2. 初始化插件

在你的Flutter应用中初始化checkout_plugin。通常这个初始化可以在main.dart文件中进行。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  CheckoutPlugin.initialize(
    apiKey: 'your_api_key',  // 你的支付网关提供的API Key
    environment: Environment.sandbox,  // 使用沙盒环境进行测试
  );
  runApp(MyApp());
}

3. 创建支付页面

接下来,创建一个支付页面,用户可以在该页面选择支付方式并进行支付。

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

class PaymentPage extends StatefulWidget {
  @override
  _PaymentPageState createState() => _PaymentPageState();
}

class _PaymentPageState extends State<PaymentPage> {
  final _amountController = TextEditingController();

  Future<void> _processPayment() async {
    try {
      final paymentResponse = await CheckoutPlugin.processPayment(
        amount: double.parse(_amountController.text),
        currency: 'USD',  // 设置货币
        description: 'Payment for order #123',  // 支付描述
      );

      if (paymentResponse.status == PaymentStatus.success) {
        // 支付成功
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Payment successful!')),
        );
      } else {
        // 支付失败
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Payment failed: ${paymentResponse.message}')),
        );
      }
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error processing payment: $e')),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Payment')),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _amountController,
              decoration: InputDecoration(labelText: 'Amount'),
              keyboardType: TextInputType.number,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _processPayment,
              child: Text('Pay Now'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 处理支付结果

CheckoutPlugin.processPayment方法返回一个PaymentResponse对象,你可以根据PaymentResponse.status来判断支付是否成功,并相应地更新UI。

5. 配置支付网关

确保你已经正确配置了支付网关的API Key和其他必要参数。根据你的支付网关(如Stripe、PayPal等),可能需要额外的配置步骤。

6. 测试支付流程

在开发环境中,使用沙盒模式进行测试,以避免产生真实的交易。确保所有的支付流程都能正常工作。

7. 部署到生产环境

当你准备好将应用部署到生产环境时,将Environment.sandbox更改为Environment.production,并使用真实的API Key。

CheckoutPlugin.initialize(
  apiKey: 'your_production_api_key',
  environment: Environment.production,
);
回到顶部