Kkiapay is developer friendly solution that allows you to accept mobile money and credit card payments in your application or website.
Before using this SDK, make sure you have a right Merchant Account on Kkiapay, otherwise go and create your account is free and without pain 😎.
To use this package :
dependencies:
flutter:
sdk: flutter
kkiapay_flutter_sdk:
For web
add to your index.html
<script src="https://cdn.kkiapay.me/k.js"></script>
import 'package:kkiapay_flutter_sdk/kkiapay_flutter_sdk.dart';
final kkiapay = KKiaPay(
@required callback: Function(Map<String, dynamic> response, BuildContext context),
@required amount: int, // Ex : 1000
@required apikey: String, // Ex : XXXX_public_api_key_XXX
@required sandbox: bool, // Ex : true
data: String, // Ex : 'Big data'
phone: String, // Ex : "22961000000"
name: String, // Ex : "John Doe"
reason: String, // Ex : "transaction reason"
email: String, // Ex : "[email protected]"
callbackUrl: String, // Ex : "http://kkiapay.me"
theme: String, // Ex : "#222F5A"
countries: List<String>, // Ex : ["CI","BJ"]
partnerId: String, // Ex : 'AxXxXXxId'
paymentMethods: List<String> // Ex : ["momo","card"]
);
Mobile:
Navigator.push( context, MaterialPageRoute(builder: (context) => kkiapay), );
Web:
KkiapayFlutterSdkPlatform.instance.pay( kkiapay, context, callback );
import 'package:flutter/material.dart';
import 'package:kkiapay_flutter_sdk/kkiapay_flutter_sdk.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 protected]",//
reason: 'Transaction reason',//
data: 'Fake data',//
sandbox: true,//
apikey: public_api_key,//
callback: callback,//
theme: defaultTheme, // Ex : "#222F5A",
partnerId: 'AxXxXXxId',//
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: () {
KkiapayFlutterSdkPlatform.instance.pay(kkiapay, context, callback);
},
),
)
],
)
);
}
}
Argument | Type | Required | Details |
phone | String | Yes | Valid mobile money number to debit. ex : 22967434270 |
amount | Numeric | Yes | Amount to debit from user account (XOF) |
name | String | No | Client firstname and lastname |
partnerId | String | No | Your id to find transaction |
countries | List of String | No | Set widget countries ex: ["CI"] |
paymentMethods | List of String | No | Set widget payment methods ex: ["momo","card"] |
theme | String | No | the hexadecimal code of the color you want to give to your widget |
apikey | String | Yes | public api key |
sandbox | Boolean | No | The true value of this attribute allows you to switch to test mode |
successCallback | Function | Yes | This function is called once the payment has been successfully made |
the successCallback function takes two parameters in the following order
- Map<String,dynamic> containing the transaction information
{
'requestData': {
'amount': int,
'phone': String,
'reason': String,
'data': String,
'partnerId': String,
'sandbox': bool,
'name': String,
'email': String
},
'transactionId': String,
'status': String
}
- the context of type BuildContext
Please file issues to send feedback or report a bug. Thank you! gir