open_payment 4.0.3
open_payment: ^4.0.3 copied to clipboard
Flutter plugin which lets you seamlessly integrate OPEN Payment Gateway with your Flutter app and start collecting payments from your customers.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:open_payment/open_payment.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final TextEditingController _accessTokenController = TextEditingController();
final TextEditingController _paymentTokenController = TextEditingController();
PaymentEnvironment environment = PaymentEnvironment.preprod;
String? result;
@override
void dispose() {
_accessTokenController.dispose();
_paymentTokenController.dispose();
super.dispose();
}
Future<void> onPaymentClick() async {
final accessToken = _accessTokenController.text.trim();
final paymentToken = _paymentTokenController.text.trim();
OpenPaymentPayload openPaymentPayload = OpenPaymentPayload(
accessToken: accessToken,
paymentToken: paymentToken,
environment: environment,
mainColor: "#83025c",
errorColor: "#ff0000",
);
await OpenPayment.initiatePayment(
openPaymentPayload: openPaymentPayload,
onTransactionComplete: (TransactionDetails transactionDetails) {
setState(() {
result = transactionDetails.status;
});
},
onError: (String error) {
setState(() {
result = error;
});
},
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Open Payment Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
// Environment selector dropdown
DropdownButtonFormField<PaymentEnvironment>(
value: environment,
decoration: const InputDecoration(
labelText: 'Environment',
border: OutlineInputBorder(),
),
items: const [
DropdownMenuItem(
value: PaymentEnvironment.preprod,
child: Text('Preprod'),
),
DropdownMenuItem(
value: PaymentEnvironment.live,
child: Text('Live'),
),
],
onChanged: (env) {
if (env != null) {
setState(() {
environment = env;
});
}
},
),
const SizedBox(height: 16),
TextField(
controller: _accessTokenController,
decoration: const InputDecoration(
labelText: 'Access Token',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 16),
TextField(
controller: _paymentTokenController,
decoration: const InputDecoration(
labelText: 'Payment Token',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 24),
ElevatedButton(
onPressed: onPaymentClick,
child: const Text('Initiate Payment'),
),
const SizedBox(height: 24),
if (result != null)
Expanded(
child: Center(
child: Padding(
padding: const EdgeInsets.all(8),
child: Text(
'Result: $result',
style: const TextStyle(fontSize: 14),
),
),
),
),
],
),
),
),
);
}
}