KOZEN FLUTTER PLUGIN
Overview
The kozen_p plugin is designed to facilitate interaction with specific payment processing features in Android via Flutter. This plugin provides methods to initiate transactions, load various keys (e.g., PIN key, master key), and interact with the EMV (Europay, MasterCard, and Visa) transaction flow. It also supports listening to various transaction events using a custom listener.
INSTALLATION
To include the kozen_p plugin in your Flutter project, add the following dependency to your pubspec.yaml file:
dependencies:
kozen_p:
USAGE
Import the Plugin
import 'package:kozen_p/kozen_p.dart';
Initialize the Plugin
Before using the plugin, ensure you initialize it and set up the necessary listeners for transaction events.
final _kozen_pPlugin = Kozen_p();
@override
void initState() {
super.initState();
initiateSdk();
setListener();
}
Before any transaction or key loading, initialize the SDK:
Future<void> initiateSdk() async {
String? initiationResponse = await _kozen_pPlugin.initiate();
debugPrint(initiationResponse);
}
Set a listener
To receive callbacks from the plugin during a transaction, set a listener that implements the KozenListener interface.
void setListener() {
_kozen_pPlugin.setKozenListener(SampleKozenListener());
}
class SampleKozenListener extends KozenListener {
@override
void onCardDetected(bool isContact, bool isContactless) {
debugPrint("is contact :::: $isContact");
debugPrint("is contactless :::: $isContactless");
}
// Implement other callback methods...
}
Loading keys
The plugin provides methods to load different keys required for secure transactions.
Loading Pin Key
Future<void> loadPinKey() async {
String? ret = await _kozen_pPlugin.loadPinKey("F2B580B6D0CEBA9316A849F4B5F49115");
debugPrint(ret);
}
Loading master key
Future<void> loadMasterKey() async {
String? ret = await _kozen_pPlugin.loadMasterKey("8FE96E91A77C16EWD95B5804FDADFDF4");
debugPrint(ret);
}
Load DUKPT
Future<void> loadDukpt() async {
String? ret = await _kozen_pPlugin.loadDukpt("", "");
debugPrint(ret);
}
Loading Parameters
To load transaction parameters such as terminal ID, merchant ID, and others:
Future<void> loadParameters() async {
String? ret = await _kozen_pPlugin.loadParameters(
"2ISW0001",
"2ISW1234567TEST",
"E0F8C8", "0566", "merchantAddress", "merchantName");
debugPrint(ret);
}
Start a transaction
To initiate a transaction, call the startTransaction method:
void startTransaction() async {
String? ret = await _kozen_pPlugin.startTransaction(100, true);
debugPrint(ret);
}
Example App
Below is a simple Flutter app demonstrating the use of the kozen_p plugin:
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _kozen_pPlugin = Kozen_p();
@override
void initState() {
super.initState();
initiateSdk();
setListener();
}
void setListener(){
_kozen_pPlugin.setKozenListener(SampleKozenListener());
}
Future<void> initiateSdk() async {
String? initiationResponse = await _kozen_pPlugin.initiate();
debugPrint(initiationResponse);
}
void startTransaction() async {
String? ret = await _kozen_pPlugin.startTransaction(100, true);
debugPrint(ret);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(
children: [
GestureDetector(
onTap: () {
startTransaction();
},
child: Text('Start Transaction'),
),
],
),
),
),
);
}
}
class SampleKozenListener extends KozenListener {
@override
void onCardDetected(bool isContact, bool isContactless) {
debugPrint("is contact :::: $isContact");
}
// Implement other callback methods...
}