Flutter支付集成插件codecamp_onepay的使用

Flutter支付集成插件codecamp_onepay的使用

codecamp_onepay 是一个用于构建和跟踪银行交易的 Flutter 包。

特性

  • 构建交易
  • 跟踪已构建的交易

开始使用

对于 shopcodemerchantID,这些将由 BCEL 银行指定。

安装

在你的 pubspec.yaml 文件中添加以下代码:

dependencies:
  codecamp_onepay: ^1.0.0

使用

你可以直接使用以下示例代码。

import 'package:codecamp_onepay/codecamp_onepay.dart';
import 'package:example/success_page.dart';
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}

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

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String transaction = '';
  String qrData = '';
  String mcid = 'mch5c2f0404102fb';
  String shopcode = '12345678';
  String subScribeKey = 'sub-c-91489692-fa26-11e9-be22-ea7c5aada356';
  String uuID = 'BCELBANK';
  int expiredTime = 3; // 必须为分钟
  String terminalID = '0000';

  @override
  void initState() {
    // 初始化状态
    super.initState();
    bcelQR();
  }

  void bcelQR() {
    setState(() {
      transaction = DateTime.now().toString();
      qrData = CodecampOnepay.initQR(mcid, transaction, terminalID, 1,
          'invoiceID-$transaction', 'Codecamp-Payment', expiredTime,
          closeWhenPaySuccess: false);
    });
    CodecampOnepay.observe(subScribeKey, uuID, mcid, shopcode, (message) {
      Navigator.push(context, MaterialPageRoute(builder: (_) {
        return SuccessPage();
      }));
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('CodeCamp OnePay'),
        ),
        body: Center(
          child: qrData.isEmpty
              ? CircularProgressIndicator()
              : Column(
            children: [
              QrImage(
                data: qrData,
                version: QrVersions.auto,
                size: 200.0,
              ),
              SizedBox(
                height: 50,
              ),
              ElevatedButton(
                  onPressed: () {
                    bcelQR();
                  },
                  child: Text('刷新二维码'))
            ],
          ),
        ));
  }
}

注意事项

  • 描述应为英文,并避免使用空格(建议使用下划线等特殊字符)以防止可能出现的错误。

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

1 回复

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


codecamp_onepay 是一个用于 Flutter 应用的支付集成插件,主要用于在应用中集成 OnePay 支付网关。通过这个插件,你可以轻松地实现在应用中处理支付请求和支付结果。

1. 安装插件

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

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

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

2. 配置 OnePay 账户

在使用插件之前,你需要确保你已经在 OnePay 平台上注册了商户账户,并获取了以下信息:

  • merchant_id: 商户ID
  • access_code: 访问码
  • hash_key: 哈希密钥

3. 初始化插件

在 Flutter 应用中,你需要在适当的位置初始化 codecamp_onepay 插件。通常可以在 main.dart 中或支付相关的页面进行初始化。

import 'package:codecamp_onepay/codecamp_onepay.dart';

void initializeOnePay() {
  CodeCampOnePay.initialize(
    merchantId: 'your_merchant_id',
    accessCode: 'your_access_code',
    hashKey: 'your_hash_key',
    environment: OnePayEnvironment.test, // 使用测试环境
  );
}

4. 发起支付请求

在用户发起支付时,你可以使用 CodeCampOnePay 来创建支付请求并处理支付结果。

void initiatePayment() async {
  try {
    final response = await CodeCampOnePay.pay(
      amount: '10000', // 金额,单位是分
      orderId: 'order_12345', // 订单ID
      orderInfo: 'Payment for product', // 订单描述
      returnUrl: 'https://yourwebsite.com/return', // 支付成功后的返回URL
    );

    if (response.status == OnePayStatus.success) {
      // 支付成功处理逻辑
      print('Payment successful: ${response.transactionId}');
    } else {
      // 支付失败处理逻辑
      print('Payment failed: ${response.message}');
    }
  } catch (e) {
    // 异常处理逻辑
    print('Error: $e');
  }
}

5. 处理支付结果

支付结果可以通过 returnUrl 返回给你的服务器或在客户端进行处理。你可以通过监听 returnUrl 来获取支付状态。

6. 测试与生产环境

在开发阶段,建议使用 OnePayEnvironment.test 进行测试。上线时,请切换到 OnePayEnvironment.production

CodeCampOnePay.initialize(
  merchantId: 'your_merchant_id',
  accessCode: 'your_access_code',
  hashKey: 'your_hash_key',
  environment: OnePayEnvironment.production, // 切换到生产环境
);
回到顶部