Flutter支付集成插件kkiapay_flutter_sdk的使用
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
更多关于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、发送网络请求等。
注意事项
- 参数配置:确保你提供的
appKey
、appId
、channelId
等参数是正确的,并且与KKIAPay后台配置一致。 - 沙箱模式:在开发阶段,建议将
isSandbox
设置为true
,以便在沙箱环境中进行测试。生产环境请设置为false
。 - 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,以处理可能出现的各种异常情况。
以上就是一个简单的Flutter项目中集成kkiapay_flutter_sdk
插件并进行支付的示例代码。希望这对你有所帮助!