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
更多关于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”按钮,应该会触发支付流程,并在支付完成后显示支付结果。
注意事项
- 权限设置:确保在
AndroidManifest.xml
和Info.plist
中配置了必要的支付权限。 - 测试环境:在开发阶段,建议使用测试环境(sandbox)进行支付测试。
- 错误处理:在实际应用中,应该添加更完善的错误处理和用户反馈机制。
以上代码提供了一个基本的Flutter应用中使用kkiapay支付插件的示例。根据你的实际需求,你可能需要调整代码以匹配你的支付流程和UI设计。