Flutter埃塞俄比亚货币转换插件flutter_telebirr的使用

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

Flutter埃塞俄比亚货币转换插件flutter_telebirr的使用

1. 插件简介

flutter_telebirr 是一个用于集成Telebirr支付API的Flutter SDK。通过这个插件,你可以轻松地在Flutter应用中实现Telebirr支付功能。

2. 功能特性

  • 获取支付URL:通过Telebirr SDK API获取支付URL (toPayUrl),用户可以通过该URL完成支付。

3. 入门指南

3.1 必要的密钥

为了使用此插件,你需要从Telebirr获取以下密钥:

  • appId: 应用ID
  • appKey: 应用密钥
  • publicKey: 公钥
  • test url: 测试模式下的URL(可选)
3.2 添加依赖

在你的 pubspec.yaml 文件中添加 flutter_telebirr 依赖:

dependencies:
  flutter_telebirr: ^0.0.4
3.3 配置网络权限

为了让应用能够访问Telebirr API,你需要为Android和iOS配置网络权限。

3.3.1 Android

AndroidManifest.xml 文件中添加以下权限:

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

如果你需要使用Telebirr的测试URL,请确保在 application 标签中添加以下属性:

<application ... android:usesCleartextTraffic="true">
3.3.2 iOS

Info.plist 文件中添加以下内容:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

4. 使用方法

4.1 配置Telebirr支付

在使用Telebirr支付之前,你需要先进行配置。如果使用测试模式,请确保传递Telebirr提供的测试URL,并且不要在URL末尾包含 /toTradeSDKPay,而是使用如下格式:http://<IP>:<PORT>/service-openup

import 'package:flutter_telebirr/flutter_telebirr.dart';

void configureTelebirr() {
  TelebirrPayment.instance.configure(
    publicKey: 'your_public_key',
    appId: '<appId>',
    appKey: "<appKey>",
    notifyUrl: "https://localhost/notifyUrl", // 回调URL
    shortCode: "<shortCode>", // 商户短码
    merchantDisplayName: "Organization name", // 商户显示名称
    mode: Mode.test, // 设置为测试模式
    testUrl: 'http://<IP>:<PORT>/service-openup', // 测试URL
  );
}
4.2 发起支付

配置完成后,你可以通过调用 startPayment 方法发起支付请求,并传递商品名称和总金额。

Future<void> startPayment() async {
  try {
    final response = await TelebirrPayment.instance.startPayment(
      itemName: "Goods name", // 商品名称
      totalAmount: "10", // 总金额
    );

    if (response != null && response.isSuccess) {
      // 支付成功,获取支付URL
      String toPayUrl = response.data?.toPayUrl ?? '';
      print('支付URL: $toPayUrl');

      // 你可以使用WebView或其他方式加载支付URL
      // 例如:
      // launchUrl(Uri.parse(toPayUrl));
    } else {
      print('支付失败: ${response.message}');
    }
  } catch (e) {
    print('支付过程中发生错误: $e');
  }
}
4.3 完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中集成Telebirr支付功能。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Telebirr Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Home(),
    );
  }
}

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

class _HomeState extends State<Home> {
  [@override](/user/override)
  void initState() {
    super.initState();
    // 配置Telebirr支付
    configureTelebirr();
  }

  void configureTelebirr() {
    TelebirrPayment.instance.configure(
      publicKey: 'your_public_key',
      appId: '<appId>',
      appKey: "<appKey>",
      notifyUrl: "https://localhost/notifyUrl",
      shortCode: "<shortCode>",
      merchantDisplayName: "Organization name",
      mode: Mode.test,
      testUrl: 'http://<IP>:<PORT>/service-openup',
    );
  }

  Future<void> startPayment() async {
    try {
      final response = await TelebirrPayment.instance.startPayment(
        itemName: "Goods name",
        totalAmount: "10",
      );

      if (response != null && response.isSuccess) {
        String toPayUrl = response.data?.toPayUrl ?? '';
        print('支付URL: $toPayUrl');

        // 你可以使用WebView或其他方式加载支付URL
        // 例如:
        // launchUrl(Uri.parse(toPayUrl));
      } else {
        print('支付失败: ${response.message}');
      }
    } catch (e) {
      print('支付过程中发生错误: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Telebirr支付示例'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: startPayment,
          child: Text('发起支付'),
        ),
      ),
    );
  }
}

更多关于Flutter埃塞俄比亚货币转换插件flutter_telebirr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter埃塞俄比亚货币转换插件flutter_telebirr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,我可以为你提供一个关于如何在Flutter应用中使用flutter_telebirr插件进行埃塞俄比亚货币转换的代码案例。flutter_telebirr插件允许你获取埃塞俄比亚比尔(ETB)与其他货币的汇率并进行转换。

首先,确保你已经在pubspec.yaml文件中添加了flutter_telebirr依赖:

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

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

以下是一个简单的Flutter应用示例,展示如何使用flutter_telebirr插件获取汇率并进行货币转换:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? _fromCurrencyCode;
  String? _toCurrencyCode;
  double? _amount;
  double? _convertedAmount;
  String? _error;

  final TelebirrClient _telebirrClient = TelebirrClient();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Ethiopian Birr Currency Converter'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              TextField(
                decoration: InputDecoration(labelText: 'From Currency Code'),
                keyboardType: TextInputType.text,
                onChanged: (value) {
                  setState(() {
                    _fromCurrencyCode = value;
                  });
                },
              ),
              SizedBox(height: 16),
              TextField(
                decoration: InputDecoration(labelText: 'To Currency Code'),
                keyboardType: TextInputType.text,
                onChanged: (value) {
                  setState(() {
                    _toCurrencyCode = value;
                  });
                },
              ),
              SizedBox(height: 16),
              TextField(
                decoration: InputDecoration(labelText: 'Amount'),
                keyboardType: TextInputType.number,
                onChanged: (value) {
                  setState(() {
                    _amount = double.tryParse(value);
                  });
                },
              ),
              SizedBox(height: 32),
              ElevatedButton(
                onPressed: () async {
                  setState(() {
                    _error = null;
                    _convertedAmount = null;
                  });

                  if (_fromCurrencyCode == null || _toCurrencyCode == null || _amount == null) {
                    setState(() {
                      _error = 'All fields are required.';
                    });
                    return;
                  }

                  try {
                    final rate = await _telebirrClient.getExchangeRate(_fromCurrencyCode!, _toCurrencyCode!);
                    setState(() {
                      _convertedAmount = _amount! * rate;
                    });
                  } catch (e) {
                    setState(() {
                      _error = e.toString();
                    });
                  }
                },
                child: Text('Convert'),
              ),
              SizedBox(height: 16),
              if (_error != null) Text(
                'Error: $_error',
                style: TextStyle(color: Colors.red),
              ),
              if (_convertedAmount != null) Text(
                '${_amount!} $_fromCurrencyCode! = ${_convertedAmount!.toStringAsFixed(2)} $_toCurrencyCode!',
                style: TextStyle(fontSize: 20),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,允许用户输入货币代码和金额,并通过点击“Convert”按钮来获取汇率并进行转换。TelebirrClientgetExchangeRate方法用于获取两种货币之间的汇率。

注意:

  1. 你需要确保网络连接正常,因为flutter_telebirr插件需要从远程服务器获取汇率数据。
  2. 汇率数据可能会随时间变化,因此转换结果可能不是实时的。
  3. 插件的具体实现和API可能会随着版本更新而变化,请参考最新的flutter_telebirr文档以获取最新的使用方法。
回到顶部