Flutter支付集成插件shurjopay的使用
Flutter支付集成插件shurjopay的使用
这是官方的shurjoPay flutter包,供商家或服务提供商将其支付系统集成到他们的Flutter应用程序中。目前,它仅支持Android和iOS。
shurjoPay flutter包通过两个方法调用使支付系统更加简单:
makePayment()
verifyPayment()
仅此而已!要了解更多信息,请参阅下面的详细说明。
添加包依赖到应用
- 打开应用文件夹内的
pubspec.yaml
文件,并在dependencies下添加shurjopay: ^2.0.6
。 - 运行命令
flutter pub get
以拉取并下载依赖项。
使用
初始化shurjoPay
首先,您必须在使用之前通过调用initializeShurjopay()
并传递环境类型作为参数来初始化shurjoPay。
示例:
void main() {
initializeShurjopay(environment: "sandbox");
runApp(const MyApp());
}
基本使用示例
创建一个shurjoPay对象。
ShurjoPay shurjoPay = ShurjoPay();
创建支付请求模型并初始化值。
// 创建ShurjopayConfigs对象并设置值,以便您可以在这里传递它。
ShurjopayRequestModel shurjopayRequestModel = ShurjopayRequestModel(
configs: shurjopayConfigs,
currency: "BDT",
amount: 1000,
// 记住在订单ID前加前缀。例如:如果前缀是'test',则订单ID应为test123456
orderID: "sp1ab2c3d4",
discountAmount: 0,
discountPercentage: 0,
customerName: "Shajedul Islam",
customerPhoneNumber: "01628734916",
customerAddress: "customer address",
customerCity: "customer city",
customerPostcode: "1212",
returnURL: "return_url",
cancelURL: "cancel_url",
);
创建一个支付响应模型对象以存储makePayment()
方法的结果。
ShurjopayResponseModel shurjopayResponseModel = ShurjopayResponseModel();
调用makePayment()
方法以启动支付过程。
shurjopayResponseModel = await shurjoPay.makePayment(
context: context,
shurjopayRequestModel: shurjopayRequestModel,
);
创建一个验证响应模型对象以存储verifyPayment()
方法的结果。
ShurjopayVerificationModel shurjopayVerificationModel = ShurjopayVerificationModel();
如果makePayment()
方法结果的状态为true,则可以在任何时候通过调用verifyPayment()
方法来验证支付。
if (shurjopayResponseModel.status == true) {
try {
shurjopayVerificationModel = await shurjoPay.verifyPayment(
orderID: shurjopayResponseModel.shurjopayOrderID!,
);
if (shurjopayVerificationModel.spCode == "1000") {
print("Payment Varified");
}
} catch (error) {
print(error.toString());
}
}
完整示例代码
以下是一个完整的示例代码,展示了如何在应用中集成shurjoPay。
// ignore_for_file: avoid_print
import 'package:flutter/material.dart';
import 'package:pro_widgets/pro_widgets.dart';
import 'package:shurjopay/models/config.dart';
import 'package:shurjopay/models/payment_verification_model.dart';
import 'package:shurjopay/models/shurjopay_request_model.dart';
import 'package:shurjopay/models/shurjopay_response_model.dart';
import 'package:shurjopay/shurjopay.dart';
import 'package:shurjopay/utilities/functions.dart';
void main() {
initializeShurjopay(environment: "sandbox");
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'shurjoPay Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ShurjoPay shurjoPay = ShurjoPay();
ShurjopayConfigs shurjopayConfigs = ShurjopayConfigs(
prefix: "NOK",
userName: "sp_sandbox",
password: "pyyk97hu&6u6",
clientIP: "127.0.0.1",
);
ShurjopayResponseModel shurjopayResponseModel = ShurjopayResponseModel();
ShurjopayVerificationModel shurjopayVerificationModel = ShurjopayVerificationModel();
TextEditingController nameFieldController = TextEditingController();
TextEditingController amountFieldController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('shurjoPay Demo'),
backgroundColor: Colors.green,
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ProTextField(
hint: "Enter Name",
controller: nameFieldController,
height: 45,
),
const ProGap(y: 16),
ProTextField(
hint: "Enter Amount",
controller: amountFieldController,
height: 45,
),
const ProGap(y: 16),
ProButtonBasic(
text: "Pay",
fontSize: 18,
backgroundColor: Colors.green,
height: 45,
width: double.infinity,
onTap: () async {
FocusScope.of(context).unfocus();
ShurjopayRequestModel shurjopayRequestModel = ShurjopayRequestModel(
configs: shurjopayConfigs,
currency: "BDT",
amount: double.parse(amountFieldController.text),
orderID: "sp1ab2c3d4",
discountAmount: 0,
discountPercentage: 0,
customerName: nameFieldController.text,
customerPhoneNumber: "01711486915",
customerAddress: "customer address",
customerCity: "customer city",
customerPostcode: "1212",
// 测试:https://www.sandbox.shurjopayment.com/return_url
returnURL: "https://www.sandbox.shurjopayment.com/return_url",
// 测试:https://www.sandbox.shurjopayment.com/cancel_url
cancelURL: "https://www.sandbox.shurjopayment.com/cancel_url",
);
shurjopayResponseModel = await shurjoPay.makePayment(
context: context,
shurjopayRequestModel: shurjopayRequestModel,
);
if (shurjopayResponseModel.status == true) {
try {
shurjopayVerificationModel = await shurjoPay.verifyPayment(
orderID: shurjopayResponseModel.shurjopayOrderID!,
);
print(shurjopayVerificationModel.spCode);
print(shurjopayVerificationModel.spMessage);
if (shurjopayVerificationModel.spCode == "1000") {
print("Payment Varified");
}
} catch (error) {
print(error.toString());
}
}
nameFieldController.clear();
amountFieldController.clear();
},
)
],
),
),
),
);
}
}
以上就是所有内容!现在您可以使用我们的shurjoPay flutter包,使您的支付系统变得简单和流畅。
更多关于Flutter支付集成插件shurjopay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件shurjopay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中集成并使用shurjopay
支付插件的示例代码。请注意,实际使用时需要根据shurjopay
插件的官方文档进行调整,并确保你已经正确设置了相关的API密钥和支付参数。
首先,确保你已经在pubspec.yaml
文件中添加了shurjopay
依赖:
dependencies:
flutter:
sdk: flutter
shurjopay: ^latest_version # 替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你需要进行以下步骤来集成shurjopay
支付功能:
- 导入
shurjopay
包:
在你的Dart文件中导入shurjopay
包:
import 'package:shurjopay/shurjopay.dart';
- 初始化
ShurjoPay
:
在应用的初始化阶段(例如main.dart
中),你可以配置ShurjoPay
:
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化ShurjoPay配置
ShurjoPay.init(
key: 'your_api_key', // 替换为你的API密钥
environment: ShurjoPayEnvironment.sandbox, // 或ShurjoPayEnvironment.production,根据你的需求选择
);
runApp(MyApp());
}
- 创建支付请求:
在你的支付页面上,创建一个支付请求并启动支付流程:
import 'package:flutter/material.dart';
import 'package:shurjopay/shurjopay.dart';
class PaymentScreen extends StatefulWidget {
@override
_PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
void startPayment() async {
try {
// 创建支付请求参数
final paymentParams = ShurjoPayPaymentParams(
amount: 1000, // 支付金额,单位通常是该支付系统所支持的最小货币单位(例如,1000可能代表10.00美元)
currencyCode: 'USD', // 货币代码
description: 'Product Purchase', // 支付描述
orderId: 'order_123456', // 订单ID,确保唯一
returnUrl: 'https://yourwebsite.com/success', // 支付成功后返回的URL
notifyUrl: 'https://yourwebsite.com/notify', // 支付通知URL
);
// 启动支付流程
final result = await ShurjoPay.startPayment(paymentParams);
if (result.status == ShurjoPayPaymentStatus.success) {
// 支付成功处理
print('Payment successful: ${result.responseData}');
} else if (result.status == ShurjoPayPaymentStatus.failed) {
// 支付失败处理
print('Payment failed: ${result.errorMessage}');
} else if (result.status == ShurjoPayPaymentStatus.canceled) {
// 支付取消处理
print('Payment canceled');
}
} catch (e) {
// 错误处理
print('Error: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payment Screen'),
),
body: Center(
child: ElevatedButton(
onPressed: startPayment,
child: Text('Start Payment'),
),
),
);
}
}
- 处理支付结果:
在上面的代码中,我们已经处理了支付成功、失败和取消的情况。你可以根据实际需求进一步处理这些结果,例如更新UI、发送通知等。
请注意,上述代码是一个简化的示例,实际使用时你可能需要处理更多的细节,如用户身份验证、支付参数的动态生成、错误处理等。务必参考shurjopay
插件的官方文档和API参考,以确保正确集成和使用。