step 1. Create Account on Razorpay payment Get way .
Step 2. create new project on Getx Flutter
Step 3 Add razorpay dependency from this link https://pub.dev/packages/razorpay_flutter.
step 4 create View Code :-
import 'package:add_payment/app/constants/app_colors.dart';
import 'package:add_payment/app/modules/widgets/custom_text_fields.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../controllers/dashboard_controller.dart';
class DashboardView extends GetView {
const DashboardView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'RazorPay Payment Gateway',
style: Get.textTheme.displayLarge!.copyWith(
color: AppColors.appBlueColor,
fontWeight: FontWeight.w600,
),
),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children:[
const Text(
'Pay with Razorpay',
),
const SizedBox(
height: 20,
),
const Row(
children: [
Text(
'Name of User',
),
],
),
const SizedBox(
height: 20,
),
UniversalTextField(
controller: controller.nameTextController,
keyboardType: TextInputType.name,
hintText: '',
validatorErrorText: '',
validationMessageOnBlankText: ''),
const SizedBox(
height: 20,
),
const Row(
children: [
Text(
'Amount',
),
],
),
const SizedBox(
height: 20,
),
UniversalTextField(
controller: controller.amountTextController,
keyboardType: TextInputType.number,
hintText: '',
validatorErrorText: '',
validationMessageOnBlankText: ''),
const SizedBox(
height: 20,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
controller.getPayment();
},
child: const Text("Pay with Razorpay")),
],
),
],
),
));
}
}
Step 5 :- craete view controller class- import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:razorpay_flutter/razorpay_flutter.dart';
class DashboardController extends GetxController {
final razorpay = Razorpay();
late TextEditingController amountTextController;
late TextEditingController nameTextController;
@override
void onInit() {
amountTextController = TextEditingController();
nameTextController = TextEditingController();
razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
super.onInit();
}
@override
void onClose() {
amountTextController.dispose();
nameTextController.dispose();
razorpay.clear();
super.onClose();
}
void _handlePaymentSuccess(PaymentSuccessResponse response) {
Get.snackbar("Payment Successful", "Payment ID: ${response.paymentId}");
// Do something when payment succeeds
}
void _handlePaymentError(PaymentFailureResponse response) {
Get.snackbar("Payment Failed",
"Code: ${response.code}\nDescription: ${response.message}\nMetadata:${response.error.toString()}");
// Do something when payment fails
}
void _handleExternalWallet(ExternalWalletResponse response) {
Get.snackbar("External Wallet Selected", "${response.walletName}");
// Do something when an external wallet was selected
}
void getPayment() async {
Razorpay razorpay = Razorpay();
var options = {
'key': '*********************', // copy from api key of razorpay
'amount': amountTextController.text,
'name': nameTextController.text,
'description': 'Fine T-Shirt',
'retry': {'enabled': true, 'max_count': 1},
'send_sms_hash': true,
'prefill': {'contact': '8*******11', 'email': 'xxx.gmail.com'},
'external': {
'wallets': ['paytm']
}
};
try {
razorpay.open(options);
} catch (e) {
print("error $e");
}
nameTextController.clear();
amountTextController.clear();
}
}
const DashboardView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'RazorPay Payment Gateway',
style: Get.textTheme.displayLarge!.copyWith(
color: AppColors.appBlueColor,
fontWeight: FontWeight.w600,
),
),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children:
const Text(
'Pay with Razorpay',
),
const SizedBox(
height: 20,
),
const Row(
children: [
Text(
'Name of User',
),
],
),
const SizedBox(
height: 20,
),
UniversalTextField(
controller: controller.nameTextController,
keyboardType: TextInputType.name,
hintText: '',
validatorErrorText: '',
validationMessageOnBlankText: ''),
const SizedBox(
height: 20,
),
const Row(
children: [
Text(
'Amount',
),
],
),
const SizedBox(
height: 20,
),
UniversalTextField(
controller: controller.amountTextController,
keyboardType: TextInputType.number,
hintText: '',
validatorErrorText: '',
validationMessageOnBlankText: ''),
const SizedBox(
height: 20,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
controller.getPayment();
},
child: const Text("Pay with Razorpay")),
],
),
],
),
));
}
}
Step 5 :- craete view controller class- import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:razorpay_flutter/razorpay_flutter.dart';
class DashboardController extends GetxController {
final razorpay = Razorpay();
late TextEditingController amountTextController;
late TextEditingController nameTextController;
@override
void onInit() {
amountTextController = TextEditingController();
nameTextController = TextEditingController();
razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
super.onInit();
}
@override
void onClose() {
amountTextController.dispose();
nameTextController.dispose();
razorpay.clear();
super.onClose();
}
void _handlePaymentSuccess(PaymentSuccessResponse response) {
Get.snackbar("Payment Successful", "Payment ID: ${response.paymentId}");
// Do something when payment succeeds
}
void _handlePaymentError(PaymentFailureResponse response) {
Get.snackbar("Payment Failed",
"Code: ${response.code}\nDescription: ${response.message}\nMetadata:${response.error.toString()}");
// Do something when payment fails
}
void _handleExternalWallet(ExternalWalletResponse response) {
Get.snackbar("External Wallet Selected", "${response.walletName}");
// Do something when an external wallet was selected
}
void getPayment() async {
Razorpay razorpay = Razorpay();
var options = {
'key': '*********************', // copy from api key of razorpay
'amount': amountTextController.text,
'name': nameTextController.text,
'description': 'Fine T-Shirt',
'retry': {'enabled': true, 'max_count': 1},
'send_sms_hash': true,
'prefill': {'contact': '8*******11', 'email': 'xxx.gmail.com'},
'external': {
'wallets': ['paytm']
}
};
try {
razorpay.open(options);
} catch (e) {
print("error $e");
}
nameTextController.clear();
amountTextController.clear();
}
}
Comments
Post a Comment