Flutter支付插件kkiapay的使用

Flutter支付插件kkiapay的使用

kkiapay_flutter_sdk 是一个开发友好的解决方案,允许你在应用或网站中接受移动货币和信用卡支付。

在使用此SDK之前,请确保你已经在 Kkiapay 上有一个正确的商户账户,否则请前往并免费创建你的账户。

版本 受欢迎度 所有贡献者

安装

要使用此包,请在 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  kkiapay_flutter_sdk:

对于 Web 端,你需要在 index.html 文件中添加以下脚本:

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

使用

首先,引入 kkiapay_flutter_sdk 包:

import 'package:kkiapay_flutter_sdk/kkiapay_flutter_sdk.dart';

初始化 Kkiapay 实例

final kkiapay = KKiaPay(
    callback: Function(Map<String, dynamic> response, BuildContext context),
    amount: int, // 例如:1000
    apikey: String, // 例如:XXXX_public_api_key_XXX
    sandbox: bool, // 例如:true
    data: String, // 例如:'Big data'
    phone: String, // 例如:"22961000000"
    name: String, // 例如:"John Doe"
    reason: String, // 例如:"交易原因"
    email: String, // 例如:"email@mail.com"
    callbackUrl: String, // 例如:"http://kkiapay.me"
    theme: String, // 例如:"#222F5A"
    countries: List<String>, // 例如:["CI","BJ"]
    partnerId: String, // 例如:'AxXxXXxId'
    paymentMethods: List<String> // 例如:["momo","card"]
);

创建支付 WebView 实例

移动端:

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

Web端:

kkiapayWeb.pay(kkiapay, (response){});

示例

以下是一个完整的示例代码:

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

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

void callback(response, context) {
  switch (response['status']) {
    case PAYMENT_CANCELLED:
      Navigator.pop(context);
      debugPrint(PAYMENT_CANCELLED);
      break;

    case PAYMENT_INIT:
      debugPrint(PAYMENT_INIT);
      break;

    case PENDING_PAYMENT:
      debugPrint(PENDING_PAYMENT);
      break;

    case PAYMENT_SUCCESS:
      Navigator.pop(context);
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => SuccessScreen(
            amount: response['requestData']['amount'],
            transactionId: response['transactionId'],
          ),
        ),
      );
      break;

    default:
      debugPrint(UNKNOWN_EVENT);
      break;
  }
}

final kkiapay = KKiaPay(
    amount: 1000, // 金额
    countries: ["BJ","CI","SN","TG"], // 国家
    phone: "22961000000", // 手机号码
    name: "John Doe", // 姓名
    email: "email@mail.com", // 邮箱
    reason: 'Transaction reason', // 交易原因
    data: 'Fake data', // 数据
    sandbox: true, // 测试模式
    apikey: public_api_key, // API密钥
    callback: callback, // 回调函数
    theme: defaultTheme, // 主题颜色
    partnerId: 'AxXxXXxId', // 合作伙伴ID
    paymentMethods: ["momo","card"] // 支付方式
);

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: nColorPrimary,
          title: Text('Kkiapay Sample'),
          centerTitle: true,
        ),
        body: 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(Color(0xff222F5A)),
                  foregroundColor: MaterialStateProperty.all(Colors.white),
                ),
                child: const Text(
                  'Pay Now',
                  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 ( WEB )',
                  style: TextStyle(color: Colors.white),
                ),
                onPressed: () {
                  kkiapayWeb.pay(kkiapay, (response){});
                },
              ),
            )
          ],
        )
    );
  }
}

参考

参数 类型 必填 说明
phone String 有效的手机号码。例如:22967434270
amount 数值类型 用户账户扣款金额(XOF)
name String 客户姓名
partnerId String 查找交易的ID
countries 字符串列表 设置小部件国家。例如:[“CI”]
paymentMethods 字符串列表 设置小部件支付方式。例如:[“momo”,“card”]
theme String 小部件的颜色(十六进制代码)
apikey String 公共API密钥
sandbox Boolean 此属性的真值允许你切换到测试模式
successCallback 函数 付款成功时调用此函数

successCallback 函数接受两个参数,顺序如下:

  • 包含交易信息的 Map<String,dynamic>
    {
      'requestData': {
        'amount': int,
        'phone': String,
        'reason': String,
        'data': String,
        'partnerId': String,
        'sandbox': bool,
        'name': String,
        'email': String
      },
      'transactionId': String, 
      'status': String 
    }
    

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用kkiapay支付插件的示例代码。假设你已经在Flutter项目中添加了kkiapay插件的依赖,并且已经完成了必要的配置(比如API密钥、支付环境设置等)。

1. 添加依赖

首先,确保在你的pubspec.yaml文件中添加了kkiapay插件的依赖:

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

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

2. 初始化Kkiapay

在你的Flutter应用的入口文件(通常是main.dart)中,进行Kkiapay的初始化。这通常包括设置API密钥和其他配置。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 初始化Kkiapay
    Kkiapay.init(
      apiKey: 'YOUR_API_KEY',  // 替换为你的实际API密钥
      env: KkiapayEnv.sandbox, // 设置为sandbox环境,生产环境请使用KkiapayEnv.production
    );

    return MaterialApp(
      title: 'Flutter Kkiapay Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PaymentScreen(),
    );
  }
}

3. 创建支付屏幕

接下来,创建一个新的屏幕(例如PaymentScreen),用于触发支付流程。

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

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

class _PaymentScreenState extends State<PaymentScreen> {
  String paymentResult = '';

  void initiatePayment() async {
    try {
      // 创建支付订单
      KkiapayOrder order = KkiapayOrder(
        amount: 100,         // 支付金额(单位:分)
        currency: 'CNY',     // 货币类型
        description: 'Test payment', // 支付描述
        productId: 'product_123',   // 产品ID
      );

      // 发起支付
      KkiapayResponse response = await Kkiapay.pay(order);

      // 处理支付结果
      if (response.success) {
        setState(() {
          paymentResult = 'Payment successful! Transaction ID: ${response.transactionId}';
        });
      } else {
        setState(() {
          paymentResult = 'Payment failed: ${response.errorMessage}';
        });
      }
    } catch (e) {
      setState(() {
        paymentResult = 'Error: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Payment Screen'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: initiatePayment,
              child: Text('Initiate Payment'),
            ),
            Text(paymentResult, style: TextStyle(fontSize: 18)),
          ],
        ),
      ),
    );
  }
}

4. 运行应用

确保你已经正确配置了Android和iOS平台的支付相关权限和设置,然后运行你的Flutter应用。点击“Initiate Payment”按钮,应该会触发支付流程,并在支付完成后显示支付结果。

注意事项

  1. 权限设置:确保在AndroidManifest.xmlInfo.plist中配置了必要的支付权限。
  2. 测试环境:在开发阶段,建议使用测试环境(sandbox)进行支付测试。
  3. 错误处理:在实际应用中,应该添加更完善的错误处理和用户反馈机制。

以上代码提供了一个基本的Flutter应用中使用kkiapay支付插件的示例。根据你的实际需求,你可能需要调整代码以匹配你的支付流程和UI设计。

回到顶部