Flutter支付集成插件cyberpayflutter的使用
Flutter支付集成插件cyberpayflutter的使用
引言
Cyberpay为您提供在尼日利亚快速方便地进行支付和收款的服务。
关于SDK
Cyberpay Flutter SDK是一个易于使用的库,可以快速将Cyberpay集成到您的移动应用中。它作为现有Cyberpay网络服务的包装器,并创建了一个用于卡和银行交易的移动入口点。
SDK提供了自定义视图/布局以处理结账、PIN、OTP、安全3D等业务逻辑,并仅暴露三个回调来表示交易状态。
要求
Cyberpay Flutter SDK兼容支持iOS 11及以上的iOS应用。
开始使用
安装
-
在
pubspec.yaml
文件的依赖部分添加cyberpay包。以下代码将使cyberpayflutter
插件的Dart API在您的应用程序中可用:dependencies: cyberpayflutter: ^1.0.4
-
在项目目录中运行以下命令以下载该包:
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
更多关于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: '',
));
}
}
注意:
-
上述代码中的
CyberPay
,CyberPayParameters
, 和CyberPayResponse
类是为了示例而创建的模拟类。在实际使用中,你应该使用CyberPayFlutter插件提供的实际类和接口。 -
startPayment
方法中的实现是模拟的,你需要根据CyberPayFlutter插件的官方文档来调用实际的支付接口。 -
请确保你已经按照CyberPay的官方文档配置了必要的商户信息和支付参数。
-
在实际开发中,你应该处理更多的边界情况和错误处理逻辑,以确保应用的健壮性。
-
由于CyberPayFlutter插件的具体API和实现可能会随着版本更新而变化,因此请务必参考最新的官方文档。