Flutter支付集成插件kkiapay_flutter_sdk的使用

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

Flutter支付集成插件kkiapay_flutter_sdk的使用

Kkiapay是一个开发者友好的解决方案,允许您在应用程序或网站中接受移动支付和信用卡支付。在使用此SDK之前,请确保您已经在Kkiapay上拥有正确的商户账户,否则请注册并创建您的账户(免费且无痛 😎)。

安装

要使用这个包,在pubspec.yaml文件中添加以下内容:

dependencies:
  flutter:
    sdk: flutter
  kkiapay_flutter_sdk:

对于Web应用,在index.html中添加以下脚本:

<script src="https://cdn.kkiapay.me/k.js"></script>

使用

初始化Kkiapay实例

首先需要导入包:

import 'package:kkiapay_flutter_sdk/kkiapay_flutter_sdk.dart';

然后初始化KKiaPay对象:

final kkiapay = KKiaPay(
    callback: (response, context) {
      // 处理支付回调逻辑
    },
    amount: 1000, // 支付金额,例如:1000
    apikey: "XXXX_public_api_key_XXX", // 您的API密钥
    sandbox: true, // 是否为沙箱模式
    data: 'Big data', // 自定义数据
    phone: "22961000000", // 手机号码
    name: "John Doe", // 用户姓名
    reason: "transaction reason", // 交易原因
    email: "email@mail.com", // 邮箱地址
    callbackUrl: "http://kkiapay.me", // 回调URL
    theme: "#222F5A", // 主题颜色
    countries: ["CI","BJ"], // 国家列表
    partnerId: 'AxXxXXxId', // 合作伙伴ID
    paymentMethods: ["momo","card"] // 支付方式
);

创建支付页面实例

对于移动端:

Navigator.push(context, MaterialPageRoute(builder: (context) => kkiapay));

对于Web端:

KkiapayFlutterSdkPlatform.instance.pay(kkiapay, context, callback);

示例代码

下面是一个完整的示例代码,演示如何使用kkiapay_flutter_sdk进行支付集成:

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

void main() => runApp(const App());

void callback(response, context) {
  switch (response['status']) {
    case PAYMENT_CANCELLED:
      debugPrint(PAYMENT_CANCELLED);
      Navigator.pop(context);
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text(PAYMENT_CANCELLED),
      ));
      break;

    case PENDING_PAYMENT:
      debugPrint(PENDING_PAYMENT);
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text(PENDING_PAYMENT),
      ));
      break;

    case PAYMENT_INIT:
      debugPrint(PAYMENT_INIT);
      break;

    case PAYMENT_SUCCESS:
      debugPrint(PAYMENT_SUCCESS);
      Navigator.pop(context);
      ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
        content: Text(PAYMENT_SUCCESS),
      ));
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => SuccessScreen(
            amount: response['requestData']['amount'],
            transactionId: response['transactionId'],
          ),
        ),
      );
      break;

    default:
      debugPrint(UNKNOWN_EVENT);
      break;
  }
}

const kkiapay = KKiaPay(
    amount: 1,
    sandbox: false,
    apikey: public_api_key,
    callback: callback,
  //countries: ["BJ","CI","SN","TG"],
  //phone: "22961000000",
  //name: "John Doe",
  //email: "email@mail.com",
  //reason: 'transaction reason',
  //data: 'Fake data',
  //theme: defaultTheme,
  //partnerId: 'AxXxXXxId',
  //paymentMethods: ["momo", "card"]
);

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: primaryColor,
          title: const Text('Kkiapay Sample'),
          centerTitle: true,
        ),
        body: const KkiapaySample(),
      ),
    );
  }
}

class KkiapaySample extends StatelessWidget {
  const KkiapaySample({
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Center(
        child: Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        ButtonTheme(
          minWidth: 500.0,
          height: 100.0,
          child: TextButton(
            style: ButtonStyle(
              backgroundColor:
                  MaterialStateProperty.all(const Color(0xff222F5A)),
              foregroundColor: MaterialStateProperty.all(Colors.white),
            ),
            child: const Text(
              'Pay Now ( on Mobile )',
              style: TextStyle(color: Colors.white),
            ),
            onPressed: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => kkiapay),
              );
            },
          ),
        ),
        const SizedBox(height: 50,),
        ButtonTheme(
          minWidth: 500.0,
          height: 100.0,
          child: TextButton(
            style: ButtonStyle(
              backgroundColor:
                  MaterialStateProperty.all(const Color(0xff222F5A)),
              foregroundColor: MaterialStateProperty.all(Colors.white),
            ),
            child: const Text(
              'Pay Now ( on WEB )',
              style: TextStyle(color: Colors.white),
            ),
            onPressed: () {
              KkiapayFlutterSdkPlatform.instance.pay(kkiapay, context, callback);
            },
          ),
        )
      ],
    ));
  }
}

参考

以下是KKiaPay构造函数参数的详细信息:

参数名 类型 是否必填 说明
phone String 有效的移动支付号码,例如:22967434270
amount Numeric 从用户账户扣除的金额(XOF)
name String 客户的姓和名
partnerId String 您的ID,用于查找交易
countries List of String 设置小部件国家,例如:[“CI”]
paymentMethods List of String 设置小部件支付方式,例如:[“momo”,“card”]
theme String 您想要给小部件的颜色的十六进制代码
apikey String 公共API密钥
sandbox Boolean 此属性的true值允许您切换到测试模式
successCallback Function 一旦支付成功,将调用此函数

successCallback函数接收两个参数:

  • Map<String,dynamic>包含交易信息
  • BuildContext上下文类型

您可以根据自己的需求调整这些参数,并通过GitHub提交问题以发送反馈或报告错误。感谢您的支持!

如果您有任何问题或需要进一步的帮助,请随时联系我。希望这篇文档能帮助您顺利集成Kkiapay支付功能!


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中集成并使用kkiapay_flutter_sdk插件的示例代码。这个插件用于处理支付功能,假设你已经有一个Flutter项目,并且已经在pubspec.yaml文件中添加了kkiapay_flutter_sdk依赖。

首先,确保你的pubspec.yaml文件中包含以下依赖:

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

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

接下来,你需要在你的Flutter项目中配置和使用kkiapay_flutter_sdk。以下是一个简单的示例,展示如何初始化支付插件并处理支付请求。

1. 初始化支付插件

在你的主应用文件(通常是main.dart)中,导入kkiapay_flutter_sdk并进行初始化。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('KKIAPay Flutter SDK Demo'),
        ),
        body: PaymentScreen(),
      ),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  late KKIAPayFlutterSdk kkiapay;

  @override
  void initState() {
    super.initState();
    // 初始化KKIAPayFlutterSdk
    kkiapay = KKIAPayFlutterSdk();
    // 配置必要的参数(这里只是示例,具体参数请参考KKIAPay官方文档)
    kkiapay.init(
      appKey: '你的AppKey', // 替换为你的AppKey
      appId: '你的AppId', // 替换为你的AppId
      channelId: '你的ChannelId', // 替换为你的ChannelId
      isSandbox: true, // 沙箱模式,生产环境请设置为false
    );
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: () async {
          // 发起支付请求
          try {
            String result = await kkiapay.pay(
              orderId: '订单号${DateTime.now().millisecondsSinceEpoch}',
              productId: '产品ID', // 替换为你的产品ID
              quantity: 1,
              price: 100, // 单位:分
              currency: 'CNY',
              successCallback: (Map<String, dynamic> response) {
                // 支付成功回调
                print('支付成功: $response');
              },
              failCallback: (String errorMessage) {
                // 支付失败回调
                print('支付失败: $errorMessage');
              },
              cancelCallback: () {
                // 支付取消回调
                print('支付取消');
              },
            );
            print('支付结果: $result');
          } catch (e) {
            print('支付请求出错: $e');
          }
        },
        child: Text('发起支付'),
      ),
    );
  }
}

2. 处理支付回调

在上面的代码中,我们已经设置了支付成功、失败和取消的回调。这些回调方法将在相应的支付事件发生时被调用。你可以根据需要在这些回调方法中添加更多的逻辑处理,比如更新UI、发送网络请求等。

注意事项

  1. 参数配置:确保你提供的appKeyappIdchannelId等参数是正确的,并且与KKIAPay后台配置一致。
  2. 沙箱模式:在开发阶段,建议将isSandbox设置为true,以便在沙箱环境中进行测试。生产环境请设置为false
  3. 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,以处理可能出现的各种异常情况。

以上就是一个简单的Flutter项目中集成kkiapay_flutter_sdk插件并进行支付的示例代码。希望这对你有所帮助!

回到顶部