Flutter集成Snapmint服务插件flutter_snapmint_sdk的使用
开始使用
flutter_snapmint_sdk
是一个用于在 Flutter 应用中集成 Snapmint 服务的插件。它允许开发者轻松地将 Snapmint 的支付功能嵌入到他们的应用程序中。
初始化项目
首先,确保你已经创建了一个 Flutter 项目。如果你还没有创建项目,可以使用以下命令:
flutter create snapmint_example
然后进入项目目录:
cd snapmint_example
添加依赖
在 pubspec.yaml
文件中添加 flutter_snapmint_sdk
依赖:
dependencies:
flutter:
sdk: flutter
flutter_snapmint_sdk: ^1.0.0 # 请根据实际版本号进行调整
保存文件后运行以下命令以安装依赖:
flutter pub get
配置插件
在 main.dart
文件中配置并使用插件。以下是完整的示例代码:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_snapmint_sdk/src/SnapmintButtonGoldWidget.dart';
import 'package:flutter_snapmint_sdk/src/SnapmintButtonWidget.dart';
import 'package:flutter_snapmint_sdk/flutter_snapmint_sdk.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';
late Map<String, dynamic> _response;
final _flutterSnapmintSdkPlugin = FlutterSnapmintSdk();
[@override](/user/override)
void initState() {
super.initState();
// 初始化平台状态
initPlatformState();
}
Future<void> openSnapMintModule() async {
Map<String, dynamic> responseData;
try {
String jsonString = getJsonString();
String nativeData = await _flutterSnapmintSdkPlugin.openSnapmintModule(jsonString) ?? {}.toString();
print("TEST! $nativeData");
responseData = jsonDecode(nativeData);
print("TEST! data is code => ${responseData["statusCode"]} message is => ${responseData["responseMsg"]}");
} on Exception {
responseData = <String, dynamic>{};
print("TEST! Exception handled");
}
if (!mounted) return;
setState(() {
_response = responseData;
});
}
// 平台消息是异步的,因此我们在异步方法中初始化
Future<void> initPlatformState() async {
String platformVersion;
// 平台消息可能会失败,所以我们使用 try/catch 来处理 PlatformException。
// 我们还处理了消息可能返回 null 的情况。
try {
platformVersion = await _flutterSnapmintSdkPlugin.getPlatformVersion() ?? 'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// 如果小部件从树中被移除,而异步平台消息仍在飞行中,我们希望丢弃回复而不是调用
// setState 来更新我们的不存在的外观。
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Snapmint 插件示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: const EdgeInsets.only(left: 20, right: 20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
openSnapMintModule();
},
child: const Text(
"打开 SDK",
style: TextStyle(
fontSize: 14,
color: Colors.blue,
fontFamily: 'Roboto',
fontWeight: FontWeight.w400,
),
),
),
const SizedBox(
height: 10,
),
SnapmintButtonWidget(
amount: 100.0.toString(),
jsonUrl:
'https://preemi.snapmint.com/assets/merchant/1616/snap_ketch.json',
fontFamily: const TextStyle(fontFamily: 'Roboto'),
disablePopup: false,
),
const SizedBox(
height: 10,
),
SnapmintButtonGoldWidget(
amount: 8355,
goldAmount: 2997,
jsonUrl:
'https://preemi.snapmint.com/assets/merchant/1616/snap_ketch.json',
fontFamilyStyle: const TextStyle(fontFamily: 'Roboto'),
disablePopup: false,
disableSecondLine: false,
)
],
),
),
],
),
),
),
);
}
String getJsonString() {
Map<String, dynamic> finalData = {
"merchant_key": "cQ_kvgB0",
"merchant_token": "UOYY0R_n",
"merchant_id": 1456,
"merchant_confirmation_url":
"https://services-pp-customer.melorralabsinfra.com/api/snapmint/snapmint_order/order_success/",
"merchant_failure_url":
"https://services-pp-customer.melorralabsinfra.com/api/snapmint/snapmint_order/order_failure/",
"mobile": "9004559365",
"store_id": 1,
"order_id":
"MELORRA-${DateTime.now().millisecondsSinceEpoch}", // 随机值可以是 DateTime
"order_value": 75163,
"udf1": 1.91,
"udf2": 7147,
"full_name": "test",
"email": "khem.raj@snapmint.com",
"billing_address_line1": "test",
"billing_zip": "560037",
"shipping_address_line1": "test",
"shipping_zip": "560037",
"deviceType": "android",
"products": [
{
"sku": "227285",
"name": "Bold Show Diamond Earrings",
"quantity": 1,
"unit_price": 75163,
"udf2": 7147,
"udf1": "1.910 g"
}
]
};
// 创建完整的 JSON 结构
Map<String, dynamic> jsonData = {
"finalData": finalData,
"base_url": "https://qaapi.snapmint.com/v1/public/s2s_online_checkout",
"suc_url":
"https://services-pp-customer.melorralabsinfra.com/api/snapmint/snapmint_order/order_success/",
"fail_url":
"https://services-pp-customer.melorralabsinfra.com/api/snapmint/snapmint_order/order_failure/",
};
// 将 Map 转换为 JSON 字符串
String jsonString = jsonEncode(jsonData);
print(jsonString);
return jsonString; // 输出 JSON 字符串
}
}
更多关于Flutter集成Snapmint服务插件flutter_snapmint_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Snapmint服务插件flutter_snapmint_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
要在Flutter应用中集成Snapmint服务插件 flutter_snapmint_sdk
,你可以按照以下步骤进行操作:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_snapmint_sdk
依赖。
dependencies:
flutter:
sdk: flutter
flutter_snapmint_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 Snapmint SDK
在你的 Flutter 应用中初始化 Snapmint SDK。通常,你可以在 main.dart
文件中进行初始化。
import 'package:flutter/material.dart';
import 'package:flutter_snapmint_sdk/flutter_snapmint_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Snapmint SDK
await SnapmintSdk.initialize(
apiKey: 'YOUR_API_KEY', // 替换为你的 Snapmint API Key
environment: SnapmintEnvironment.sandbox, // 使用沙盒环境或生产环境
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Snapmint Demo',
home: HomeScreen(),
);
}
}
3. 使用 Snapmint SDK
在你的应用中使用 Snapmint SDK 提供的功能。例如,你可以启动 Snapmint 的支付流程。
import 'package:flutter/material.dart';
import 'package:flutter_snapmint_sdk/flutter_snapmint_sdk.dart';
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Snapmint Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
try {
// 启动 Snapmint 支付流程
final result = await SnapmintSdk.startPayment(
orderId: 'ORDER_ID', // 替换为你的订单 ID
amount: 1000, // 替换为订单金额
customerName: 'John Doe', // 替换为客户名称
customerPhone: '1234567890', // 替换为客户电话
customerEmail: 'john.doe@example.com', // 替换为客户邮箱
);
// 处理支付结果
if (result.status == SnapmintPaymentStatus.success) {
print('Payment successful');
} else {
print('Payment failed: ${result.message}');
}
} catch (e) {
print('Error: $e');
}
},
child: Text('Start Payment'),
),
),
);
}
}
4. 处理支付结果
在 startPayment
方法中,你可以处理支付结果。SnapmintPaymentResult
对象包含了支付的状态和消息。
final result = await SnapmintSdk.startPayment(
orderId: 'ORDER_ID',
amount: 1000,
customerName: 'John Doe',
customerPhone: '1234567890',
customerEmail: 'john.doe@example.com',
);
if (result.status == SnapmintPaymentStatus.success) {
print('Payment successful');
} else {
print('Payment failed: ${result.message}');
}
5. 配置 Android 和 iOS
确保你的 Android 和 iOS 项目已经正确配置了 Snapmint SDK 所需的权限和设置。
Android
在 android/app/build.gradle
文件中,确保你启用了 multidex
并添加了必要的依赖。
android {
defaultConfig {
multiDexEnabled true
}
}
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
iOS
在 ios/Podfile
文件中,确保你添加了必要的依赖。
platform :ios, '11.0'
target 'Runner' do
use_frameworks!
# Pods for Runner
pod 'SnapmintSDK', '~> 1.0.0' # 请使用最新版本
end