Flutter集成Sadad支付插件sadad_flutter_sdk的使用
Flutter集成Sadad支付插件sadad_flutter_sdk的使用
一个用于将Sadad支付SDK集成到你的Flutter应用中的插件。
该插件为原生的Sadad支付SDK提供了一个封装,使你能够在Flutter项目中使用它们。
开始使用
要在一个项目中使用Sadad Flutter插件,你需要创建一个Sadad账户并将其后端集成到系统中。以下是步骤:
- 创建一个Sadad账户,并获取
merchantId
和secretKey
。 - 按照Sadad提供的集成指南将Sadad后端集成到你的系统中。
- 通过调用后端的适当API端点从Sadad服务器获取交易令牌。
一旦你获得了交易令牌,你就可以开始使用了。

使用方法
- 在
pubspec.yaml
文件中添加sadad_flutter_sdk
依赖:
dependencies:
sadad_flutter_sdk: ^0.0.5
- 在代码中导入包:
import 'package:sadad_flutter_sdk/sadad_flutter_sdk.dart';
- 创建一个包含必要参数的
SadadTransaction
对象:
var transaction = SadadTransaction(
email: "a3bd2llah@gmail.com",
mobileNumber: "97431487378",
customerId: "123456789",
clientToken: "put the obtained token here", // 请替换为获取到的令牌
transactionAmount: "10000.0",
orderItems: [const SadadOrderItem(name: "top up", quantity: 1, amount: 10000)],
orderId: "123456789",
);
注意:clientToken
是从Sadad获取的令牌。
- 调用
createTransaction
方法以启动支付过程:
String result;
final sadadFlutterSdkPlugin = SadadFlutterSdk();
try {
result = await _sadadFlutterSdkPlugin.createTransaction(transaction) ?? 'null';
} on PlatformException {
result = 'Platform Exception';
}
结果应包含事务编号(如果事务成功或失败)。然而,在某些情况下,结果可能是空的:
- 如果API调用出现错误,结果可能为空。
- 如果事务数据格式不正确,结果可能为空。
- 如果用户取消了交易,结果可能为空。
现在,你已经在Flutter应用中集成了Sadad SDK。
注意事项
请注意,由于Sadad SDK的限制,Sadad Flutter SDK插件在iOS模拟器上无法运行。如果你需要在iOS模拟器上测试你的应用,可以使用sadad_flutter_ios_simulator
插件,它提供了在iOS模拟器上进行Sadad支付集成的模拟环境。
要使用sadad_flutter_ios_simulator
插件,可以使用与这里提供的相同示例代码,但需要导入以下内容:
import 'package:sadad_flutter_ios_simulator/sadad_flutter_ios_simulator.dart';
注意:如果你在同一时间在应用中同时使用sadad_flutter_sdk
和sadad_flutter_ios_simulator
两个包,可能会导致iOS上的包命名冲突错误。因此,根据你的测试和部署需求,只能选择其中一个包来使用。
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:sadad_flutter_sdk/sadad_flutter_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 _sadadResponse = 'did not start yet';
[@override](/user/override)
void initState() {
super.initState();
startSadadTransaction();
}
Future<void> startSadadTransaction() async {
String result;
final _sadadFlutterSdkPlugin = SadadFlutterSdk();
var transaction = SadadTransaction(
email: "a3bd2llah@gmail.com",
mobileNumber: "97431487378",
customerId: "123456789",
clientToken: "put your token here", // 请替换为获取到的令牌
transactionAmount: "10000.0",
orderItems: [const SadadOrderItem(name: "top up", quantity: 1, amount: 10000)],
orderId: "123456789",
);
try {
result = await _sadadFlutterSdkPlugin.createTransaction(transaction) ?? 'null';
} on PlatformException {
result = 'Platform Exception';
}
if (!mounted) return;
setState(() {
_sadadResponse = result;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Text('Sadad结果是: $_sadadResponse\n'),
),
),
);
}
}
更多关于Flutter集成Sadad支付插件sadad_flutter_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Sadad支付插件sadad_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成Sadad支付插件 sadad_flutter_sdk
的代码示例。这个示例将展示如何设置插件、初始化支付环境、发起支付请求以及处理支付结果。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 sadad_flutter_sdk
插件的依赖。
dependencies:
flutter:
sdk: flutter
sadad_flutter_sdk: ^最新版本号 # 替换为实际的最新版本号
然后运行 flutter pub get
来获取依赖。
2. 配置 Android
在 android/app/src/main/AndroidManifest.xml
文件中,确保你有以下权限和配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
...
>
<!-- 其他配置 -->
<meta-data
android:name="com.sadadpayment.SDK_KEY"
android:value="你的Sadad SDK密钥" />
</application>
3. 配置 iOS
在 ios/Runner/Info.plist
文件中,你可能需要添加一些必要的权限,具体取决于你的应用需求。此外,确保在 ios/Podfile
中正确配置了依赖。
4. 初始化插件并发起支付请求
在你的 Flutter 代码中,你可以这样初始化并使用 sadad_flutter_sdk
插件:
import 'package:flutter/material.dart';
import 'package:sadad_flutter_sdk/sadad_flutter_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Sadad Payment Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 初始化Sadad SDK
await SadadFlutterSdk.initialize(
merchantId: '你的商户ID',
environment: 'SANDBOX', // 或者 'PRODUCTION'
language: 'AR', // 或者 'EN'
returnUrl: '你的回调URL'
);
// 发起支付请求
try {
var result = await SadadFlutterSdk.startPayment(
amount: '100.00', // 支付金额
currencyCode: 'SAR', // 货币代码
referenceNumber: '唯一订单号', // 订单号
description: '商品描述', // 商品描述
buyerEmail: '买家邮箱', // 买家邮箱
buyerPhone: '买家电话', // 买家电话
);
// 处理支付结果
if (result.status == 'SUCCESS') {
print('支付成功');
// 显示支付成功界面或执行其他逻辑
} else if (result.status == 'FAILURE') {
print('支付失败');
// 显示支付失败界面或执行其他逻辑
} else if (result.status == 'PENDING') {
print('支付待确认');
// 显示支付待确认界面或执行其他逻辑
}
} catch (e) {
print('支付过程中发生错误: $e');
}
},
child: Text('发起支付'),
),
),
),
);
}
}
5. 处理回调
在Sadad支付完成后,用户会被重定向到你提供的 returnUrl
。你需要在该URL对应的页面上处理支付回调结果,这通常涉及到解析Sadad提供的支付结果参数,并更新你的订单状态。
注意事项
- 确保你已经在Sadad支付平台注册并获取了必要的商户ID和SDK密钥。
- 根据实际环境(沙盒或生产)配置相应的环境参数。
- 处理支付结果时要确保安全性,避免支付信息泄露。
这个示例代码提供了一个基本的框架,你可能需要根据具体的业务需求进行调整和扩展。