Flutter支付集成插件esewa_client的使用
Flutter支付集成插件esewa_client的使用
esewa_client
是一个用于将 ESEWA 商家服务集成到您的应用程序中的 Flutter 插件。
开始使用
在您的 pubspec.yaml
文件中添加此依赖项:
dependencies:
esewa_client: ^0.1.1
在您的 AndroidManifest.xml
文件中添加以下属性(这将设置应用级别的主题为 Theme.AppCompat
的后代):
<application
...
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
...>
...
</application>
注意:目前此插件仅支持 Android 版本(iOS 版本即将推出)。
如何使用
以下是使用 esewa_client
插件的基本示例:
// 更改生产环境中的凭证
EsewaClient _esewaClient = EsewaClient.configure(
clientId: "JB0BBQ4aD0UqIThFJwAKBgAXEUkEGQUBBAwdOgABHD4DChwUAB0R",
secretKey: "BhwIWQQADhIYSxILExMcAgFXFhcOBwAKBgAXEQ==",
environment: EsewaEnvironment.TEST,
);
/*
* 输入您的回调 URL 以接收来自 Esewa 的响应回调到您的客户端服务器
* */
EsewaPayment payment = EsewaPayment(
productId: "test_id",
amount: "10",
name: "Test Product",
callbackUrl:
"http://example.com/");
// 开始您的支付流程
_esewaClient.startPayment(
esewaPayment: payment,
onSuccess: (data) {
print("success");
},
onFailure: (data) {
print("failure");
},
onCancelled: (data) {
print("cancelled");
});
完整示例代码
以下是完整的示例代码,您可以将其复制到您的项目中并运行。
import 'package:esewa_client/esewa_client.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: TextButton(
child: Text('通过 Esewa 支付'),
onPressed: _payViaEsewa,
),
),
),
);
}
_payViaEsewa() async {
// 更改生产环境中的凭证
EsewaClient _esewaClient = EsewaClient.configure(
clientId: "JB0BBQ4aD0UqIThFJwAKBgAXEUkEGQUBBAwdOgABHD4DChwUAB0R",
secretKey: "BhwIWQQADhIYSxILExMcAgFXFhcOBwAKBgAXEQ==",
environment: EsewaEnvironment.TEST,
);
/*
* 输入您的回调 URL 以接收来自 Esewa 的响应回调到您的客户端服务器
* */
EsewaPayment payment = EsewaPayment(
productId: "test_id",
amount: "10",
name: "测试产品",
callbackUrl:
"http://example.com/");
_esewaClient.startPayment(
esewaPayment: payment,
onSuccess: (data) {
print("成功");
},
onFailure: (data) {
print("失败");
},
onCancelled: (data) {
print("取消");
});
}
}
更多关于Flutter支付集成插件esewa_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件esewa_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter应用中集成Esewa支付插件esewa_client
通常涉及几个关键步骤,包括插件安装、配置以及支付功能的实现。以下是一个基本的代码示例,展示了如何使用esewa_client
插件进行支付集成。
步骤 1: 添加依赖
首先,你需要在pubspec.yaml
文件中添加esewa_client
插件的依赖:
dependencies:
flutter:
sdk: flutter
esewa_client: ^最新版本号 # 请替换为实际最新版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 配置Android和iOS
确保你的Android和iOS项目已经正确配置了网络权限和URL Scheme,因为Esewa支付流程需要访问外部URL。
Android配置
在android/app/src/main/AndroidManifest.xml
中添加网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
iOS配置
在ios/Runner/Info.plist
中确保添加了适当的URL Scheme(如果需要的话,具体根据Esewa的要求来配置)。
步骤 3: 实现支付功能
以下是一个简单的Flutter代码示例,展示如何使用esewa_client
插件进行支付:
import 'package:flutter/material.dart';
import 'package:esewa_client/esewa_client.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Esewa Payment Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _initiatePayment,
child: Text('Pay Now'),
),
),
),
);
}
void _initiatePayment() async {
// Esewa支付所需的参数
String merchantId = '你的商户ID';
String amount = '100'; // 支付金额,单位:尼泊尔卢比
String productInfo = '测试商品';
String successUrl = 'https://yourwebsite.com/success';
String failUrl = 'https://yourwebsite.com/fail';
String callbackUrl = 'https://yourwebsite.com/callback'; // 可选
// 创建支付请求
final EsewaPaymentRequest request = EsewaPaymentRequest(
merchantId: merchantId,
amount: amount,
productInfo: productInfo,
successUrl: successUrl,
failUrl: failUrl,
callbackUrl: callbackUrl,
);
try {
// 发起支付
final EsewaPaymentResponse response = await EsewaClient.startPayment(request);
print('支付响应: ${response.toMap()}');
// 根据响应结果处理支付成功或失败逻辑
if (response.status == 'SUCCESS') {
// 支付成功处理逻辑
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('支付成功!')),
);
} else {
// 支付失败处理逻辑
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('支付失败!')),
);
}
} catch (e) {
// 错误处理
print('支付过程中发生错误: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('支付过程中发生错误!')),
);
}
}
}
注意事项
- 商户ID和回调URL:确保你使用的是从Esewa获取的正确的商户ID和回调URL。
- 金额单位:金额单位是尼泊尔卢比(NPR)。
- 错误处理:在实际应用中,你需要更详细的错误处理逻辑,以便更好地处理各种可能的异常情况。
- 安全性:确保你的应用遵循最佳安全实践,特别是在处理支付信息时。
以上代码提供了一个基本的集成示例,你可以根据自己的需求进行扩展和修改。