Flutter集成Kuda开放平台插件kudaopenapi的使用

Flutter集成Kuda开放平台插件kudaopenapi的使用

目标

开始使用

在您的产品中启用本地交易。通过KudaOpenAPI,您可以将服务嵌入到您的平台上,并连接客户到广泛的银行服务。

在继续之前,请确保您拥有一个Kuda商业账户。您可以通过链接此账户来获得批准进行实时操作。

开发者仪表盘获取您的令牌。

安装

要使用此插件,请在您的pubspec.yaml文件中添加kudaopenapi作为依赖项。

然后,在您的小部件的initState中初始化插件。

import 'package:kudaopenapi/kudaopenapi.dart';

class _MyHomePageState extends State<MyHomePage> {
  var baseurl = 'TEST_OR_LIVE_URL';
  var email = 'EMAIL';
  var apikey = 'APIKEY';

  @override
  void initState() {
    ApiService.initialize(baseurl, email, apikey);
    super.initState();
  }
}

无需其他配置,插件即可开箱即用。

使用

发起请求

使用以下方式发起请求:

String trackingReference = Random().nextInt(100000).toString();

Map<String, dynamic> data = {
  'ClientAccountNumber': "00000000000",
  'beneficiarybankCode': "000014",
  'beneficiaryAccount': "000000000000",
  'beneficiaryName': "GIFT IWOKURA BALOGUN",
  'amount': "5000",
  'narration': "Payment Flutter",
  'nameEnquirySessionID': "00000000000000000",
  'trackingReference': Random().nextInt(100000).toString(),
  'senderName': "Gift Balogun",
}; //发送数据的格式

String requestRef = Random().nextInt(100000).toString();

获取银行列表

import 'package:kudaopenapi/kudaopenapi.dart';

@override
Widget build(BuildContext context) {
  return MaterialApp(
    home: Scaffold(
        appBar: AppBar(title: const Text("Kuda Get Bank API")),
        body: FutureBuilder<BankResponse>(
          future: KudaBank().getBankList(requestRef),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                itemCount: snapshot.data!.data!.banks.length,
                itemBuilder: (context, index) {
                  return ListTile(
                    leading: const Icon(Icons.list),
                    trailing: Text(
                      snapshot.data!.data!.banks[index].bankCode.toString(),
                      style: TextStyle(color: Colors.green, fontSize: 15),
                    ),
                    title: Text(
                      snapshot.data!.data!.banks[index].bankName.toString(),
                    ),
                  );
                },
              );
            } else if (snapshot.hasError) {
              return Text(snapshot.error.toString());
            }
            return CircularProgressIndicator();
          },
        )
      ),
  );
}

获取账户详情

import 'package:kudaopenapi/kudaopenapi.dart';

class _MyHomePageState extends State<MyHomePage> {
  var baseurl = '';
  var email = '';
  var apikey = '';

  @override
  void initState() {
    ApiService.initialize(baseurl, email, apikey);
    super.initState();
  }

  String trackingReference = Random().nextInt(100000).toString();

  // 设置请求数据
  Map<String, dynamic> data = {
    'beneficiaryAccountNumber': '1413800836',
    'beneficiaryBankCode': '000014',
    'SenderTrackingReference': '',
    'isRequestFromVirtualAccount': true,
  };

  String requestRef = Random().nextInt(100000).toString();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Kuda Name Inquiry API")),
      body: Center(
        child: FutureBuilder(
          future: KudaBank().name_inquiry(data, requestRef),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else {
                var something = snapshot.data.data!;
                return Text('sessionID: ${something.nameInquiry!.sessionID}');
              }
            } else {
              return CircularProgressIndicator();
            }
          },
        ),
      ),
    );
  }
}

获取虚拟账户详情

import 'package:kudaopenapi/kudaopenapi.dart';

@override
Widget build(BuildContext context) {
  return Scaffold(
      appBar: AppBar(title: const Text("KudaOpenApi-Retrieve")),
      body: Center(
        child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [
          FutureBuilder(
            future: KudaBank().retrieve_virtual_account(data, requestRef),
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                if (snapshot.hasError) {
                  return Text('Error: ${snapshot.error}');
                } else {
                  var something = snapshot.data.data!;
                  return Column(
                    children: [
                      Text('AccountNumber: ${something!.rvirtualAccount!.accountnumber!}'),
                      Text('Email.: ${something!.rvirtualAccount!.email}'),
                      Text('Phone Number.: ${something!.rvirtualAccount!.phonenumber}'),
                      Text('AccountName.: ${something!.rvirtualAccount!.accountname}'),
                      Text('Fullname.: ${something!.rvirtualAccount!.firstname}'),
                      Text('Tracking Ref.: ${something!.rvirtualAccount!.trackingref}'),
                    ],
                  );
                }
              } else {
                return CircularProgressIndicator();
              }
            },
          ),
        ]
      ),
    ),
  );
}

获取Kuda提供的礼品卡列表

Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(title: const Text('Gift Cards')),
    body: FutureBuilder<GiftCardResponse>(
      future: KudaGiftCard().list_gift_cards(requestRef),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(child: CircularProgressIndicator());
        } else if (snapshot.hasError) {
          return Center(child: Text('Error: ${snapshot.error}'));
          
        } else if (!snapshot.hasData || snapshot.data!.data.giftItems.isEmpty) {
          return Center(child: Text('No gift cards available'));
        } else {
          return ListView.builder(
            itemCount: snapshot.data!.data.giftItems.length,
            itemBuilder: (context, index) {
              final giftCard = snapshot.data!.data.giftItems[index];
              return ListTile(
                leading: Image.network(giftCard.image),
                title: Text(giftCard.package),
                subtitle: Text('Category: ${giftCard.category}'),
                trailing: Text(
                  'Country: ${giftCard.countries.length}',
                  style: TextStyle(color: Colors.red),
                ),
                onTap: () {
                  // 处理礼品卡项点击
                },
              );
            },
          );
        }
      },
    ),
  );
}

更多关于Flutter集成Kuda开放平台插件kudaopenapi的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成Kuda开放平台插件kudaopenapi的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要在Flutter中集成Kuda开放平台的插件kudaopenapi,你可以按照以下步骤进行操作。假设你已经有一个Kuda开放平台的开发者账号,并且已经获取了必要的API密钥和终端号。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加kudaopenapi插件的依赖。假设这个插件已经在pub.dev上发布,你可以像这样添加它:

dependencies:
  flutter:
    sdk: flutter
  kudaopenapi: ^1.0.0  # 替换为实际的版本号

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

2. 初始化插件

在你的Flutter应用中,你需要初始化kudaopenapi插件。通常,这涉及到配置你的API密钥、终端号和其他必要的参数。

import 'package:kudaopenapi/kudaopenapi.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化KudaOpenAPI
  KudaOpenAPI.initialize(
    apiKey: 'your_api_key', // 你的API密钥
    terminalId: 'your_terminal_id', // 你的终端号
    environment: Environment.production, // 或者 Environment.sandbox
  );
  
  runApp(MyApp());
}

3. 使用插件进行API调用

一旦插件初始化完成,你就可以使用它来进行各种API调用。例如,假设你想获取账户余额:

import 'package:kudaopenapi/kudaopenapi.dart';

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Kuda OpenAPI Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              try {
                final response = await KudaOpenAPI.instance.getAccountBalance();
                print('Account Balance: ${response.balance}');
              } catch (e) {
                print('Error: $e');
              }
            },
            child: Text('Get Account Balance'),
          ),
        ),
      ),
    );
  }
}
回到顶部