Flutter全能开发插件tonder_sdk_full的使用

Flutter全能开发插件tonder_sdk_full的使用

Tonder Full SDK 帮助你在自己的 Flutter 应用程序中集成 Tonder 提供的服务。

安装

  1. 运行以下命令:

    flutter pub get full_sdk
    
  2. android/build.gradle 文件中添加以下内容:

    maven {
        url 'https://maven.pkg.github.com/skyflowapi/skyflow-android-sdk'
        credentials {
            username = 'username'
            password = 'password'
        }
    }
    
  3. android.gradle.properties 文件中添加以下内容:

    android.useAndroidX=true
    

示例代码

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

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final TonderFullSDK _fullPlugin = TonderFullSDK();

  [@override](/user/override)
  void initState() {
    super.initState();
    if (_fullPlugin != null) _fullPlugin.removeCheckout();

    const apiKey = "00d17d61e9240c6e0611fbdb1558e636ed6389db";
    const returnUrl = "http://localhost:8100/tabs/tab2";

    _fullPlugin = InlineCheckout(
      platforms: null,
      apiKeyTonder: apiKey,
      returnUrl: returnUrl,
      successUrl: returnUrl,
      renderPaymentButton: false,
    );

    Map<String, dynamic> customerData = {
      "customer": {
        "firstName": "Pedro",
        "lastName": "Perez",
        "country": "Finlandia",
        "street": "The street",
        "city": "The city",
        "state": "The state",
        "postCode": "22222",
        "email": "mail@gmail.com",
        "phone": "53453453453"
      },
      "cart": {
        "total": 250,
        "items": [
          {
            "description": "Test product description",
            "quantity": 1,
            "price_unit": 250,
            "discount": 25,
            "taxes": 12,
            "product_reference": 12,
            "name": "Test product",
            "amount_total": 250
          }
        ]
      }
    };

    _fullPlugin.setPaymentData(customerData);
    _fullPlugin.setCartTotal(0);
    _fullPlugin.setCustomerEmail("mail@gmail.com");

    // 注入支付表单
    Future<void> injectCheckout() async {
      await _fullPlugin.injectCheckout();
    }

    // 验证 3DS 交易
    Future<Map<String, dynamic>>? verify3dsTransaction() async {
      return await _fullPlugin.verify3dsTransaction();
    }

    injectCheckout().then((_) {
      verify3dsTransaction().then((Map<String, dynamic>? response) {
        if (response != null) {
          if (response["status"] == "Success") {
            // 成功处理逻辑
          } else if (response["status"] == "Failed") {
            // 失败处理逻辑
          }
        }
        setState(() {});
      });
    });

    // 构建 UI
    return Scaffold(
      body: SizedBox(
        height: 1200,
        child: _fullPlugin.cardTemplate ?? Text("Loading card template"),
      ),
    );
  }
}

更多关于Flutter全能开发插件tonder_sdk_full的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter全能开发插件tonder_sdk_full的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


tonder_sdk_full 是一个为 Flutter 开发者提供的全能开发插件,旨在简化开发流程,提供丰富的功能模块,帮助开发者快速构建高质量的 Flutter 应用。以下是关于如何使用 tonder_sdk_full 插件的详细指南。

1. 安装插件

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

dependencies:
  flutter:
    sdk: flutter
  tonder_sdk_full: ^1.0.0  # 请使用最新版本

然后,运行 flutter pub get 来安装插件。

2. 初始化 SDK

在使用 tonder_sdk_full 之前,你需要在应用的入口处初始化 SDK。通常,你可以在 main.dart 文件中进行初始化。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Tonder SDK
  await TonderSDK.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    environment: Environment.production,  // 选择环境:production 或 sandbox
  );
  
  runApp(MyApp());
}

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

3. 使用 SDK 功能模块

tonder_sdk_full 提供了多个功能模块,开发者可以根据需求调用相应的模块。以下是几个常用的功能模块示例:

3.1 用户认证

import 'package:tonder_sdk_full/tonder_sdk_full.dart';

class MyHomePage extends StatelessWidget {
  Future<void> _login() async {
    try {
      final user = await TonderSDK.auth.login(
        email: 'user@example.com',
        password: 'password',
      );
      print('User logged in: ${user.id}');
    } catch (e) {
      print('Login failed: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Tonder SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _login,
          child: Text('Login'),
        ),
      ),
    );
  }
}

3.2 数据存储

import 'package:tonder_sdk_full/tonder_sdk_full.dart';

class MyHomePage extends StatelessWidget {
  Future<void> _saveData() async {
    try {
      await TonderSDK.storage.save(
        key: 'myKey',
        value: 'myValue',
      );
      print('Data saved successfully');
    } catch (e) {
      print('Failed to save data: $e');
    }
  }

  Future<void> _loadData() async {
    try {
      final value = await TonderSDK.storage.load(key: 'myKey');
      print('Loaded data: $value');
    } catch (e) {
      print('Failed to load data: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Tonder SDK Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _saveData,
              child: Text('Save Data'),
            ),
            ElevatedButton(
              onPressed: _loadData,
              child: Text('Load Data'),
            ),
          ],
        ),
      ),
    );
  }
}

3.3 网络请求

import 'package:tonder_sdk_full/tonder_sdk_full.dart';

class MyHomePage extends StatelessWidget {
  Future<void> _fetchData() async {
    try {
      final response = await TonderSDK.network.get('https://api.example.com/data');
      print('Response data: ${response.data}');
    } catch (e) {
      print('Failed to fetch data: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Tonder SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _fetchData,
          child: Text('Fetch Data'),
        ),
      ),
    );
  }
}

4. 错误处理

在使用 tonder_sdk_full 时,可能会遇到各种错误。建议在使用每个功能模块时,使用 try-catch 块来捕获和处理异常。

try {
  // 调用 SDK 功能
} catch (e) {
  print('Error: $e');
  // 处理错误
}

5. 释放资源

在某些情况下,你可能需要释放 SDK 占用的资源。你可以在应用退出时调用 TonderSDK.dispose() 来释放资源。

[@override](/user/override)
void dispose() {
  TonderSDK.dispose();
  super.dispose();
}
回到顶部