Flutter支付集成插件bundle_rave_pay的使用

Flutter支付集成插件bundle_rave_pay的使用

开始使用

此项目是一个用于Flutter的插件包,它包含针对Android和/或iOS平台的特定实现代码。

获取开始

对于Flutter的新手来说,可以查看我们的在线文档,其中提供了教程、示例、移动开发指南以及完整的API参考。

示例代码

以下是一个完整的示例,展示了如何在Flutter应用中使用bundle_rave_pay插件进行支付集成:

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

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

void main() => runApp(MyApp());

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

class _MyAppState extends State<MyApp> {
  var result;

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化插件状态
    initPlatformState();
  }

  // 生成随机字符串
  String _randomString(int length) {
    var rand = new Random();
    var codeUnits = new List.generate(
        length,
            (index){
          return rand.nextInt(33)+89;
        }
    );

    return new String.fromCharCodes(codeUnits);
  }

  // 初始化插件状态
  Future<void> initPlatformState() async {
    try {
      // 构建卡片信息
      var cardBody = {
        "amount": "250",
        "cvv": "564",
        "cardExpiry": "09/22",
        "cardNumber": "5531886652142950",
        "saveCard": "true",
        "country": "NG",
        "currencyCode": "NGN",
        "email": "hashilekky@gmail.com",
        "firstName": "Oluwaleke",
        "lastName": "Fakorede",
        "transactionReference": _randomString(12),
        "isLive": "false",
        // 更新密钥后运行应用
        "publicKey": "FLWPUBK_TEST-85cf4d8da93192c75d63ca7978592de2-X",
        "encryptionKey": "FLWSECK_TEST24303b8618e7",
        "narration": "Bundle Wallet Technology Ltd",
        "paymentMethod": "card",
      };

      // 初始化支付
      result = await BundleRavePay.initializePayment(cardBody);

      if (result != null && result['status'] == 'success') {
        print("PAYMENT RESPONSE JSON IS SUCCESSFUL");
        print(result);
      } else {
        print("NOT JSON");
        print(result);
      }
    } on PlatformException {
      print('Failed to get platform version.');
    }

    if (!mounted) return;

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

  [@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('点击进行支付'),
            onPressed: () => initPlatformState(),
          ),
        ),
      ),
    );
  }
}

说明

  1. 导入必要的库

    import 'package:flutter/material.dart';
    import 'dart:async';
    import 'dart:math';
    import 'package:flutter/services.dart';
    import 'package:bundle_rave_pay/bundle_rave_pay.dart';
    
  2. 初始化插件状态

    [@override](/user/override)
    void initState() {
      super.initState();
      initPlatformState();
    }
    
  3. 生成随机字符串

    String _randomString(int length) {
      var rand = new Random();
      var codeUnits = new List.generate(
          length,
              (index){
            return rand.nextInt(33)+89;
          }
      );
    
      return new String.fromCharCodes(codeUnits);
    }
    
  4. 构建卡片信息

    var cardBody = {
      "amount": "250",
      "cvv": "564",
      "cardExpiry": "09/22",
      "cardNumber": "5531886652142950",
      "saveCard": "true",
      "country": "NG",
      "currencyCode": "NGN",
      "email": "hashilekky@gmail.com",
      "firstName": "Oluwaleke",
      "lastName": "Fakorede",
      "transactionReference": _randomString(12),
      "isLive": "false",
      "publicKey": "FLWPUBK_TEST-85cf4d8da93192c75d63ca7978592de2-X",
      "encryptionKey": "FLWSECK_TEST24303b8618e7",
      "narration": "Bundle Wallet Technology Ltd",
      "paymentMethod": "card",
    };
    
  5. 初始化支付

    result = await BundleRavePay.initializePayment(cardBody);
    
  6. 处理支付结果

    if (result != null && result['status'] == 'success') {
      print("PAYMENT RESPONSE JSON IS SUCCESSFUL");
      print(result);
    } else {
      print("NOT JSON");
      print(result);
    }
    

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

1 回复

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


bundle_rave_pay 是一个用于在 Flutter 应用中集成 Rave by Flutterwave 支付的插件。它允许开发者轻松地将 Rave 支付功能集成到他们的应用程序中。以下是如何使用 bundle_rave_pay 插件的步骤:

1. 添加依赖

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

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

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

2. 导入包

在你的 Dart 文件中导入 bundle_rave_pay 包:

import 'package:bundle_rave_pay/bundle_rave_pay.dart';

3. 初始化插件

在使用插件之前,你需要初始化它。通常,你可以在 main.dart 文件中进行初始化:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  RavePay.initialize(
    publicKey: 'your_public_key',  // 你的 Rave 公钥
    encryptionKey: 'your_encryption_key',  // 你的 Rave 加密密钥
    isStaging: true,  // 如果是在测试环境,设置为 true;生产环境设置为 false
  );
  runApp(MyApp());
}

4. 发起支付

在你的应用中,你可以通过调用 RavePay.checkout 方法来发起支付请求。你可以自定义支付参数,如金额、货币、客户信息等。

void _makePayment() async {
  try {
    final response = await RavePay.checkout(
      context: context,
      amount: 1000,  // 支付金额
      currency: 'NGN',  // 货币类型
      email: 'customer@example.com',  // 客户邮箱
      firstName: 'John',  // 客户名
      lastName: 'Doe',  // 客户姓
      narration: 'Payment for goods',  // 支付描述
      txRef: 'txRef12345',  // 交易参考号
    );

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

5. 处理支付结果

RavePay.checkout 方法会返回一个 RaveResponse 对象,你可以通过检查 status 属性来判断支付是否成功。

6. 自定义 UI

你可以根据需要自定义支付界面的 UI。bundle_rave_pay 提供了多种自定义选项,包括主题颜色、按钮样式等。

RavePay.checkout(
  context: context,
  amount: 1000,
  currency: 'NGN',
  email: 'customer@example.com',
  firstName: 'John',
  lastName: 'Doe',
  narration: 'Payment for goods',
  txRef: 'txRef12345',
  theme: RaveTheme(
    primaryColor: Colors.blue,
    buttonColor: Colors.green,
  ),
);

7. 处理回调

你可以通过 onSuccessonError 回调来处理支付成功或失败的情况:

RavePay.checkout(
  context: context,
  amount: 1000,
  currency: 'NGN',
  email: 'customer@example.com',
  firstName: 'John',
  lastName: 'Doe',
  narration: 'Payment for goods',
  txRef: 'txRef12345',
  onSuccess: (response) {
    // 支付成功处理
    print('Payment successful: ${response.transactionId}');
  },
  onError: (error) {
    // 支付失败处理
    print('Payment failed: $error');
  },
);
回到顶部