Flutter支付集成插件basispaypgv2的使用
Flutter支付集成插件basispaypgv2的使用
Basispay PG SDK v2
Basispay Payment Gateway Flutter SDK - 0.0.1
BasisPay-Flutter-PG-SDKV2-KIT
一个用于在Flutter应用中接受在线支付的插件。
简介
本文档描述了如何集成Basispay在线支付网关的Flutter SDK。此支付网关通过减少用户操作来执行在线支付交易。它接收支付详情作为输入,并处理支付流程,最后返回支付结果给用户。用户需要手动将框架导入其项目才能使用。
要求
- Android最小SDK版本:21
- Android最大SDK版本:34
首先从BasisPay获取凭证
插件仅支持API密钥
ANDROID
步骤1: 进入您的应用的android文件夹并打开build.gradle文件
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
开始支付
Future<void> initPlatformState() async {
Map<String, dynamic> paymentRequestParams = {
// 必填参数
"apiKey": "YOUR_PG_API_KEY",
"secureHash": "xxxx",
"orderReference": "xxxx",
"customerName": "xxxx",
"customerEmail": "xxxx",
"customerMobile": "xxxxxxxxxx",
"address": "xxxx",
"postalCode": "xxxx",
"city": "xxxx",
"region": "xxxx",
"country": "xxx", // ISO 3码,例如:IND
"returnUrl": "xxxx",
"isPgMode": false, // 如果PG模式为LIVE,则设置为true,否则为false
"paymentMode":"",
"paymentMethod":"",
// 可选参数
"deliveryAddress": "xxxx",
"deliveryCustomerName": "xxxx",
"deliveryCustomerMobile": "xxxxxxxxxx",
"deliveryPostalCode": "xxxx",
"deliveryCity": "xxxx",
"deliveryRegion": "xxxx",
"deliveryCountry": "xxx", // ISO 3码,例如:IND
};
try {
var response = Basispaypgv2.startTransaction(paymentRequestParams);
response.then((value) {
print(value);
var referenceNo = value['referenceNo'];
var success = value['success'];
}).catchError((onError) {
if (onError is PlatformException) {
setState(() {
print(onError.message + " \n " + onError.details.toString());
});
} else {
setState(() {
print(onError.toString());
});
}
});
} catch (err) {
print(err.toString());
}
}
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:basispaypgv2/basispaypgv2.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
final _basispaypgv2Plugin = Basispaypgv2();
[@override](/user/override)
void initState() {
super.initState();
// initPlatformState();
}
// 平台消息异步调用,因此我们初始化在一个异步方法中。
Future<void> initPlatformState() async {
Map<String, dynamic> paymentRequestParams = {
// 必填参数
"apiKey": "ac2d6957-f765-4b3d-99e3-b2926b1d7b3c",
"secureHash": "61261EB0899CEBFE71583D23A4399F1685F9CDC416A338B017C09E2D37E2113752DAFCB3334C00AD90DDE55537B837C3CB47A8DB70BDC5E23E676ABBCF95DADD",
"orderReference": "bpQGrKHvLyocqcGauJKdfA==",
"customerName": "mathan",
"customerEmail": "Testing223@gmail.com",
"customerMobile": "88543221100",
"address": "5/223 choolaimedu,chennai-01",
"postalCode": "641017",
"city": "chennai",
"region": "Tamil Nadu",
"country": "IND",
"returnUrl": "http://157.245.105.135:9057/cinchcollect/pg/merchant",
"isPgMode": false, // isPgMode false=TEST or true=LIVE
"paymentMethod":"",
"paymentMode":"",
// 可选参数
"deliveryAddress": "",
"deliveryCustomerName": "",
"deliveryCustomerMobile": "",
"deliveryPostalCode": "",
"deliveryCity": "",
"deliveryRegion": "",
"deliveryCountry": "IND",
};
try {
var response = Basispaypgv2.startTransaction(paymentRequestParams);
response.then((value) {
print(value);
for(var key in value.keys) {
print(key);
}
var referenceNo = value['referenceNo'];
var success = value['success'];
print("==Ref==" + referenceNo);
print("==Success==" + success);
}).catchError((onError) {
if (onError is PlatformException) {
setState(() {
print(onError.message! + " \n " + onError.details.toString());
});
} else {
setState(() {
print(onError.toString());
});
}
});
} catch (err) {
print(err.toString());
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Basispay'),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () {
setState(() {
initPlatformState();
});
},
child: Text("Make Payment"))
],
),
),
),
);
}
}
更多关于Flutter支付集成插件basispaypgv2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件basispaypgv2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
basispaypgv2
是一个 Flutter 插件,用于集成 Basis Pay 支付网关的支付功能。使用该插件,开发者可以轻松地在 Flutter 应用中实现支付功能。以下是使用 basispaypgv2
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 basispaypgv2
插件的依赖:
dependencies:
flutter:
sdk: flutter
basispaypgv2: ^1.0.0 # 使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化插件
在需要使用支付功能的 Dart 文件中导入插件并进行初始化:
import 'package:basispaypgv2/basispaypgv2.dart';
void initializePayment() {
BasisPayPgv2.initialize(
merchantId: 'YOUR_MERCHANT_ID',
merchantKey: 'YOUR_MERCHANT_KEY',
isTestMode: true, // 测试模式,生产环境设置为 false
);
}
3. 发起支付
使用 BasisPayPgv2
发起支付请求。通常需要提供订单号、金额、回调 URL 等信息:
void startPayment() async {
try {
var response = await BasisPayPgv2.startPayment(
orderId: 'ORDER_ID_123',
amount: '100.00', // 金额
currency: 'INR', // 货币类型
customerName: 'John Doe',
customerEmail: 'john.doe@example.com',
customerPhone: '1234567890',
returnUrl: 'https://yourwebsite.com/return', // 支付成功后的回调 URL
notifyUrl: 'https://yourwebsite.com/notify', // 支付状态通知 URL
);
// 处理支付响应
if (response['status'] == 'success') {
print('Payment successful: ${response['transactionId']}');
} else {
print('Payment failed: ${response['message']}');
}
} catch (e) {
print('Error: $e');
}
}
4. 处理支付回调
支付完成后,用户将被重定向到指定的 returnUrl
。你可以在这个页面上处理支付结果,并根据结果更新订单状态。
5. 处理支付通知
Basis Pay 会向 notifyUrl
发送支付状态通知。你需要在服务器上处理这些通知,并更新订单状态。
6. 错误处理
在支付过程中,可能会遇到各种错误。建议在代码中加入错误处理逻辑,以便更好地处理异常情况。
7. 测试和上线
在测试环境中确保支付功能正常工作后,可以将 isTestMode
设置为 false
,并部署到生产环境。
示例代码
以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:basispaypgv2/basispaypgv2.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: PaymentScreen(),
);
}
}
class PaymentScreen extends StatefulWidget {
[@override](/user/override)
_PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
[@override](/user/override)
void initState() {
super.initState();
initializePayment();
}
void initializePayment() {
BasisPayPgv2.initialize(
merchantId: 'YOUR_MERCHANT_ID',
merchantKey: 'YOUR_MERCHANT_KEY',
isTestMode: true,
);
}
void startPayment() async {
try {
var response = await BasisPayPgv2.startPayment(
orderId: 'ORDER_ID_123',
amount: '100.00',
currency: 'INR',
customerName: 'John Doe',
customerEmail: 'john.doe@example.com',
customerPhone: '1234567890',
returnUrl: 'https://yourwebsite.com/return',
notifyUrl: 'https://yourwebsite.com/notify',
);
if (response['status'] == 'success') {
print('Payment successful: ${response['transactionId']}');
} else {
print('Payment failed: ${response['message']}');
}
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Basis Pay Integration'),
),
body: Center(
child: ElevatedButton(
onPressed: startPayment,
child: Text('Pay Now'),
),
),
);
}
}