Flutter支付集成插件skypay_sdk的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter支付集成插件skypay_sdk的使用

关于

SkyPay 是由 SkyBase Innovations 提供的尼泊尔综合支付网关解决方案。它简化了集成流程,提升了开发效率,降低了成本,并减少了技术挑战。SkyPay 提供多种选项,如手动输入、商户 API 和 SkyPay 管理,使在线支付更加便捷,尤其对开发者非常友好。它还支持多种支付方式,包括 Khalti,避免了单独与各银行集成的需求。

前置条件

  1. 创建您的 免费商户账户商户注册页面
  2. 从仪表盘提供的链接下载并设置 商户应用
  3. 复制您在仪表盘页面上提供的 API 密钥

开始使用

导入 Skypay SDK 包

要开始使用 Skypay SDK,请将其包导入到您的 Flutter 项目中。在您打算使用 Skypay 的 Dart 文件顶部添加以下导入语句:

import 'package:skypay_sdk/skypay_sdk.dart';

创建用于 SDK 导航的 Navigator Key

您创建的 navigator key 将专门用于 Flutter 应用程序中的 Skypay SDK 导航。在 main.dart 文件中,创建一个 navigatorKey,如下所示:

class SkyPayDemoApp extends StatefulWidget {
  final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
  SkyPayDemoApp({super.key});
}

将 SDK Navigator Key 传递给 MaterialApp

将您为 SDK 创建的 navigatorKey 集成到 MaterialApp 中。这允许您在整个应用程序中控制特定于 Skypay SDK 的导航。更新您的 MaterialApp 如下:

return MaterialApp(
      navigatorKey: widget.navigatorKey,
    );

从 Skypay 仪表盘获取 API 密钥

导航到您的 Skypay 仪表盘,并从 <code>'My Profile'</code> 部分复制 API 密钥。

初始化 Skypay 配置

为了正确设置 Skypay,请在应用程序的开头包含此代码。具体来说,在主 Dart 文件 (main.dart) 或 Flutter 应用程序的主要入口点中放置它。

[@override](/user/override)
void initState() {

  // 提供 navigatorKey(将 'YOUR_NAVIGATOR_KEY' 替换为实际的 navigatorKey)

  Skypay.initConfig(
      navigatorKey: 'YOUR_NAVIGATOR_KEY', 
      apiKey: 'YOUR_API_KEY_HERE',
      );
  super.initState();
}

<code>'YOUR_API_KEY_HERE'</code> 替换为从您的 Skypay 仪表盘获取的实际 API 密钥。

初始化支付

要发起支付,请使用以下代码片段:

Skypay.initPayment(
    orderId: "Your_UNIQUE_Order_ID",
    amount: "Amount In Rupees",
    onSuccess: (data) {
        // 成功事件处理
    },
    onFailure: (data) {
        // 失败事件处理
    },
    onCancellation: () {
        // 取消事件处理
    },
);

<code>"Your_UNIQUE_Order_ID"</code> 替换为您唯一的订单标识符。

<code>"Amount In Rupees"</code> 替换为您所需的交易金额(以卢比为单位)。

参数

参数 是否必需 描述
amount 交易金额
success_url 支付成功时重定向的 URL
failure_url 支付失败时重定向的 URL
order_id 订单唯一标识符

回调

在 Skypay 支付网关集成中,您可以利用回调函数来处理不同的交易结果。这些回调函数对于管理各种场景(如成功交易、失败交易和用户主动取消)至关重要。

onSuccess 回调

  • <code>onSuccess</code> 回调是在交易成功完成时触发的。当交易成功时会调用此函数,允许您执行与成功交易相关的特定任务或操作。

onFailure 回调

  • <code>onFailure</code> 回调在交易遇到问题且未能完成时触发。此回调函数负责管理失败的交易,为您提供处理错误情况、记录详细信息或采取适当措施的能力。

onCancel 回调

  • <code>onCancel</code> 回调在用户决定在交易完成前取消付款时触发。此回调函数允许您管理取消事件,例如返回用户到特定屏幕或提供取消确认。

这些回调函数对于确保应用程序中无缝且友好的支付体验至关重要。您可以根据具体需求和用户交互自定义每个回调。

结论

本指南涵盖了使用 Skypay SDK 进行集成的基本步骤。您已经了解了如何初始化配置、设置导航以及利用回调函数处理交易结果。

希望这份文档能帮助您顺利将 Skypay SDK 集成到您的 Flutter 应用程序中。

有关 Skypay 初始化的更多详细信息,请参阅 Skypay 文档


示例代码

以下是完整的示例代码,展示了如何使用 Skypay SDK:

import 'package:flutter/material.dart';
import 'package:skypay_sdk/skypay_sdk.dart';

void main() {
  runApp(SkyPayDemoApp());
}

class SkyPayDemoApp extends StatefulWidget {
  final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); // Navigator Key
  final String apiKey = "865773771"; // API Key

  SkyPayDemoApp({super.key});

  [@override](/user/override)
  State<SkyPayDemoApp> createState() => _SkyPayDemoAppState();
}

class _SkyPayDemoAppState extends State<SkyPayDemoApp> {
  String? message;
  bool isError = false;

  [@override](/user/override)
  void initState() {
    // 初始化 Skypay 配置
    Skypay.initConfig(navigatorKey: widget.navigatorKey, apiKey: widget.apiKey);
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    var size = MediaQuery.of(context).size;
    return MaterialApp(
      navigatorKey: widget.navigatorKey,
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.all(12.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              const Spacer(),
              Center(
                child: ElevatedButton(
                  onPressed: _makePayment,
                  child: const Text("Pay with Skypay"),
                ),
              ),
              const SizedBox(
                height: 20,
              ),
              SizedBox(
                height: size.height / 2,
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    const Text(
                      "Result",
                      style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
                    ),
                    const SizedBox(
                      height: 12,
                    ),
                    Text(
                      message ?? "No Result",
                      style: TextStyle(
                        color: isError ? Colors.red : Colors.black,
                      ),
                    ),
                  ],
                ),
              )
            ],
          ),
        ),
      ),
    );
  }

  void _makePayment() {
    // 初始化支付
    Skypay.initPayment(
      orderId: "123459",
      amount: 100,
      onSuccess: (data) {
        print(data);
        // 支付成功
        setState(() {
          message = data.toString();
          isError = false;
        });
      },
      onFailure: (data) {
        print(data);
        // 支付失败
        setState(() {
          message = data.toString();
          isError = true;
        });
      },
      onCancel: () {
        // 支付取消
        setState(() {
          message = "Payment Cancelled";
          isError = true;
        });
      },
    );
  }
}

更多关于Flutter支付集成插件skypay_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付集成插件skypay_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


skypay_sdk 是一个用于 Flutter 的支付集成插件,通常用于处理支付相关的功能,如支付、退款、查询等。以下是使用 skypay_sdk 插件的基本步骤和示例代码。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 skypay_sdk 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  skypay_sdk: ^1.0.0  # 请根据实际情况填写版本号

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在使用 skypay_sdk 之前,通常需要先初始化 SDK。你可以在 main.dart 或其他合适的地方进行初始化。

import 'package:skypay_sdk/skypay_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 SkyPay SDK
  await SkyPaySdk.init(
    appId: 'YOUR_APP_ID',
    appKey: 'YOUR_APP_KEY',
    env: SkyPayEnvironment.SANDBOX,  // 使用沙盒环境进行测试
  );

  runApp(MyApp());
}

3. 发起支付

在需要发起支付的地方,调用 SkyPaySdk.pay 方法。

import 'package:skypay_sdk/skypay_sdk.dart';

void initiatePayment() async {
  try {
    final result = await SkyPaySdk.pay(
      orderId: 'ORDER_ID',  // 订单号
      amount: 100,  // 金额,单位为分
      subject: 'Test Payment',  // 支付主题
      body: 'This is a test payment',  // 支付描述
    );

    if (result['status'] == 'success') {
      print('Payment successful: ${result['transactionId']}');
    } else {
      print('Payment failed: ${result['message']}');
    }
  } catch (e) {
    print('Error occurred: $e');
  }
}

4. 处理支付结果

支付结果通常会通过回调返回。你可以根据返回的状态码或消息来更新 UI 或进行其他操作。

void handlePaymentResult(Map<String, dynamic> result) {
  if (result['status'] == 'success') {
    // 更新 UI 或进行其他操作
    print('Payment successful: ${result['transactionId']}');
  } else {
    // 处理支付失败的情况
    print('Payment failed: ${result['message']}');
  }
}

5. 其他功能

skypay_sdk 可能还提供了其他功能,如退款、查询订单等。你可以查阅 SDK 的文档来了解如何使用这些功能。

void refundPayment() async {
  try {
    final result = await SkyPaySdk.refund(
      transactionId: 'TRANSACTION_ID',  // 交易ID
      amount: 100,  // 退款金额
    );

    if (result['status'] == 'success') {
      print('Refund successful: ${result['refundId']}');
    } else {
      print('Refund failed: ${result['message']}');
    }
  } catch (e) {
    print('Error occurred: $e');
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!