Flutter支付集成插件cyberpayflutter的使用

Flutter支付集成插件cyberpayflutter的使用

引言

Cyberpay为您提供在尼日利亚快速方便地进行支付和收款的服务。

Cyberpay支付演示 Cyberpay安全支付演示 Cyberpay银行支付演示

关于SDK

Cyberpay Flutter SDK是一个易于使用的库,可以快速将Cyberpay集成到您的移动应用中。它作为现有Cyberpay网络服务的包装器,并创建了一个用于卡和银行交易的移动入口点。

SDK提供了自定义视图/布局以处理结账、PIN、OTP、安全3D等业务逻辑,并仅暴露三个回调来表示交易状态。

要求

Cyberpay Flutter SDK兼容支持iOS 11及以上的iOS应用。

开始使用

安装

  1. pubspec.yaml文件的依赖部分添加cyberpay包。以下代码将使cyberpayflutter插件的Dart API在您的应用程序中可用:

    dependencies:
      cyberpayflutter: ^1.0.4
    
  2. 在项目目录中运行以下命令以下载该包:

    flutter pub get
    

使用Cyberpay SDK

步骤1:导入Cyberpay SDK
import 'package:cyberpayflutter/cyberpayflutter.dart';
步骤2:使用我们的Drop-In UI完成集成
try {
  var result = await Cyberpayflutter.makePayment(
      integrationKey: "MERCHANT_INTEGRATION_KEY",
      amount: "PAYMENT_AMOUNT_IN_KOBO",
      customerEmail: "CUSTOMER_EMAIL",
      liveMode: false);
  if (result.isPaymentSuccessFul) {
    print("Payment is Successful, Your Payment Reference: ${result.paymentReference}");
  } else {
    print(result.errorMessage);
  }
} on PlatformException catch (e) {
  var error = "Cyberpay Error: '${e.message}'.";
  print(error);
}
当交易已在服务器端设置时的Cyberpay集成
步骤1:导入Cyberpay SDK
import 'package:cyberpayflutter/cyberpayflutter.dart';
步骤2:使用我们的服务器Drop-In UI完成集成
try {
  var result = await Cyberpayflutter.makePaymentWithReference(
      integrationKey: "MERCHANT_INTEGRATION_KEY",
      reference: "TRANSACTION_REFERENCE_FROM_SERVER",
      liveMode: false);
  if (result.isPaymentSuccessFul) {
    print("Payment is Successful, Your Payment Reference: ${result.paymentReference}");
  } else {
    print(result.errorMessage);
  }
} on PlatformException catch (e) {
  var error = "Cyberpay Error: '${e.message}'.";
  print(error);
}

注意:当上线时,确保将liveMode更改为true,并更改integration key。此密钥可以从Cyberpay商户门户上的商户仪表板获取。

示例

要运行示例项目,请克隆仓库并在终端中运行以下命令:

flutter run

许可证

cyberpaysdk 在MIT许可证下可用。详情请参阅LICENSE文件。


示例代码

以下是示例项目的源代码,位于 example/lib/main.dart 文件中:

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:cyberpayflutter/cyberpayflutter.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  bool liveMode = false;
  String transactionRef = "";
  final _formKey = GlobalKey<FormState>();

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

  // 平台消息是异步的,因此我们初始化在异步方法中。
  Future<void> makePaymentWithReference() async {
    try {
      var result = await Cyberpayflutter.makePaymentWithReference(
        integrationKey: "005e84081f9f408586de873338fa54b7",
        reference: transactionRef.trim(),
        liveMode: liveMode,
      );
      if (result.isPaymentSuccessFul) {
        print("Payment is Successful, Your Payment Reference: ${result.paymentReference}");
      } else {
        print(result.errorMessage);
      }
    } on PlatformException catch (e) {
      var error = "Cyberpay Error: '${e.message}'.";
      print(error);
    }
  }

  Future<void> makeSamplePayment() async {
    try {
      var result = await Cyberpayflutter.makePayment(
          integrationKey: "005e84081f9f408586de873338fa54b7",
          amount: 10000,
          customerEmail: "sample@demoemail.com",
          liveMode: false);
      if (result.isPaymentSuccessFul) {
        print("Payment is Successful, Your Payment Reference: ${result.paymentReference}");
      } else {
        print(result.errorMessage);
      }
    } on PlatformException catch (e) {
      var error = "Cyberpay Error: '${e.message}'.";
      print(error);
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('A demo Cyberpay Flutter Payment'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(32.0),
          child: Center(
            child: Form(
              key: _formKey,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                mainAxisAlignment: MainAxisAlignment.start,
                children: [
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      liveMode ? Text("Production") : Text("Staging"),
                      Switch(
                          value: liveMode,
                          onChanged: (bool newValue) {
                            setState(() {
                              liveMode = newValue;
                            });
                          })
                    ],
                  ),
                  SizedBox(height: 16),
                  MaterialButton(
                    child: Text('Pay Demo N100'),
                    onPressed: () => makeSamplePayment(),
                    elevation: 8,
                    highlightElevation: 2,
                    color: Colors.redAccent,
                    padding: EdgeInsets.all(20.0),
                    colorBrightness: Brightness.dark,
                  ),
                  SizedBox(height: 32),
                  TextFormField(
                    validator: (value) => value!.isEmpty ? "Required" : null,
                    decoration: InputDecoration(
                      labelText: "Transaction Reference",
                      hintText: "Enter Transaction Reference",
                    ),
                    onChanged: (value) {
                      setState(() {
                        transactionRef = value;
                      });
                    },
                  ),
                  SizedBox(height: 16),
                  MaterialButton(
                    child: Text('Pay Demo N100 with reference'),
                    onPressed: () {
                      if (_formKey.currentState!.validate()) {
                        makePaymentWithReference();
                      }
                    },
                    elevation: 8,
                    highlightElevation: 2,
                    color: Colors.redAccent,
                    padding: EdgeInsets.all(20.0),
                    colorBrightness: Brightness.dark,
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中集成CyberPay支付插件时,你需要按照CyberPayFlutter插件的官方文档进行操作。以下是一个基本的代码示例,展示了如何在Flutter应用中集成和使用CyberPay支付插件。

首先,确保你已经在pubspec.yaml文件中添加了CyberPayFlutter插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  cyberpayflutter: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,在你的Flutter项目中,你需要配置CyberPay的相关参数,并调用支付接口。以下是一个示例代码,展示了如何集成CyberPay支付:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('CyberPay Integration Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 配置CyberPay参数
              CyberPayParameters parameters = CyberPayParameters(
                merchantId: '你的商户ID', // 替换为你的实际商户ID
                amount: '100.00', // 支付金额
                currency: 'USD', // 货币类型
                description: 'Test Payment', // 支付描述
                // 其他必要的参数,根据CyberPay的API文档进行配置
              );

              // 初始化CyberPay
              CyberPay cyberPay = CyberPay();

              // 调用支付接口
              try {
                CyberPayResponse response = await cyberPay.startPayment(parameters);
                if (response.status == 'success') {
                  // 支付成功处理逻辑
                  showDialog(
                    context: context,
                    builder: (BuildContext context) {
                      return AlertDialog(
                        title: Text('支付成功'),
                        content: Text('支付金额: ${parameters.amount}'),
                        actions: <Widget>[
                          TextButton(
                            onPressed: () {
                              Navigator.of(context).pop();
                            },
                            child: Text('确定'),
                          ),
                        ],
                      );
                    },
                  );
                } else {
                  // 支付失败处理逻辑
                  showDialog(
                    context: context,
                    builder: (BuildContext context) {
                      return AlertDialog(
                        title: Text('支付失败'),
                        content: Text('错误代码: ${response.errorCode}, 错误信息: ${response.errorMessage}'),
                        actions: <Widget>[
                          TextButton(
                            onPressed: () {
                              Navigator.of(context).pop();
                            },
                            child: Text('确定'),
                          ),
                        ],
                      );
                    },
                  );
                }
              } catch (e) {
                // 处理异常
                showDialog(
                  context: context,
                  builder: (BuildContext context) {
                    return AlertDialog(
                      title: Text('发生错误'),
                      content: Text('错误信息: $e'),
                      actions: <Widget>[
                        TextButton(
                          onPressed: () {
                            Navigator.of(context).pop();
                          },
                          child: Text('确定'),
                        ),
                      ],
                    );
                  },
                );
              }
            },
            child: Text('发起支付'),
          ),
        ),
      ),
    );
  }
}

class CyberPayParameters {
  final String merchantId;
  final String amount;
  final String currency;
  final String description;
  // 可以添加其他必要的参数

  CyberPayParameters({
    required this.merchantId,
    required this.amount,
    required this.currency,
    required this.description,
    // 初始化其他参数
  });
}

class CyberPayResponse {
  final String status;
  final String errorCode;
  final String errorMessage;
  // 可以添加其他返回参数

  CyberPayResponse({
    required this.status,
    required this.errorCode,
    required this.errorMessage,
    // 初始化其他返回参数
  });
}

class CyberPay {
  Future<CyberPayResponse> startPayment(CyberPayParameters parameters) async {
    // 这里应该是CyberPay插件提供的实际支付接口调用代码
    // 由于CyberPayFlutter插件的具体实现细节未知,这里仅作为示例
    // 假设支付总是成功
    return Future.value(CyberPayResponse(
      status: 'success',
      errorCode: '',
      errorMessage: '',
    ));
  }
}

注意

  1. 上述代码中的CyberPay, CyberPayParameters, 和 CyberPayResponse 类是为了示例而创建的模拟类。在实际使用中,你应该使用CyberPayFlutter插件提供的实际类和接口。

  2. startPayment 方法中的实现是模拟的,你需要根据CyberPayFlutter插件的官方文档来调用实际的支付接口。

  3. 请确保你已经按照CyberPay的官方文档配置了必要的商户信息和支付参数。

  4. 在实际开发中,你应该处理更多的边界情况和错误处理逻辑,以确保应用的健壮性。

  5. 由于CyberPayFlutter插件的具体API和实现可能会随着版本更新而变化,因此请务必参考最新的官方文档。

回到顶部