Flutter支付集成插件payme_sdk_offical的使用
概述
PayME SDK 是一组库,允许应用程序与 PayME 平台进行交互。PayME SDK 提供的主要功能包括:
- 系统登录和通过 PayME 钱包进行电子身份识别(eKYC)。
- 支持应用获取 PayME 钱包余额信息。
- 提供从 PayME 钱包充值和提现的功能。
术语表
以下是一些关键术语及其解释:
序号 | 名称 | 解释 |
---|---|---|
1 | app | 集成了 PayME SDK 的移动应用(iOS/Android 或 Web)。 |
2 | SDK | 帮助集成 PayME 钱包到应用中的工具集。 |
3 | backend | 支持应用的后端系统、服务器或 API。 |
4 | AES | 使用 AES256 PKCS5 加密的数据算法。 |
5 | RSA | 用于数据加密的 RSA 算法。 |
6 | IPN | 即时支付通知,用于在应用后端与 PayME 后端之间传递通知。 |
安装步骤
-
在
pubspec.yaml
文件中添加以下依赖项:dependencies: payme_sdk_offical: ^1.1.7
然后运行以下命令以完成安装:
dart pub get
-
更新 Info.plist(iOS 专用): 添加以下键值对以请求必要的权限:
<key>NSCameraUsageDescription</key> <string>Need to access your camera to capture a photo add and update profile picture.</string> <key>NSPhotoLibraryAddUsageDescription</key> <string>Need to access your library to add a photo or video for KYC.</string> <key>NSPhotoLibraryUsageDescription</key> <string>Need to access your photo library to select a photo add and update profile picture.</string> <key>NSContactsUsageDescription</key> <string>Need to access your contacts.</string>
如果不使用联系人功能,可以在
Podfile
的末尾添加以下配置:post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'PayMESDK' target.build_configurations.each do |config| config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] ||= '$(inherited)' config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] << 'IGNORE_CONTACT' end end end end
使用 SDK
在使用 PayME SDK 之前,必须先初始化并登录。以下是初始化和主要功能的示例代码:
// 初始化 PayME SDK
PaymeSdkFlutterConfig config = PaymeSdkFlutterConfig(
appToken: "YOUR_APP_TOKEN",
publicKey: "YOUR_PUBLIC_KEY",
privateKey: "YOUR_PRIVATE_KEY",
secretKey: "YOUR_SECRET_KEY",
);
// 登录
Future<void> login() async {
try {
PaymeSdkFlutterKYCState status = await PaymeSdkFlutter.login(
"USER_ID", // 用户唯一标识符
"PHONE_NUMBER", // 用户手机号码
config,
);
print("Login Status: $status");
} catch (e) {
print("Login Error: $e");
}
}
SDK 功能
1. 注销 (logout
)
await PaymeSdkFlutter.logout(); // 注销当前会话
2. 关闭 SDK (close
)
await PaymeSdkFlutter.close(); // 关闭当前 SDK UI
3. 打开钱包 (openWallet
)
await PaymeSdkFlutter.openWallet(); // 打开 PayME 钱包主界面
4. 充值 (deposit
)
await PaymeSdkFlutter.deposit(amount: 1000); // 充值金额为 1000
5. 提现 (withdraw
)
await PaymeSdkFlutter.withdraw(amount: 500); // 提现金额为 500
6. 转账 (transfer
)
await PaymeSdkFlutter.transfer(amount: 200, note: "Transfer Test"); // 转账金额为 200,并附带备注
7. 查看交易历史 (openHistory
)
await PaymeSdkFlutter.openHistory(); // 打开交易历史页面
8. 支付 (pay
)
await PaymeSdkFlutter.pay(
1000, // 支付金额
DateTime.now().millisecondsSinceEpoch.toString(), // 订单编号
PaymeSdkFlutterPayCode.PAYME, // 支付方式
storeId: "STORE_ID", // 商户 ID
);
9. 扫描二维码 (scanQR
)
final qrString = "OPENEWALLET|STORE_ID|PAYMENT|1000|Note|ORDER_ID|USERNAME";
await PaymeSdkFlutter.scanQR(payCode: "PAYME"); // 扫描二维码支付
10. 支付二维码 (payQRCode
)
await PaymeSdkFlutter.payQRCode(
qr: "QR_CODE_STRING",
payCode: "PAYME",
isShowResultUI: true, // 是否显示支付结果 UI
);
11. 打开 KYC 模态框 (openKYC
)
await PaymeSdkFlutter.openKYC(); // 打开 KYC 定义页面
12. 获取钱包信息 (getWalletInfo
)
var walletInfo = await PaymeSdkFlutter.getWalletInfo();
print(walletInfo["walletBalance"]["balance"]); // 输出钱包余额
13. 获取支持的服务 (getSupportedServices
)
var services = await PaymeSdkFlutter.getSupportedServices();
print(services); // 输出支持的服务列表
14. 设置语言 (setLanguage
)
await PaymeSdkFlutter.setLanguage(PaymeSdkFlutterLanguage.EN); // 设置语言为英语
错误码
以下是 PayME SDK 返回的一些常见错误码及解释:
错误码 | 描述 |
---|---|
EXPIRED |
Token 已过期。 |
NETWORK |
网络连接失败。 |
SYSTEM |
系统错误。 |
LIMIT |
余额不足。 |
ACCOUNT_NOT_ACTIVATED |
账户未激活。 |
ACCOUNT_NOT_KYC |
账户未完成 KYC。 |
PAYMENT_ERROR |
支付失败。 |
ERROR_KEY_ENCODE |
数据加密/解密失败。 |
USER_CANCELLED |
用户取消操作。 |
ACCOUNT_NOT_LOGIN |
未登录账户。 |
PAYMENT_PENDING |
支付正在处理中。 |
ACCOUNT_ERROR |
账户被锁定。 |
示例代码
以下是一个完整的示例代码,展示了如何使用 PayME SDK 进行登录、支付等操作:
import 'package:flutter/material.dart';
import 'package:payme_sdk_flutter/payme_sdk_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _status = "Not Connected. Please LOGIN first";
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("PayME SDK Example"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
try {
var status = await PaymeSdkFlutter.login(
"USER_ID",
"PHONE_NUMBER",
PaymeSdkFlutterConfig(
appToken: "APP_TOKEN",
publicKey: "PUBLIC_KEY",
privateKey: "PRIVATE_KEY",
secretKey: "SECRET_KEY",
),
);
setState(() {
_status = status.toString();
});
} catch (e) {
setState(() {
_status = "Error: ${e.toString()}";
});
}
},
child: Text("Login"),
),
ElevatedButton(
onPressed: () async {
try {
await PaymeSdkFlutter.logout();
setState(() {
_status = "Not Connected. Please LOGIN first";
});
} catch (e) {
setState(() {
_status = "Error: ${e.toString()}";
});
}
},
child: Text("Logout"),
),
ElevatedButton(
onPressed: () async {
try {
var response = await PaymeSdkFlutter.pay(
1000,
DateTime.now().millisecondsSinceEpoch.toString(),
PaymeSdkFlutterPayCode.PAYME,
storeId: "STORE_ID",
);
print(response);
} catch (e) {
print("Payment Error: ${e.toString()}");
}
},
child: Text("Pay"),
),
],
),
),
);
}
}
更多关于Flutter支付集成插件payme_sdk_offical的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件payme_sdk_offical的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
payme_sdk_offical
是一个用于在 Flutter 应用中集成支付功能的插件。它通常用于与 Payme 支付网关进行交互,以便在应用中实现支付功能。以下是如何在 Flutter 项目中使用 payme_sdk_offical
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 payme_sdk_offical
插件的依赖。
dependencies:
flutter:
sdk: flutter
payme_sdk_offical: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在使用 payme_sdk_offical
之前,你需要初始化 SDK。通常,你需要在应用的 main.dart
文件中进行初始化。
import 'package:flutter/material.dart';
import 'package:payme_sdk_offical/payme_sdk_offical.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Payme SDK
await PaymeSdkOffical.initialize(
merchantId: 'YOUR_MERCHANT_ID',
merchantKey: 'YOUR_MERCHANT_KEY',
isTestMode: true, // 设置为 true 以使用测试环境
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Payme Example',
home: PaymentScreen(),
);
}
}
3. 发起支付
在需要发起支付的地方,你可以使用 PaymeSdkOffical
提供的 API 来发起支付请求。
import 'package:flutter/material.dart';
import 'package:payme_sdk_offical/payme_sdk_offical.dart';
class PaymentScreen extends StatelessWidget {
Future<void> _makePayment() async {
try {
// 发起支付请求
final response = await PaymeSdkOffical.makePayment(
amount: 1000, // 支付金额
orderId: 'ORDER_ID_123', // 订单ID
description: 'Payment for order #123', // 订单描述
);
// 处理支付结果
if (response['status'] == 'success') {
print('Payment successful: ${response['transactionId']}');
} else {
print('Payment failed: ${response['errorMessage']}');
}
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payme Payment'),
),
body: Center(
child: ElevatedButton(
onPressed: _makePayment,
child: Text('Make Payment'),
),
),
);
}
}