Flutter集成Sadad支付插件sadad_flutter_sdk的使用

Flutter集成Sadad支付插件sadad_flutter_sdk的使用

一个用于将Sadad支付SDK集成到你的Flutter应用中的插件。
该插件为原生的Sadad支付SDK提供了一个封装,使你能够在Flutter项目中使用它们。

开始使用

要在一个项目中使用Sadad Flutter插件,你需要创建一个Sadad账户并将其后端集成到系统中。以下是步骤:

  1. 创建一个Sadad账户,并获取merchantIdsecretKey
  2. 按照Sadad提供的集成指南将Sadad后端集成到你的系统中。
  3. 通过调用后端的适当API端点从Sadad服务器获取交易令牌。

一旦你获得了交易令牌,你就可以开始使用了。


![](https://raw.githubusercontent.com/a3bd2lra7man/sadad_flutter_sdk/main/ezgif.com-optimize.gif)

使用方法

  1. pubspec.yaml文件中添加sadad_flutter_sdk依赖:
dependencies:
  sadad_flutter_sdk: ^0.0.5
  1. 在代码中导入包:
import 'package:sadad_flutter_sdk/sadad_flutter_sdk.dart';
  1. 创建一个包含必要参数的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获取的令牌。

  1. 调用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_sdksadad_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

1 回复

更多关于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密钥。
  • 根据实际环境(沙盒或生产)配置相应的环境参数。
  • 处理支付结果时要确保安全性,避免支付信息泄露。

这个示例代码提供了一个基本的框架,你可能需要根据具体的业务需求进行调整和扩展。

回到顶部