Flutter集成NGenius SDK插件ngenius_sdk的使用

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

Flutter集成NGenius SDK插件ngenius_sdk的使用

Build pub package

A comprehensive solution for processing payments with Ngenius in your Flutter app.

动机

Ngenius Flutter SDK简化了在Flutter应用中集成Ngenius支付网关的过程,提供了无缝支持信用卡支付、3DS和3DS2认证以及可定制UI组件。

索引

Checkout/Authorization

特性

  • 与Ngenius支付网关无缝集成
  • 支持信用卡支付
  • 支持3DS和3DS2认证
  • 可定制UI组件

开始使用

要使用此插件,请在pubspec.yaml文件中添加ngenius_sdk作为依赖项:

dependencies:
  ngenius_sdk: ^0.0.8

用法

在Dart代码中导入包:

import 'package:ngenius_sdk/ngenius_sdk.dart';

要发起支付,请使用NgeniusCheckout小部件:

NgeniusCheckout(
  apiUrl: 'YOUR_API_URL',
  apiKey: 'YOUR_API_KEY',
  outletId: 'YOUR_OUTLET_ID',
  currency: 'CURRENCY',
  amount: 'AMOUNT', // 金额以整数形式表示
  onPaymentCreated: () {
    // 处理成功的支付创建
  },
  // 可选
  onError: () {
    // 处理支付错误
  },
)

配置

确保您的项目中设置了以下权限:

Android

AndroidManifest.xml中添加互联网权限:

<uses-permission android:name="android.permission.INTERNET"/>

iOS

无需对iOS进行额外配置。

测试卡

  • 4012001037141112: 3DS激活
  • 4792445612017070: 3DS拒绝
  • 5457210001000019: 3DS2激活
  • 4000000000000002: 3DS2拒绝

已知问题

  • Amex不工作
  • 需要构建适当的错误消息显示

附加信息

有关使用Ngenius SDK的更多详细信息,请参阅官方文档

许可证

该项目受MIT许可证保护 - 详情请参阅LICENSE文件。

问题与反馈

请在我们的问题跟踪器中提交问题、错误或功能请求。

贡献

欢迎贡献!请随时提交Pull Request。

示例代码

import 'package:flutter/material.dart';
import 'package:ngenius_sdk/ngenius_sdk.dart';
import 'package:ngenius_sdk_example/config.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: Builder(
            builder: (context) => ElevatedButton(
              onPressed: () => Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (ctx) => const CheckoutScreen(),
                ),
              ),
              child: const Text("Initiate Checkout"),
            ),
          ),
        ),
      ),
    );
  }
}

class CheckoutScreen extends StatelessWidget {
  const CheckoutScreen({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return NgeniusCheckout(
      apiUrl: apiUrl,
      apiKey: apiKey,
      outletId: outletId,
      currency: currency,
      amount: amount,
      onPaymentCreated: () {
        ScaffoldMessenger.of(context).showSnackBar(
          const SnackBar(
            content: Text('Success'),
          ),
        );
        Navigator.pop(context);
      },
      // logLevel: LogLevel.all,
      // onError: () => print('An error occured'),
    );
  }
}

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

1 回复

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


在Flutter项目中集成并使用ngenius_sdk插件通常涉及几个关键步骤:添加依赖、配置项目、初始化SDK以及调用SDK提供的功能。以下是一个详细的代码案例,展示了如何在Flutter项目中集成和使用ngenius_sdk插件。

1. 添加依赖

首先,在Flutter项目的pubspec.yaml文件中添加ngenius_sdk依赖:

dependencies:
  flutter:
    sdk: flutter
  ngenius_sdk: ^latest_version  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置项目

通常,SDK插件可能需要在Info.plist(iOS)或AndroidManifest.xml(Android)中添加一些配置。根据ngenius_sdk的文档,这些配置可能包括必要的权限声明、API密钥等。这里假设你需要添加API密钥(具体配置请参考SDK文档):

iOS (Info.plist)

<key>NGeniusSDKApiKey</key>
<string>YOUR_API_KEY_HERE</string>

Android (AndroidManifest.xml)

<meta-data
    android:name="com.ngenius.sdk.API_KEY"
    android:value="YOUR_API_KEY_HERE" />

3. 初始化SDK

在你的Flutter应用的入口文件(通常是main.dart)中初始化ngenius_sdk

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化NGenius SDK
  NGeniusSDK.instance.initialize('YOUR_API_KEY_HERE').then((isInitialized) {
    if (isInitialized) {
      runApp(MyApp());
    } else {
      // 处理初始化失败的情况
      runApp(MaterialApp(
        home: Scaffold(
          body: Center(
            child: Text('SDK Initialization Failed'),
          ),
        ),
      ));
    }
  }).catchError((error) {
    // 处理初始化时发生的错误
    runApp(MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text('Error Initializing SDK: $error'),
        ),
      ),
    ));
  });
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('NGenius SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 调用SDK的功能,例如开始会话
            NGeniusSDK.instance.startSession().then((sessionId) {
              print('Session started with ID: $sessionId');
            }).catchError((error) {
              print('Error starting session: $error');
            });
          },
          child: Text('Start Session'),
        ),
      ),
    );
  }
}

4. 调用SDK功能

在上面的示例中,我们展示了如何在按钮点击时调用startSession方法。根据ngenius_sdk提供的API,你可以调用其他功能,如结束会话、发送事件等。

// 示例:结束会话
NGeniusSDK.instance.endSession().then((_) {
  print('Session ended');
}).catchError((error) {
  print('Error ending session: $error');
});

// 示例:发送事件
Map<String, dynamic> eventData = {
  'eventName': 'custom_event',
  'properties': {
    'key1': 'value1',
    'key2': 'value2',
  },
};
NGeniusSDK.instance.sendEvent(eventData).then((_) {
  print('Event sent');
}).catchError((error) {
  print('Error sending event: $error');
});

结论

以上代码案例展示了如何在Flutter项目中集成并使用ngenius_sdk插件。请确保替换YOUR_API_KEY_HERE为你的实际API密钥,并根据SDK文档调整配置和API调用。如果你遇到任何问题,请参考ngenius_sdk的官方文档或寻求其支持团队的帮助。

回到顶部