icash
icash_sdk is flutter plugin that let's developer to integrate native iCash payment method into their flutter application with just few lines of code.
Getting Started
How to install
Depend on it
```Language
dependencies:
icash: 0.0.1
```
Usage
1. Implement `IcashInterface` to your widget and overwrite `onIcashSuccess` and `onIcashError` error methods.
Example
```Language
import 'package:icash/icash.dart';
//..your code
class _IcashTestState extends State<MyApp> implements IcashInterface {
//..your code
@override
void onIcashSuccess(Map<String, String> _res) {
//_res consist of response with
//{"process_id":"5857603639157688230722287658","customer":"Test User","merchant":"Test Company","amount":"100","transaction_id":"abc12356","status":"Complete"}
}
//..your code
@override
void onIcashError(String _action) {
//_action consist of error type which is one of
APP_CLOSED
NETWORK_ERROR
DUPLICATE
TRANSACTION_ERROR
}
//..your code
```
2. To initiate payment process declear iCashPayment class and call doPayment method as below
```Language
//pass you current widget build context
void initatePayment(BuildContext _ctx) {
iCashPayment _ipayment = iCashPayment(this);
_ipayment.doPayment(_ctx,
vendor_key: "your vendor key",
amount: "1000",
title: "Icash Test",
description: "This is only for test",
transaction_id: "abc123456");
}
```
Complete Example
import 'package:flutter/material.dart';
import 'package:icash/icash.dart';
void main() {
runApp(const MyApp());
}
class IcashTestState extends StatefulWidget {
const IcashTestState({Key? key}) : super(key: key);
@override
State<IcashTestState> createState() => _IcashTestState();
}
class _IcashTestState extends State<IcashTestState> implements IcashInterface {
@override
void initState() {
super.initState();
}
@override
void onIcashSuccess(Map<String, String> _res) {
//_res consist of response with
//{"process_id":"5857603639157688230722287658","customer":"Test User","merchant":"Test Company","amount":"100","transaction_id":"abc12356","status":"Complete"}
}
@override
void onIcashError(String _action) {
//_action consist of error type which is one of
APP_CLOSED
NETWORK_ERROR
DUPLICATE
TRANSACTION_ERROR
}
void initatePayment(BuildContext _ctx) {
iCashPayment _ipayment = iCashPayment(this);
_ipayment.doPayment(_ctx,
vendor_key: "your vendor key",
amount: "1000",
title: "Icash Test",
description: "This is only for test",
transaction_id: textFieldController.text);
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('iCash Payment Test App'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Builder(
builder: (context) => RaisedButton(
onPressed: () {
initatePayment(context);
},
child: Text('Pay 100'),
),
)
],
),
),
),
);
}
}