This commit is contained in:
Hamza-Ayed
2024-09-30 09:37:26 +03:00
parent f5b7307f86
commit 659f178737
21 changed files with 416 additions and 151 deletions

View File

@@ -16,6 +16,7 @@ import '../../constant/colors.dart';
import '../../constant/info.dart';
import '../../constant/links.dart';
import '../../main.dart';
import '../../print.dart';
import '../functions/crud.dart';
import '../functions/toast.dart';
import 'paymob/paymob_wallet.dart';
@@ -588,25 +589,31 @@ class PaymentController extends GetxController {
billingData: PaymobBillingDataWallet(),
onPayment: (PaymobResponseWallet response) {},
);
if (response!.success == true && response.responseCode == '200') {
Get.defaultDialog(
barrierDismissible: false,
title: 'Payment Successful'.tr,
titleStyle: AppStyle.title,
content: Text(
'The payment was approved.'.tr,
style: AppStyle.title,
),
confirm: MyElevatedButton(
title: 'OK'.tr,
kolor: AppColor.greenColor,
onPressed: () async {
Get.back();
method();
},
),
);
// Log.print('message: ${response!.message}');
// Log.print('responseCode: ${response.responseCode}');
// Log.print('success: ${response.success}');
// Log.print('transactionID: ${response.transactionID}');
if (response!.responseCode == '200' && response.success == true) {
// Log.print('transactionID wewer: ${response.transactionID}');
Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor);
method();
// Get.defaultDialog(
// barrierDismissible: false,
// title: 'Payment Successful'.tr,
// titleStyle: AppStyle.title,
// content: Text(
// 'The payment was approved.'.tr,
// style: AppStyle.title,
// ),
// confirm: MyElevatedButton(
// title: 'OK'.tr,
// kolor: AppColor.greenColor,
// onPressed: () async {
// Get.back();
// method();
// },
// ),
// );
} else {
Get.defaultDialog(
barrierDismissible: false,

View File

@@ -313,6 +313,70 @@ class PaymobIFrameWallet extends StatefulWidget {
State<PaymobIFrameWallet> createState() => _PaymobIFrameState();
}
// class _PaymobIFrameState extends State<PaymobIFrameWallet> {
// WebViewController? controller;
// @override
// void initState() {
// controller = WebViewController()
// ..setJavaScriptMode(JavaScriptMode.unrestricted)
// ..setNavigationDelegate(
// NavigationDelegate(
// onNavigationRequest: (NavigationRequest request) {
// Log.print('request.url: ${request.url}');
// if (request.url.contains('txn_response_code') &&
// request.url.contains('success') &&
// request.url.contains('id')) {
// final params = _getParamFromURL(request.url);
// final response = PaymobResponseWallet.fromJson(params);
// if (widget.onPayment != null) {
// widget.onPayment!(response);
// }
// Navigator.pop(context, response);
// return NavigationDecision.prevent;
// }
// return NavigationDecision.navigate;
// },
// ),
// )
// ..loadRequest(Uri.parse(widget.redirectURL));
// super.initState();
// }
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// body: controller == null
// ? const Center(
// child: CircularProgressIndicator.adaptive(),
// )
// : SafeArea(
// child: WebViewWidget(
// controller: controller!,
// ),
// ),
// );
// }
// Map<String, dynamic> _getParamFromURL(String url) {
// final uri = Uri.parse(url);
// final queryParams = uri.queryParameters;
// final data = <String, dynamic>{};
// queryParams.forEach((key, value) {
// if (key.contains('.')) {
// final parts = key.split('.');
// data.putIfAbsent(parts.first, () => <String, dynamic>{});
// (data[parts.first] as Map<String, dynamic>)[parts.last] = value;
// } else {
// data[key] = value;
// }
// });
// return data;
// }
// }
class _PaymobIFrameState extends State<PaymobIFrameWallet> {
WebViewController? controller;
@@ -323,16 +387,23 @@ class _PaymobIFrameState extends State<PaymobIFrameWallet> {
..setNavigationDelegate(
NavigationDelegate(
onNavigationRequest: (NavigationRequest request) {
Log.print('request.url: ${request.url}');
if (request.url.contains('txn_response_code') &&
// request.url.contains('successfully') &&
request.url.contains('success') &&
request.url.contains('id')) {
final params = _getParamFromURL(request.url);
final response = PaymobResponseWallet.fromJson(params);
if (widget.onPayment != null) {
widget.onPayment!(response);
}
Navigator.pop(context, response);
// Show a dialog after successful payment
// _showSuccessDialog(response);
return NavigationDecision.prevent;
}
return NavigationDecision.navigate;
@@ -375,4 +446,24 @@ class _PaymobIFrameState extends State<PaymobIFrameWallet> {
return data;
}
void _showSuccessDialog(PaymobResponseWallet response) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Payment Successful'),
content: Text('Transaction ID: EGP'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop(); // Close the dialog
},
child: Text('OK'),
),
],
);
},
);
}
}