Flutter支付插件nravepay的使用
Flutter支付插件nravepay的使用
Nravepay 是一个用于在 Flutter 项目中轻松接受卡支付的包,它基于 Flutterwave。这项工作受到 rave_flutter 的启发。
特性
- 自定义 Flutter 原生界面
- 保存卡并使用令牌支付
- 仅限卡支付
- 分割支付
初始化
在启动时初始化:
void main() {
NRavePayRepository.setup(Setup(
publicKey: PaymentKeys.publicKey,
encryptionKey: PaymentKeys.encryptionKey,
secKey: PaymentKeys.secretKey,
staging: true,
version: Version.v3,
allowSaveCard: true,
logging: true,
));
// 其他代码
}
使用方法
var initializer = PayInitializer(
amount: 450,
email: 'email@email.com',
txRef: 'TXREF-${DateTime.now().microsecondsSinceEpoch}',
narration: 'New payment',
country: 'NG',
currency: 'NGN',
firstname: 'Nelson',
lastname: 'Eze',
phoneNumber: '09092343432',
metadata: {'paymentType': 'card', 'platform': 'android'},
onComplete: (result) {
if (result.status == HttpStatus.success) {
if (result.card != null) {
print(result.card); // 可以保存卡
}
}
print(result.message);
},
);
return PayManager().prompt(context: context, initializer: initializer);
自定义
你可以自定义此包中的所有文本。这对于你的应用支持多种语言非常有用。
自定义文本
NRavePayRepository.setup(Setup(
// 其他参数
payText: '立即支付',
chooseCardHeaderText: '付款卡',
addCardHeaderText: '添加卡',
addNewCardText: '添加新卡',
strings: Strings().copyWith(),
));
自定义支付按钮
var initializer = PayInitializer(
// 其他参数
buttonBuilder: (amount, onPress) {
return TextButton(
child: Text(amount.toString()),
onPressed: onPress,
);
},
);
服务
该包还暴露了一些有用的方法,以防你需要在其他地方调用它们。
调用交易服务
例如,使用 Payload
对象执行充值请求:
var payload = Payload(...);
ChargeResponse response = await TransactionService.instance.charge(payload);
获取银行列表
例如,获取支持的银行列表:
var banks = await BankService.instance.fetchBanks;
自定义HTTP操作
例如,验证账户号码是否正确:
Future<dynamic> verifyAccount(String acctNo, String bankCode) async {
var data = {
'recipientaccount': acctNo,
'destbankcode': bankCode,
'PBFPubKey': Setup.instance.publicKey
};
try {
final res = await HttpService().dio.post('/flwv3-pug/getpaidx/api/resolve_account', data: data);
if (res.statusCode == 200) {
print(res.data);
}
} catch (e) {
print(e);
}
}
更多关于Flutter支付插件nravepay的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付插件nravepay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutterwave
是一个流行的支付解决方案,提供了 Flutter 插件 flutterwave_rave
,用于在 Flutter 应用中集成支付功能。以下是如何在 Flutter 应用中使用 flutterwave_rave
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutterwave_rave
依赖:
dependencies:
flutter:
sdk: flutter
flutterwave_rave: ^2.1.0
然后运行 flutter pub get
来安装依赖。
2. 初始化插件
在你的 Dart 文件中导入 flutterwave_rave
插件:
import 'package:flutterwave_rave/flutterwave_rave.dart';
3. 配置支付参数
你需要配置支付参数,例如金额、货币、电子邮件、公钥等。以下是一个示例:
final RavePayInitializer ravePayInitializer = RavePayInitializer(
amount: 1000, // 金额
currency: "NGN", // 货币代码
email: "user@example.com", // 用户电子邮件
firstname: "John", // 用户名字
lastname: "Doe", // 用户姓氏
narration: "Payment for goods", // 描述
publicKey: "FLWPUBK_TEST-xxxxxxxxxxxxx-X", // 你的公钥
encryptionKey: "FLWSECK_TESTxxxxxxxxxxxxx", // 你的加密密钥
txRef: "unique_transaction_reference", // 唯一交易参考
isStaging: true, // 是否使用测试环境
);
4. 启动支付
使用 RavePayManager
来启动支付流程:
RavePayManager ravePayManager = RavePayManager(ravePayInitializer);
ravePayManager.startPayment(context).then((response) {
if (response.status == "success") {
// 支付成功
print("Payment successful: ${response.transactionId}");
} else {
// 支付失败
print("Payment failed: ${response.message}");
}
});
5. 处理支付结果
支付完成后,RavePayManager
会返回一个 RavePayResponse
对象,你可以根据 response.status
来判断支付是否成功,并处理相应的逻辑。
6. 测试支付
如果你使用的是测试环境(isStaging: true
),你可以使用以下测试卡号进行测试:
- Card Number: 5531 8866 5214 2950
- CVV: 564
- Expiry Date: 09/32
- PIN: 3310
- OTP: 12345
7. 发布应用
当你准备发布应用时,确保将 isStaging
设置为 false
,并使用生产环境的公钥和加密密钥。
完整示例代码
以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:flutterwave_rave/flutterwave_rave.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: PaymentScreen(),
);
}
}
class PaymentScreen extends StatelessWidget {
void initiatePayment(BuildContext context) {
final RavePayInitializer ravePayInitializer = RavePayInitializer(
amount: 1000,
currency: "NGN",
email: "user@example.com",
firstname: "John",
lastname: "Doe",
narration: "Payment for goods",
publicKey: "FLWPUBK_TEST-xxxxxxxxxxxxx-X",
encryptionKey: "FLWSECK_TESTxxxxxxxxxxxxx",
txRef: "unique_transaction_reference",
isStaging: true,
);
RavePayManager ravePayManager = RavePayManager(ravePayInitializer);
ravePayManager.startPayment(context).then((response) {
if (response.status == "success") {
print("Payment successful: ${response.transactionId}");
} else {
print("Payment failed: ${response.message}");
}
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutterwave Payment'),
),
body: Center(
child: ElevatedButton(
onPressed: () => initiatePayment(context),
child: Text('Make Payment'),
),
),
);
}
}