From f13004ed5bb83b9f5e52009b20b4fe8edefeaa5a Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 23 Mar 2026 12:44:52 +0000 Subject: [PATCH 1/8] Remove Node.js example from README to streamline documentation and focus on essential payment flow instructions. --- README.md | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/README.md b/README.md index 4d59503..c492e60 100644 --- a/README.md +++ b/README.md @@ -60,37 +60,6 @@ curl -X POST https://api.moosyl.com/payment-request \ }' ``` -#### Node.js Example: - -```javascript -const axios = require("axios"); - -async function createPaymentRequest() { - try { - const response = await axios.post( - "https://api.moosyl.com/payment-request", - { - phoneNumber: "+22212345678", // Optional - transactionId: "your-unique-transaction-id", - amount: 5000, // Amount in MRU - }, - { - headers: { - Authorization: "YOUR_SECRET_API_KEY", - "Content-Type": "application/json", - }, - } - ); - - console.log("Payment Request Created:", response.data); - } catch (error) { - console.error("Error creating payment request:", error.response.data); - } -} - -createPaymentRequest(); -``` - --- ### Step 2: Display the Payment View From a9354fecdd9784eff2a0afab69839f0255c2aa12 Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 23 Mar 2026 13:09:35 +0000 Subject: [PATCH 2/8] Update version to 2.0.2, remove Node.js example from documentation, and enhance payment model description in README and PaymentSuccess class comments for clarity. --- CHANGELOG.md | 6 ++++++ README.md | 7 +++++-- lib/src/models/payment_success.dart | 4 ++-- pubspec.yaml | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f78dd5..48127ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 2.0.2 + + +- Remove node.js Example +- update the returned payment model desc + ## 2.0.1 - Remove Get Payment Method diff --git a/README.md b/README.md index c492e60..7e985c5 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,9 @@ return MaterialApp( ); ``` -Use `MoosylFlutter.show()` to open the payment flow. It returns `PaymentSuccess?` — non-null on success, `null` when the user closes without paying: +Use `MoosylFlutter.show()` to open the payment flow. It returns `PaymentSuccess?` — non-null on success, `null` when the user closes without paying. + +**Note:** `PaymentSuccess` provides a summary of the completed payment — `id`, `amount`, and `status` — for use in your success handling. ```dart import 'package:flutter/material.dart'; @@ -92,7 +94,8 @@ class PaymentScreen extends StatelessWidget { isFullPage: true, // false for bottom sheet ); if (payment != null) { - print('Payment successful! id=${payment.id} amount=${payment.amount}'); + // payment.id = transaction ID, payment.amount, payment.status + print('Payment successful! id=${payment.id} amount=${payment.amount} status=${payment.status}'); } }, child: const Text('Pay'), diff --git a/lib/src/models/payment_success.dart b/lib/src/models/payment_success.dart index 15ffece..826f80f 100644 --- a/lib/src/models/payment_success.dart +++ b/lib/src/models/payment_success.dart @@ -7,8 +7,8 @@ import 'package:moosyl/moosyl.dart'; class PaymentSuccess { /// Creates a new [PaymentSuccess] instance. /// - /// * [id]: The ID of the payment. - /// * [amount]: The amount of the payment. + /// * [id]: The ID of the transaction. + /// * [amount]: The amount of the transaction. /// * [status]: The status of the payment. const PaymentSuccess({ required this.id, diff --git a/pubspec.yaml b/pubspec.yaml index 49bc45b..5b12951 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: moosyl_flutter description: "The Moosyl Flutter SDK is a powerful tool for integrating payment solutions with Mauritania's popular banking apps, such as Bankily, Sedad, and Masrivi" homepage: https://github.com/SoftwareSavants/moosyl_flutter -version: 2.0.1 +version: 2.0.2 license: MIT From 84f838ad457dfffd0e68f55eafe800bbe1eb26c0 Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 23 Mar 2026 16:13:02 +0000 Subject: [PATCH 3/8] Refactor payment handling to return a boolean indicating success instead of a PaymentSuccess model. Update README and CHANGELOG to reflect changes in payment flow and success handling. --- CHANGELOG.md | 1 + README.md | 8 ++-- example/lib/main.dart | 5 +-- example/lib/payment_success_dialog.dart | 15 +------ lib/moosyl.dart | 1 - lib/src/models/payment_success.dart | 55 ------------------------- lib/src/moosyl_flutter.dart | 9 ++-- lib/src/pages/home.dart | 5 +-- lib/src/pages/masrivi_view.dart | 18 +++----- lib/src/pages/moosyl_view.dart | 3 +- lib/src/pages/payment_methods_view.dart | 5 +-- lib/src/providers/pay_provider.dart | 15 +++---- 12 files changed, 28 insertions(+), 112 deletions(-) delete mode 100644 lib/src/models/payment_success.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 48127ff..5f41945 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - Remove node.js Example - update the returned payment model desc +- payment view return bool instead of model ## 2.0.1 diff --git a/README.md b/README.md index 7e985c5..0755f65 100644 --- a/README.md +++ b/README.md @@ -74,9 +74,9 @@ return MaterialApp( ); ``` -Use `MoosylFlutter.show()` to open the payment flow. It returns `PaymentSuccess?` — non-null on success, `null` when the user closes without paying. +Use `MoosylFlutter.show()` to open the payment flow. It returns `isSuccess?` — non-null on success, `null` when the user closes without paying. -**Note:** `PaymentSuccess` provides a summary of the completed payment — `id`, `amount`, and `status` — for use in your success handling. +**Note:** `isSuccess` provides status of the payment — `status` — for use in your success handling. ```dart import 'package:flutter/material.dart'; @@ -94,8 +94,8 @@ class PaymentScreen extends StatelessWidget { isFullPage: true, // false for bottom sheet ); if (payment != null) { - // payment.id = transaction ID, payment.amount, payment.status - print('Payment successful! id=${payment.id} amount=${payment.amount} status=${payment.status}'); + // status + print('Payment was successful! isSuccess=${payment}'); } }, child: const Text('Pay'), diff --git a/example/lib/main.dart b/example/lib/main.dart index aa1417d..be04a45 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -57,9 +57,8 @@ class _MyHomePageState extends State { ); if (!mounted) return; if (payment != null) { - await showPaymentSuccessDialog(context, payment: payment); - print( - 'Payment was successful! id=${payment.id} amount=${payment.amount} status=${payment.status}'); + await showPaymentSuccessDialog(context, isSuccess: payment); + print('Payment was successful! isSuccess=${payment}'); } } diff --git a/example/lib/payment_success_dialog.dart b/example/lib/payment_success_dialog.dart index 6b69b10..2783764 100644 --- a/example/lib/payment_success_dialog.dart +++ b/example/lib/payment_success_dialog.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; import 'package:moosyl_flutter/l10n/generated/moosyl_localization.dart'; -import 'package:moosyl_flutter/moosyl.dart' show PaymentSuccess; /// Shows a dialog with a green check icon, payment success message, and summary. /// Returns a [Future] that completes when the dialog is dismissed. Future showPaymentSuccessDialog( BuildContext context, { - required PaymentSuccess payment, + required bool isSuccess, }) async { if (!context.mounted) return; final l10n = MoosylLocalization.of(context)!; @@ -43,19 +42,9 @@ Future showPaymentSuccessDialog( child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - _SummaryRow( - label: l10n.paymentId, - value: payment.id, - ), - const SizedBox(height: 8), - _SummaryRow( - label: l10n.amountToPay, - value: '${payment.amount} MRU', - ), - const SizedBox(height: 8), _SummaryRow( label: l10n.status, - value: payment.status, + value: isSuccess.toString(), ), ], ), diff --git a/lib/moosyl.dart b/lib/moosyl.dart index d0c118d..7256629 100644 --- a/lib/moosyl.dart +++ b/lib/moosyl.dart @@ -1,5 +1,4 @@ export 'src/pages/home.dart'; export 'src/models/payment_method_model.dart'; -export 'src/models/payment_success.dart'; export 'src/moosyl_flutter.dart'; export 'l10n/moosyl_localization.dart'; diff --git a/lib/src/models/payment_success.dart b/lib/src/models/payment_success.dart deleted file mode 100644 index 826f80f..0000000 --- a/lib/src/models/payment_success.dart +++ /dev/null @@ -1,55 +0,0 @@ -import 'package:moosyl/moosyl.dart'; - -/// Unified model for payment success, used across Sedad, Bankily, and Masrivi. -/// -/// Normalizes [PaymentGetData] and [PostPayment200Response] into a common shape -/// for display in the success dialog and for [onPaymentSuccess] callback. -class PaymentSuccess { - /// Creates a new [PaymentSuccess] instance. - /// - /// * [id]: The ID of the transaction. - /// * [amount]: The amount of the transaction. - /// * [status]: The status of the payment. - const PaymentSuccess({ - required this.id, - required this.amount, - required this.status, - }); - - /// Payment ID. - final String id; - - /// Payment amount (e.g. in MRU). - final int amount; - - /// Payment status (e.g. 'completed'). - final String status; - - /// Creates from [PaymentGetData] (Sedad - from getPayment). - factory PaymentSuccess.fromPaymentRequestGetData(PaymentRequestGetData data) { - return PaymentSuccess( - id: data.id, - amount: data.amount, - status: 'completed', - ); - } - - /// Creates from [PostPayment200Response] (Bankily - from postPayment). - /// [amountFallback] is used when amount is not in the response (e.g. from payment request). - factory PaymentSuccess.fromPostPaymentResponse( - PostPayment200Response response, { - required int amountFallback, - }) { - final amount = response.metadata?.asMap['amount'] != null - ? (response.metadata!.asMap['amount'] is int - ? response.metadata!.asMap['amount'] as int - : int.tryParse(response.metadata!.asMap['amount'].toString()) ?? - amountFallback) - : amountFallback; - return PaymentSuccess( - id: response.id, - amount: amount, - status: response.status, - ); - } -} diff --git a/lib/src/moosyl_flutter.dart b/lib/src/moosyl_flutter.dart index fe986f2..91853c8 100644 --- a/lib/src/moosyl_flutter.dart +++ b/lib/src/moosyl_flutter.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:moosyl_flutter/src/models/payment_success.dart'; import 'package:moosyl_flutter/src/pages/moosyl_view.dart'; /// Convenience class to open the payment flow. @@ -13,7 +12,7 @@ class MoosylFlutter { MoosylFlutter._(); /// Opens the payment flow. Returns [PaymentSuccess] on success, `null` when closed without payment. - static Future show( + static Future show( BuildContext context, { required String publishableApiKey, required String transactionId, @@ -22,9 +21,9 @@ class MoosylFlutter { bool isFullPage = true, }) async { if (isFullPage) { - return Navigator.push( + return Navigator.push( context, - MaterialPageRoute( + MaterialPageRoute( builder: (ctx) => MoosylView( publishableApiKey: publishableApiKey, transactionId: transactionId, @@ -39,7 +38,7 @@ class MoosylFlutter { ), ); } else { - return showModalBottomSheet( + return showModalBottomSheet( context: context, isScrollControlled: true, backgroundColor: Colors.transparent, diff --git a/lib/src/pages/home.dart b/lib/src/pages/home.dart index 6cd5409..ada0f34 100644 --- a/lib/src/pages/home.dart +++ b/lib/src/pages/home.dart @@ -3,7 +3,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; -import 'package:moosyl_flutter/src/models/payment_success.dart'; import 'package:moosyl_flutter/src/pages/moosyl_view.dart'; /// [Moosyl] provides a widget that handles the payment process. @@ -20,7 +19,7 @@ class Moosyl extends HookWidget { final Widget Function(VoidCallback open)? inputBuilder; /// Optional callback to be triggered upon successful payment with [PaymentSuccess]. - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; /// When true, shows as full page. When false, shows as bottom sheet. final bool isFullPage; @@ -35,7 +34,7 @@ class Moosyl extends HookWidget { BuildContext context, { required String publishableApiKey, required String transactionId, - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess, + final FutureOr Function(bool isSuccess)? onPaymentSuccess, bool isFullPage = false, }) { showBarModalBottomSheet( diff --git a/lib/src/pages/masrivi_view.dart b/lib/src/pages/masrivi_view.dart index d069f05..191cf1c 100644 --- a/lib/src/pages/masrivi_view.dart +++ b/lib/src/pages/masrivi_view.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:moosyl_flutter/src/models/payment_success.dart'; import 'package:moosyl_flutter/src/services/get_payment_request_service.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -42,7 +41,7 @@ class MasriviView extends StatelessWidget { final String configurationId; /// Callback when payment is successful (URL contains "/success"). - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; /// Callback when the back button is pressed. final VoidCallback? onBackPress; @@ -89,7 +88,7 @@ class _MasriviWebView extends StatefulWidget { final String payUrl; final String publishableApiKey; final String transactionId; - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; final VoidCallback onBackPress; final VoidCallback? onPaymentDeclined; @@ -131,17 +130,10 @@ class _MasriviWebViewState extends State<_MasriviWebView> { final onSuccess = widget.onPaymentSuccess; if (onSuccess == null) return; try { - final paymentData = - await GetPaymentRequestService(widget.publishableApiKey) - .get(widget.transactionId); - final payment = PaymentSuccess.fromPaymentRequestGetData(paymentData); - await onSuccess(payment); + final isSuccess = true; + await onSuccess(isSuccess); } catch (_) { - await onSuccess(PaymentSuccess( - id: widget.transactionId, - amount: 0, - status: 'completed', - )); + await onSuccess(false); } } diff --git a/lib/src/pages/moosyl_view.dart b/lib/src/pages/moosyl_view.dart index 88be48e..0bd4830 100644 --- a/lib/src/pages/moosyl_view.dart +++ b/lib/src/pages/moosyl_view.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:moosyl_flutter/l10n/generated/moosyl_localization.dart'; -import 'package:moosyl_flutter/src/models/payment_success.dart'; import 'package:moosyl_flutter/src/pages/masrivi_view.dart'; import 'package:moosyl_flutter/src/pages/payment_methods_view.dart'; import 'package:moosyl_flutter/src/providers/get_payment_methods_provider.dart'; @@ -36,7 +35,7 @@ class MoosylView extends StatelessWidget { /// Optional callback invoked when the payment is successful with [PaymentSuccess]. /// The caller is responsible for closing the route (e.g. Navigator.pop). - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; /// Callback when the back arrow is pressed on the payment method selection page. final VoidCallback? onBackPress; diff --git a/lib/src/pages/payment_methods_view.dart b/lib/src/pages/payment_methods_view.dart index edc78ea..6786813 100644 --- a/lib/src/pages/payment_methods_view.dart +++ b/lib/src/pages/payment_methods_view.dart @@ -5,7 +5,6 @@ import 'package:moosyl/moosyl.dart'; import 'package:moosyl_flutter/l10n/generated/moosyl_localization.dart'; import 'package:moosyl_flutter/src/helpers/exception_handling/exception_mapper.dart'; import 'package:moosyl_flutter/src/models/payment_method_model.dart'; -import 'package:moosyl_flutter/src/models/payment_success.dart'; import 'package:moosyl_flutter/src/models/selection_error.dart'; import 'package:moosyl_flutter/src/pages/bankily_view.dart'; import 'package:moosyl_flutter/src/pages/sedad_view.dart'; @@ -54,7 +53,7 @@ class SelectPaymentMethodPage extends StatelessWidget { final String transactionId; /// Callback when payment succeeds (for Sedad/Bankily dialogs). - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; @override Widget build(BuildContext context) { @@ -87,7 +86,7 @@ class _SelectPaymentMethodContent extends StatelessWidget { final double tax; final double totalAmount; final String transactionId; - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; final bool isFullPage; @override diff --git a/lib/src/providers/pay_provider.dart b/lib/src/providers/pay_provider.dart index 34cd818..87cc8cd 100644 --- a/lib/src/providers/pay_provider.dart +++ b/lib/src/providers/pay_provider.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:moosyl/moosyl.dart'; import 'package:moosyl_flutter/src/helpers/exception_handling/error_handlers.dart'; -import 'package:moosyl_flutter/src/models/payment_success.dart'; import 'package:moosyl_flutter/src/services/get_payment_request_service.dart'; import 'package:moosyl_flutter/src/services/pay_service.dart'; @@ -21,7 +20,7 @@ class PayProvider extends ChangeNotifier { final ConfigurationListDataInner method; /// Callback function that gets called on successful payment with [PaymentSuccess]. - final FutureOr Function(PaymentSuccess payment)? onPaymentSuccess; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; /// Optional callback called before [onPaymentSuccess] when payment completes. /// Use this to close the dialog before invoking the success callback. @@ -137,13 +136,9 @@ class PayProvider extends ChangeNotifier { notifyListeners(); if (result.result?.metadata?.asMap['provider'] == 'bankily') { if (result.result!.status == 'completed') { - final amount = paymentRequest?.amount ?? 0; - final payment = PaymentSuccess.fromPostPaymentResponse( - result.result!, - amountFallback: amount, - ); + final isSuccess = true; onBeforePaymentSuccess?.call(); - onPaymentSuccess?.call(payment); + onPaymentSuccess?.call(isSuccess); } else { error = 'PaymentNotCompleted'; return notifyListeners(); @@ -178,9 +173,9 @@ class PayProvider extends ChangeNotifier { isLoading = false; if (result.result!.amount == 0) { - final payment = PaymentSuccess.fromPaymentRequestGetData(result.result!); + final isSuccess = true; onBeforePaymentSuccess?.call(); - onPaymentSuccess?.call(payment); + onPaymentSuccess?.call(isSuccess); } else { error = 'PaymentNotCompleted'; return notifyListeners(); From 0c7d1ab2592da7762cbbff8ec7f50684fc55c824 Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 23 Mar 2026 17:23:58 +0000 Subject: [PATCH 4/8] Update payment handling in README and example to reflect changes in return type from PaymentSuccess model to boolean. Adjust success checks accordingly for improved clarity in payment flow. --- README.md | 6 +++--- example/lib/main.dart | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0755f65..bbdc80e 100644 --- a/README.md +++ b/README.md @@ -87,15 +87,15 @@ class PaymentScreen extends StatelessWidget { Widget build(BuildContext context) { return ElevatedButton( onPressed: () async { - final payment = await MoosylFlutter.show( + final isSuccess = await MoosylFlutter.show( context, publishableApiKey: 'YOUR_PUBLISHABLE_API_KEY', transactionId: 'TRANSACTION_ID', // From your backend isFullPage: true, // false for bottom sheet ); - if (payment != null) { + if (isSuccess != null) { // status - print('Payment was successful! isSuccess=${payment}'); + print('Payment was successful! isSuccess=$isSuccess '); } }, child: const Text('Pay'), diff --git a/example/lib/main.dart b/example/lib/main.dart index be04a45..8dae410 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -49,16 +49,16 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { void _openPaymentFlow() async { - final payment = await MoosylFlutter.show( + final isSuccess = await MoosylFlutter.show( context, publishableApiKey: 'your publishable api key', transactionId: 'your transaction id', isFullPage: false, ); if (!mounted) return; - if (payment != null) { - await showPaymentSuccessDialog(context, isSuccess: payment); - print('Payment was successful! isSuccess=${payment}'); + if (isSuccess != null) { + await showPaymentSuccessDialog(context, isSuccess: isSuccess); + print('Payment was successful! isSuccess=$isSuccess'); } } From 33186c8b08312218aa82d1e90a15f409c782bacb Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 4 May 2026 13:42:27 +0000 Subject: [PATCH 5/8] Enhance Moosyl payment flow by adding support for Masrivi phone number prefill and bottom sheet presentation. Update widget tests to reflect new demo menu actions. Refactor payment method selection to include new parameters for Masrivi integration. --- example/test/widget_test.dart | 26 +- lib/moosyl.dart | 13 + lib/src/moosyl_flutter.dart | 9 + lib/src/pages/home.dart | 24 + lib/src/pages/masrivi_view.dart | 171 ++++- lib/src/pages/moosyl_view.dart | 18 + lib/src/pages/payment_methods_view.dart | 719 +++++++++++++++++- .../get_payment_methods_provider.dart | 11 +- 8 files changed, 927 insertions(+), 64 deletions(-) diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart index 092d222..e9ea1c4 100644 --- a/example/test/widget_test.dart +++ b/example/test/widget_test.dart @@ -1,30 +1,14 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:example/main.dart'; void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. + testWidgets('shows Moosyl demo menu actions', (WidgetTester tester) async { await tester.pumpWidget(const MyApp()); - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); + expect(find.text('Moosyl Demo'), findsWidgets); + expect(find.text('Test MoosylView'), findsOneWidget); + expect(find.text('Test embedded platforms'), findsOneWidget); + expect(find.text('Test custom methods UI'), findsOneWidget); }); } diff --git a/lib/moosyl.dart b/lib/moosyl.dart index 7256629..04833aa 100644 --- a/lib/moosyl.dart +++ b/lib/moosyl.dart @@ -1,4 +1,17 @@ +export 'package:moosyl/moosyl.dart' show ConfigurationListDataInner; + export 'src/pages/home.dart'; +export 'src/pages/masrivi_view.dart' + show + MasriviView, + MasriviWebViewPresentation, + normalizeMasriviPhoneNumberForPrefill; +export 'src/pages/payment_methods_view.dart' + show + MoosylPaymentMethodBuilder, + MoosylPaymentMethodRenderProps, + MoosylPaymentMethods, + MoosylPaymentMethodsController; export 'src/models/payment_method_model.dart'; export 'src/moosyl_flutter.dart'; export 'l10n/moosyl_localization.dart'; diff --git a/lib/src/moosyl_flutter.dart b/lib/src/moosyl_flutter.dart index 91853c8..3a6c3c8 100644 --- a/lib/src/moosyl_flutter.dart +++ b/lib/src/moosyl_flutter.dart @@ -19,6 +19,9 @@ class MoosylFlutter { double amountToPay = 0.0, double tax = 0.0, bool isFullPage = true, + bool isMasriviInBottomSheet = false, + String? masriviPhoneNumber, + double masriviBottomSheetHeight = 0.88, }) async { if (isFullPage) { return Navigator.push( @@ -30,6 +33,9 @@ class MoosylFlutter { amountToPay: amountToPay, tax: tax, isFullPage: true, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, onBackPress: () => Navigator.pop(ctx, null), onPaymentSuccess: (payment) async { Navigator.pop(ctx, payment); @@ -56,6 +62,9 @@ class MoosylFlutter { amountToPay: amountToPay, tax: tax, isFullPage: false, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, onBackPress: () => Navigator.pop(ctx, null), onPaymentSuccess: (payment) async { Navigator.pop(ctx, payment); diff --git a/lib/src/pages/home.dart b/lib/src/pages/home.dart index ada0f34..82ac0ab 100644 --- a/lib/src/pages/home.dart +++ b/lib/src/pages/home.dart @@ -36,6 +36,9 @@ class Moosyl extends HookWidget { required String transactionId, final FutureOr Function(bool isSuccess)? onPaymentSuccess, bool isFullPage = false, + bool isMasriviInBottomSheet = true, + String? masriviPhoneNumber, + double masriviBottomSheetHeight = 0.88, }) { showBarModalBottomSheet( context: context, @@ -44,6 +47,9 @@ class Moosyl extends HookWidget { transactionId: transactionId, onPaymentSuccess: onPaymentSuccess, isFullPage: isFullPage, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, ), ); } @@ -61,8 +67,20 @@ class Moosyl extends HookWidget { this.inputBuilder, this.onPaymentSuccess, this.isFullPage = false, + this.isMasriviInBottomSheet = false, + this.masriviPhoneNumber, + this.masriviBottomSheetHeight = 0.88, }); + /// When true, Masrivi opens inside bottom-sheet content. + final bool isMasriviInBottomSheet; + + /// Optional phone number to prefill when the selected method opens Masrivi. + final String? masriviPhoneNumber; + + /// Height factor used when Masrivi is rendered as bottom-sheet content. + final double masriviBottomSheetHeight; + @override Widget build(BuildContext context) { // If an input builder is provided, use it to build the custom input UI. @@ -76,6 +94,9 @@ class Moosyl extends HookWidget { transactionId: transactionId, onPaymentSuccess: onPaymentSuccess, isFullPage: isFullPage, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, ), ); }, @@ -88,6 +109,9 @@ class Moosyl extends HookWidget { transactionId: transactionId, onPaymentSuccess: onPaymentSuccess, isFullPage: isFullPage, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, ); } } diff --git a/lib/src/pages/masrivi_view.dart b/lib/src/pages/masrivi_view.dart index 191cf1c..bbb70ab 100644 --- a/lib/src/pages/masrivi_view.dart +++ b/lib/src/pages/masrivi_view.dart @@ -1,12 +1,37 @@ import 'dart:async'; +import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:moosyl_flutter/src/services/get_payment_request_service.dart'; import 'package:webview_flutter/webview_flutter.dart'; /// Base URL for Masrivi payment web view. const String _masriviPayBaseUrl = 'https://payments.moosyl.com/masrivi/pay'; +/// How the Masrivi WebView should be presented. +enum MasriviWebViewPresentation { + /// Display as a regular full page with an app bar. + fullPage, + + /// Display as bottom-sheet content with a grab handle. + bottomSheet, +} + +/// Returns an 8-digit local Masrivi phone number, or an empty string if invalid. +String normalizeMasriviPhoneNumberForPrefill(String? phoneNumber) { + final compactPhoneNumber = phoneNumber + ?.trim() + .replaceAll(RegExp(r'[\s().-]'), '') + .replaceFirst(RegExp(r'^00'), '+'); + + if (compactPhoneNumber == null || compactPhoneNumber.isEmpty) return ''; + + final localPhoneNumber = compactPhoneNumber.startsWith('+222') + ? compactPhoneNumber.substring(4) + : compactPhoneNumber; + + return RegExp(r'^\d{8}$').hasMatch(localPhoneNumber) ? localPhoneNumber : ''; +} + /// A view that displays Masrivi payment in a WebView. /// /// Loads the Masrivi pay URL and listens for navigation to success/decline URLs. @@ -21,6 +46,8 @@ class MasriviView extends StatelessWidget { /// * [onPaymentSuccess]: The callback to call when the payment is successful. /// * [onBackPress]: The callback to call when the back button is pressed. /// * [onPaymentDeclined]: The callback to call when the payment is declined. + /// * [presentation]: Whether to render as a full page or bottom sheet. + /// * [phoneNumber]: Optional phone number to prefill in the Masrivi page. const MasriviView({ super.key, required this.publishableApiKey, @@ -29,6 +56,9 @@ class MasriviView extends StatelessWidget { this.onPaymentSuccess, this.onBackPress, this.onPaymentDeclined, + this.presentation = MasriviWebViewPresentation.fullPage, + this.bottomSheetHeight = 0.88, + this.phoneNumber, }); /// The API key for authenticating the payment. @@ -50,6 +80,15 @@ class MasriviView extends StatelessWidget { /// Called after going back to the payment method list. Use to show an error message. final VoidCallback? onPaymentDeclined; + /// Display as a full page or bottom-sheet content. + final MasriviWebViewPresentation presentation; + + /// Height factor used by hosts that size the Masrivi bottom sheet. + final double bottomSheetHeight; + + /// Phone number to prefill in the Masrivi page when a matching input is found. + final String? phoneNumber; + /// Builds the Masrivi pay URL with query parameters. String get _payUrl { final uri = Uri.parse(_masriviPayBaseUrl).replace( @@ -71,6 +110,9 @@ class MasriviView extends StatelessWidget { onPaymentSuccess: onPaymentSuccess, onBackPress: onBackPress ?? () => Navigator.of(context).pop(), onPaymentDeclined: onPaymentDeclined, + presentation: presentation, + bottomSheetHeight: bottomSheetHeight, + phoneNumber: phoneNumber, ); } } @@ -83,6 +125,9 @@ class _MasriviWebView extends StatefulWidget { this.onPaymentSuccess, required this.onBackPress, this.onPaymentDeclined, + required this.presentation, + required this.bottomSheetHeight, + this.phoneNumber, }); final String payUrl; @@ -91,6 +136,9 @@ class _MasriviWebView extends StatefulWidget { final FutureOr Function(bool isSuccess)? onPaymentSuccess; final VoidCallback onBackPress; final VoidCallback? onPaymentDeclined; + final MasriviWebViewPresentation presentation; + final double bottomSheetHeight; + final String? phoneNumber; @override State<_MasriviWebView> createState() => _MasriviWebViewState(); @@ -98,7 +146,7 @@ class _MasriviWebView extends StatefulWidget { class _MasriviWebViewState extends State<_MasriviWebView> { late final WebViewController _controller; - + bool _outcomeHandled = false; @override void initState() { super.initState(); @@ -107,25 +155,94 @@ class _MasriviWebViewState extends State<_MasriviWebView> { ..setNavigationDelegate( NavigationDelegate( onNavigationRequest: (NavigationRequest request) { + if (_outcomeHandled) return NavigationDecision.prevent; + if (request.url.contains('/success')) { + _outcomeHandled = true; widget.onBackPress(); - _fetchPaymentAndNotify(); + unawaited(_fetchPaymentAndNotify()); return NavigationDecision.prevent; } else if (request.url.contains('/decline')) { + _outcomeHandled = true; widget.onBackPress(); widget.onPaymentDeclined?.call(); return NavigationDecision.prevent; } else if (request.url.contains('/cancel')) { + _outcomeHandled = true; widget.onBackPress(); return NavigationDecision.prevent; } return NavigationDecision.navigate; }, + onPageFinished: (_) { + unawaited(_injectInputScript()); + }, ), ) ..loadRequest(Uri.parse(widget.payUrl)); } + String _buildMasriviInputScript() { + final phoneValue = + normalizeMasriviPhoneNumberForPrefill(widget.phoneNumber); + + return ''' + (function () { + var phoneNumber = ${jsonEncode(phoneValue)}; + + function setNativeValue(input, value) { + var descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(input), 'value'); + if (descriptor && descriptor.set) { + descriptor.set.call(input, value); + } else { + input.value = value; + } + input.dispatchEvent(new Event('input', { bubbles: true })); + input.dispatchEvent(new Event('change', { bubbles: true })); + } + + function tryFocus() { + var input = document.querySelector('input[name="client[number]"]'); + if (!input) return false; + if (input.readOnly || input.disabled) return false; + + if (phoneNumber && input.value !== phoneNumber) { + setNativeValue(input, phoneNumber); + } + + input.click(); + input.focus(); + if (input.setSelectionRange && input.value) { + var end = input.value.length; + input.setSelectionRange(end, end); + } + return true; + } + + if (tryFocus()) return; + + var observer = new MutationObserver(function () { + if (tryFocus()) observer.disconnect(); + }); + observer.observe(document.body, { + childList: true, + subtree: true, + attributes: true, + attributeFilter: ['readonly', 'disabled'] + }); +})(); +true; + '''; + } + + Future _injectInputScript() async { + try { + await _controller.runJavaScript(_buildMasriviInputScript()); + } catch (_) { + // The page may navigate away before the delayed injection finishes. + } + } + Future _fetchPaymentAndNotify() async { final onSuccess = widget.onPaymentSuccess; if (onSuccess == null) return; @@ -139,11 +256,57 @@ class _MasriviWebViewState extends State<_MasriviWebView> { @override Widget build(BuildContext context) { + final webView = WebViewWidget(controller: _controller); + + if (widget.presentation == MasriviWebViewPresentation.bottomSheet) { + final heightFactor = widget.bottomSheetHeight.clamp(0.2, 1.0).toDouble(); + + return LayoutBuilder( + builder: (context, constraints) { + final targetHeight = + MediaQuery.of(context).size.height * heightFactor; + final maxHeight = constraints.hasBoundedHeight + ? constraints.maxHeight + : targetHeight; + final height = targetHeight.clamp(0.0, maxHeight).toDouble(); + + return Align( + alignment: Alignment.bottomCenter, + child: SizedBox( + height: height, + width: double.infinity, + child: Material( + color: Colors.white, + borderRadius: + const BorderRadius.vertical(top: Radius.circular(18)), + clipBehavior: Clip.antiAlias, + child: Column( + children: [ + const SizedBox(height: 10), + Container( + width: 44, + height: 4, + decoration: BoxDecoration( + color: const Color(0xFFD6D6D6), + borderRadius: BorderRadius.circular(2), + ), + ), + const SizedBox(height: 6), + Expanded(child: webView), + ], + ), + ), + ), + ); + }, + ); + } + return Scaffold( appBar: AppBar( leading: BackButton(onPressed: widget.onBackPress), ), - body: WebViewWidget(controller: _controller), + body: webView, ); } } diff --git a/lib/src/pages/moosyl_view.dart b/lib/src/pages/moosyl_view.dart index 0bd4830..33be59c 100644 --- a/lib/src/pages/moosyl_view.dart +++ b/lib/src/pages/moosyl_view.dart @@ -25,6 +25,9 @@ class MoosylView extends StatelessWidget { this.amountToPay = 0.0, this.tax = 0.0, this.isFullPage = true, + this.isMasriviInBottomSheet = true, + this.masriviPhoneNumber, + this.masriviBottomSheetHeight = 0.88, }); /// The API key for authenticating the payment transaction. @@ -49,6 +52,15 @@ class MoosylView extends StatelessWidget { /// When true, payment method selection shows as full page. When false, shows as bottom sheet. final bool isFullPage; + /// When true, Masrivi opens inside bottom-sheet content. + final bool isMasriviInBottomSheet; + + /// Optional phone number to prefill when the selected method opens Masrivi. + final String? masriviPhoneNumber; + + /// Height factor used when Masrivi is rendered as bottom-sheet content. + final double masriviBottomSheetHeight; + @override Widget build(BuildContext context) { return Material( @@ -89,6 +101,12 @@ class MoosylView extends StatelessWidget { onBackPress: () => context .read() .setPaymentMethod(null), + presentation: isMasriviInBottomSheet + ? MasriviWebViewPresentation.bottomSheet + : MasriviWebViewPresentation.fullPage, + bottomSheetHeight: masriviBottomSheetHeight, + phoneNumber: + masriviPhoneNumber ?? provider.paymentRequest?.phoneNumber, onPaymentDeclined: () { final l10n = MoosylLocalization.of(context); if (l10n != null && context.mounted) { diff --git a/lib/src/pages/payment_methods_view.dart b/lib/src/pages/payment_methods_view.dart index 6786813..dd70200 100644 --- a/lib/src/pages/payment_methods_view.dart +++ b/lib/src/pages/payment_methods_view.dart @@ -7,6 +7,7 @@ import 'package:moosyl_flutter/src/helpers/exception_handling/exception_mapper.d import 'package:moosyl_flutter/src/models/payment_method_model.dart'; import 'package:moosyl_flutter/src/models/selection_error.dart'; import 'package:moosyl_flutter/src/pages/bankily_view.dart'; +import 'package:moosyl_flutter/src/pages/masrivi_view.dart'; import 'package:moosyl_flutter/src/pages/sedad_view.dart'; import 'package:moosyl_flutter/src/providers/get_payment_methods_provider.dart'; import 'package:moosyl_flutter/src/providers/pay_provider.dart'; @@ -16,6 +17,493 @@ import 'package:moosyl_flutter/src/widgets/error_widget.dart'; import 'package:moosyl_flutter/src/widgets/feedback.dart'; import 'package:provider/provider.dart'; +/// Data passed to [MoosylPaymentMethodBuilder] for each payment method row. +class MoosylPaymentMethodRenderProps { + /// Creates render props for a payment method row. + const MoosylPaymentMethodRenderProps({ + required this.method, + required this.type, + required this.title, + required this.isSelected, + required this.selectedMethodId, + required this.isRTL, + required this.onSelect, + }); + + /// Raw method from the Moosyl Dart SDK. + final ConfigurationListDataInner method; + + /// Parsed payment method type. + final PaymentMethodTypes type; + + /// Localized method title. + final String title; + + /// Whether this method is selected. + final bool isSelected; + + /// Currently selected method id, if any. + final String? selectedMethodId; + + /// Whether the surrounding directionality is RTL. + final bool isRTL; + + /// Selects this method. + final VoidCallback onSelect; +} + +/// Builds a custom payment method row. +typedef MoosylPaymentMethodBuilder = Widget Function( + BuildContext context, + MoosylPaymentMethodRenderProps props, +); + +/// Controller for [MoosylPaymentMethods]. +class MoosylPaymentMethodsController extends ChangeNotifier { + _MoosylPaymentMethodsContentState? _state; + + void _attach(_MoosylPaymentMethodsContentState state) { + _state = state; + } + + void _detach(_MoosylPaymentMethodsContentState state) { + if (_state == state) { + _state = null; + } + } + + /// Continues with the currently selected payment method. + Future continuePayment() async { + await _state?._continuePayment(); + } + + /// Returns the currently selected method, if mounted and selected. + ConfigurationListDataInner? get selectedMethod => _state?._selectedMethod; + + void _selectionDidChange() { + notifyListeners(); + } +} + +/// Standalone payment method picker that can be embedded in custom checkout UI. +/// +/// Use [controller] to trigger [MoosylPaymentMethodsController.continuePayment] +/// from a button owned by your screen. +class MoosylPaymentMethods extends StatelessWidget { + /// Creates a reusable payment method picker. + const MoosylPaymentMethods({ + super.key, + required this.publishableApiKey, + this.transactionId, + this.amountToPay = 0.0, + this.tax = 0.0, + this.totalAmount, + this.selectedMethodId, + this.onSelectMethod, + this.onPaymentSuccess, + this.onPaymentError, + this.onContinueLoadingChange, + this.controller, + this.primaryColor, + this.renderMethod, + this.showDefaultTitle = true, + this.isMasriviInBottomSheet = true, + this.masriviPresentation = MasriviWebViewPresentation.fullPage, + this.masriviPhoneNumber, + this.masriviBottomSheetHeight = 0.88, + }); + + /// Publishable API key used to load payment methods. + final String publishableApiKey; + + /// Transaction id used by [MoosylPaymentMethodsController.continuePayment]. + final String? transactionId; + + /// Amount to pay, used for validation when continuing. + final double amountToPay; + + /// Tax amount, used with [amountToPay] when [totalAmount] is not supplied. + final double tax; + + /// Total expected amount. Defaults to [amountToPay] + [tax]. + final double? totalAmount; + + /// Controlled selected method id. + final String? selectedMethodId; + + /// Called whenever a method is selected. + final ValueChanged? onSelectMethod; + + /// Called when payment succeeds. + final FutureOr Function(bool isSuccess)? onPaymentSuccess; + + /// Called when continuing fails. + final ValueChanged? onPaymentError; + + /// Called when continuePayment starts or finishes. + final ValueChanged? onContinueLoadingChange; + + /// Controller used by host UI to continue payment. + final MoosylPaymentMethodsController? controller; + + /// Accent color for the default rows and dialogs. + final Color? primaryColor; + + /// Custom row builder. Call `props.onSelect()` inside the returned widget. + final MoosylPaymentMethodBuilder? renderMethod; + + /// Whether the default UI should include the section title. + final bool showDefaultTitle; + + /// When true, Masrivi opens inside a bottom sheet from custom platform UIs. + final bool isMasriviInBottomSheet; + + /// How Masrivi should be presented when this picker opens the WebView. + final MasriviWebViewPresentation masriviPresentation; + + /// Optional phone number to prefill when the selected method opens Masrivi. + final String? masriviPhoneNumber; + + /// Height factor used when Masrivi is rendered as bottom-sheet content. + final double masriviBottomSheetHeight; + + @override + Widget build(BuildContext context) { + try { + context.read(); + return _MoosylPaymentMethodsContent( + selectedMethodId: selectedMethodId, + onSelectMethod: onSelectMethod, + onPaymentSuccess: onPaymentSuccess, + onPaymentError: onPaymentError, + onContinueLoadingChange: onContinueLoadingChange, + controller: controller, + primaryColor: primaryColor, + renderMethod: renderMethod, + showDefaultTitle: showDefaultTitle, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPresentation: masriviPresentation, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, + ownsProvider: false, + ); + } on ProviderNotFoundException catch (_) { + return ChangeNotifierProvider( + create: (_) => GetPaymentMethodsProvider( + publishableApiKey: publishableApiKey, + transactionId: transactionId ?? '', + totalAmount: totalAmount ?? amountToPay + tax, + ), + child: _MoosylPaymentMethodsContent( + selectedMethodId: selectedMethodId, + onSelectMethod: onSelectMethod, + onPaymentSuccess: onPaymentSuccess, + onPaymentError: onPaymentError, + onContinueLoadingChange: onContinueLoadingChange, + controller: controller, + primaryColor: primaryColor, + renderMethod: renderMethod, + showDefaultTitle: showDefaultTitle, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPresentation: masriviPresentation, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, + ownsProvider: true, + ), + ); + } + } +} + +class _MoosylPaymentMethodsContent extends StatefulWidget { + const _MoosylPaymentMethodsContent({ + required this.selectedMethodId, + required this.onSelectMethod, + required this.onPaymentSuccess, + required this.onPaymentError, + required this.onContinueLoadingChange, + required this.controller, + required this.primaryColor, + required this.renderMethod, + required this.showDefaultTitle, + required this.isMasriviInBottomSheet, + required this.masriviPresentation, + required this.masriviPhoneNumber, + required this.masriviBottomSheetHeight, + required this.ownsProvider, + }); + + final String? selectedMethodId; + final ValueChanged? onSelectMethod; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; + final ValueChanged? onPaymentError; + final ValueChanged? onContinueLoadingChange; + final MoosylPaymentMethodsController? controller; + final Color? primaryColor; + final MoosylPaymentMethodBuilder? renderMethod; + final bool showDefaultTitle; + final bool isMasriviInBottomSheet; + final MasriviWebViewPresentation masriviPresentation; + final String? masriviPhoneNumber; + final double masriviBottomSheetHeight; + final bool ownsProvider; + + @override + State<_MoosylPaymentMethodsContent> createState() => + _MoosylPaymentMethodsContentState(); +} + +class _MoosylPaymentMethodsContentState + extends State<_MoosylPaymentMethodsContent> { + String? _continueError; + + @override + void initState() { + super.initState(); + widget.controller?._attach(this); + } + + @override + void didUpdateWidget(covariant _MoosylPaymentMethodsContent oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.controller != widget.controller) { + oldWidget.controller?._detach(this); + widget.controller?._attach(this); + } + } + + @override + void dispose() { + widget.controller?._detach(this); + super.dispose(); + } + + ConfigurationListDataInner? get _selectedMethod { + final provider = context.read(); + final selectedId = widget.selectedMethodId ?? provider.pendingSelection?.id; + for (final method in provider.methods) { + if (method.id == selectedId) { + return method; + } + } + return null; + } + + Future _continuePayment() async { + final provider = context.read(); + final pendingSelection = _selectedMethod; + final transactionId = provider.transactionId; + + if (pendingSelection == null) { + return; + } + + if (transactionId.isEmpty) { + setState(() { + _continueError = 'Transaction ID is required to continue payment.'; + }); + return; + } + + setState(() { + _continueError = null; + }); + widget.onContinueLoadingChange?.call(true); + + try { + final methodToShow = + await provider.setPaymentMethodWithValidation(pendingSelection); + if (!mounted) return; + + if (methodToShow == null) { + final selected = provider.selected; + if (selected == null) { + return; + } + + final masriviPresentation = widget.isMasriviInBottomSheet + ? MasriviWebViewPresentation.bottomSheet + : widget.masriviPresentation; + + final masriviView = MasriviView( + publishableApiKey: provider.publishableApiKey, + transactionId: provider.transactionId, + configurationId: selected.id, + onPaymentSuccess: widget.onPaymentSuccess, + onBackPress: () => Navigator.of(context).pop(), + presentation: masriviPresentation, + bottomSheetHeight: widget.masriviBottomSheetHeight, + phoneNumber: + widget.masriviPhoneNumber ?? provider.paymentRequest?.phoneNumber, + ); + + if (masriviPresentation == MasriviWebViewPresentation.bottomSheet) { + await showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (_) => masriviView, + ); + } else { + await Navigator.of(context).push( + MaterialPageRoute(builder: (_) => masriviView), + ); + } + + if (mounted) { + provider.setPaymentMethod(null); + } + return; + } + + final primaryColor = + widget.primaryColor ?? Theme.of(context).colorScheme.primary; + await _showPaymentDialogForMethod( + context, + publishableApiKey: provider.publishableApiKey, + transactionId: provider.transactionId, + method: methodToShow, + primaryColor: primaryColor, + onPaymentSuccess: widget.onPaymentSuccess, + ); + } catch (error) { + widget.onPaymentError?.call(error); + if (mounted) { + setState(() { + _continueError = error.toString(); + }); + } + } finally { + widget.onContinueLoadingChange?.call(false); + } + } + + @override + Widget build(BuildContext context) { + final provider = context.watch(); + final localizationHelper = MoosylLocalization.of(context)!; + final textTheme = Theme.of(context).textTheme; + final primaryColor = + widget.primaryColor ?? Theme.of(context).colorScheme.primary; + final isRTL = Directionality.of(context) == TextDirection.rtl; + + if (provider.isLoading) { + return AppContainer( + padding: const EdgeInsets.all(24), + border: widget.renderMethod == null + ? Border.all(color: Colors.grey.shade300) + : null, + borderRadius: BorderRadius.circular(8), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(color: primaryColor), + const SizedBox(height: 12), + Text(localizationHelper.sending), + ], + ), + ), + ); + } + + if (provider.error != null) { + final error = provider.error!; + WidgetsBinding.instance.addPostFrameCallback((_) { + widget.onPaymentError?.call(error); + }); + return AppErrorWidget( + message: ExceptionMapper.getErrorMessage(error, context), + onRetry: provider.getMethods, + ); + } + + if (provider.methods.isEmpty) { + return AppContainer( + padding: const EdgeInsets.all(24), + border: widget.renderMethod == null + ? Border.all(color: Colors.grey.shade300) + : null, + borderRadius: BorderRadius.circular(8), + child: Text( + localizationHelper.paymentMethod, + textAlign: TextAlign.center, + ), + ); + } + + final selectedId = widget.selectedMethodId ?? provider.pendingSelection?.id; + final selectionErrorMessage = provider.selectionError != null + ? SelectionErrorType.fromStr(provider.selectionError!) + .message(localizationHelper) + : null; + + final content = Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + spacing: 10, + children: [ + if (widget.renderMethod == null && widget.showDefaultTitle) ...[ + Text( + localizationHelper.chooseHowYouWouldLikeToPay, + style: textTheme.titleMedium + ?.copyWith(fontWeight: FontWeight.w600, fontSize: 18), + ), + ], + ...provider.methods.map((method) { + final type = PaymentMethodTypes.fromString(method.type); + final isSelected = selectedId == method.id; + final props = MoosylPaymentMethodRenderProps( + method: method, + type: type, + title: type.title(context), + isSelected: isSelected, + selectedMethodId: selectedId, + isRTL: isRTL, + onSelect: () { + if (widget.selectedMethodId == null) { + provider.setPendingSelection(method); + } + widget.onSelectMethod?.call(method); + widget.controller?._selectionDidChange(); + }, + ); + + if (widget.renderMethod != null) { + return widget.renderMethod!(context, props); + } + + return _MethodRow( + method: method, + isSelected: isSelected, + onTap: props.onSelect, + primaryColor: primaryColor, + ); + }), + if (selectionErrorMessage != null || _continueError != null) + Padding( + padding: const EdgeInsets.only(top: 4), + child: Text( + selectionErrorMessage ?? _continueError!, + style: textTheme.bodyMedium?.copyWith(color: Colors.red), + ), + ), + ], + ); + + if (widget.renderMethod != null) { + return content; + } + + return AppContainer( + // padding: const EdgeInsets.all(16), + // border: Border.all(color: Colors.grey.shade300), + // borderRadius: BorderRadius.circular(8), + child: content, + ); + } +} + /// A widget that displays the available payment methods for selection. /// /// This widget allows users to choose a payment method from a list of options. @@ -112,7 +600,6 @@ class _SelectPaymentMethodContent extends StatelessWidget { .message(localizationHelper) : null; - final methods = provider.methods; final pendingSelection = provider.pendingSelection; final bodyContent = Padding( @@ -127,34 +614,12 @@ class _SelectPaymentMethodContent extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 8), - AppContainer( - padding: const EdgeInsets.all(16), - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(8), - child: RadioGroup( - groupValue: pendingSelection, - onChanged: (value) { - if (value != null) provider.setPendingSelection(value); - }, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.min, - spacing: 8, - children: [ - Text(localizationHelper.chooseHowYouWouldLikeToPay, - style: textTheme.titleMedium), - const SizedBox(height: 10), - ...methods.asMap().entries.map((e) { - final method = e.value; - return _MethodRow( - method: method, - isSelected: pendingSelection?.id == method.id, - onTap: () => provider.setPendingSelection(method), - ); - }), - ], - ), - ), + MoosylPaymentMethods( + publishableApiKey: provider.publishableApiKey, + transactionId: provider.transactionId, + amountToPay: amountToPay, + tax: tax, + totalAmount: totalAmount, ), ], ), @@ -244,7 +709,19 @@ class _SelectPaymentMethodContent extends StatelessWidget { backgroundColor: Colors.white, appBar: AppBar( backgroundColor: Colors.white, - title: Text(localizationHelper.choosePaymentMethods), + elevation: 0, + scrolledUnderElevation: 0, + centerTitle: false, + leadingWidth: onBackPress != null ? 48 : 0, + titleSpacing: onBackPress != null ? 0 : 16, + title: Text( + localizationHelper.choosePaymentMethods, + style: textTheme.titleMedium?.copyWith( + fontSize: 20, + fontWeight: FontWeight.w600, + color: Colors.black, + ), + ), leading: onBackPress != null ? IconButton( onPressed: onBackPress, @@ -418,6 +895,152 @@ class _SelectPaymentMethodContent extends StatelessWidget { } } +Future _showPaymentDialogForMethod( + BuildContext context, { + required String publishableApiKey, + required String transactionId, + required ConfigurationListDataInner method, + required Color primaryColor, + required FutureOr Function(bool isSuccess)? onPaymentSuccess, +}) async { + if (PaymentMethodTypes.fromString(method.type) == + PaymentMethodTypes.bankily) { + _showBankilyPaymentDialog( + context, + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: onPaymentSuccess, + ); + } else if (PaymentMethodTypes.fromString(method.type) == + PaymentMethodTypes.sedad || + PaymentMethodTypes.fromString(method.type) == + PaymentMethodTypes.bimBank) { + await _showSedadPaymentDialog( + context, + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + primaryColor: primaryColor, + onPaymentSuccess: onPaymentSuccess, + ); + } +} + +Future _showSedadPaymentDialog( + BuildContext context, { + required String publishableApiKey, + required String transactionId, + required ConfigurationListDataInner method, + required Color primaryColor, + required FutureOr Function(bool isSuccess)? onPaymentSuccess, +}) async { + final payProvider = PayProvider( + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: (payment) async => await onPaymentSuccess?.call(payment), + ); + final getPaymentMethodsProvider = context.read(); + + showDialog( + context: context, + barrierDismissible: false, + builder: (ctx) => const Center( + child: CircularProgressIndicator(), + ), + ); + + final paymentCode = await payProvider.getPaymentCodeForSedad(); + + if (context.mounted) { + Navigator.of(context).pop(); + } + if (!context.mounted) return; + if (paymentCode == null || paymentCode.isEmpty) { + if (context.mounted && payProvider.error != null) { + Feedbacks.flushBar( + context: context, + message: ExceptionMapper.getErrorMessage(payProvider.error, context), + error: true, + ); + } + return; + } + + showDialog( + context: context, + barrierDismissible: false, + builder: (dialogContext) { + payProvider.onBeforePaymentSuccess = () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }; + return ChangeNotifierProvider.value( + value: payProvider, + child: _DialogWithPayProvider( + payProvider: payProvider, + builder: (paymentRequest) => SedadView( + paymentCodeDisplay: paymentCode, + paymentRequest: paymentRequest, + onClose: () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }, + ), + ), + ); + }, + ).then((_) { + getPaymentMethodsProvider.setPaymentMethod(null); + }); +} + +void _showBankilyPaymentDialog( + BuildContext context, { + required String publishableApiKey, + required String transactionId, + required ConfigurationListDataInner method, + required FutureOr Function(bool isSuccess)? onPaymentSuccess, +}) { + final payProvider = PayProvider( + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: (payment) async => await onPaymentSuccess?.call(payment), + ); + final getPaymentMethodsProvider = context.read(); + + showDialog( + context: context, + barrierDismissible: false, + builder: (dialogContext) { + payProvider.onBeforePaymentSuccess = () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }; + return ChangeNotifierProvider.value( + value: payProvider, + child: _DialogWithPayProvider( + payProvider: payProvider, + builder: (_) => BankilyView( + method: method, + publishableApiKey: publishableApiKey, + transactionId: transactionId, + paymentCodeDisplay: payProvider.paymentCode, + onClose: () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }, + ), + ), + ); + }, + ).then((_) { + getPaymentMethodsProvider.setPaymentMethod(null); + }); +} + /// Shows loading until [PayProvider] has payment request, then builds content. class _DialogWithPayProvider extends StatelessWidget { const _DialogWithPayProvider({ @@ -484,25 +1107,29 @@ class _MethodRow extends StatelessWidget { required this.method, required this.isSelected, required this.onTap, + this.primaryColor, }); final ConfigurationListDataInner method; final bool isSelected; final VoidCallback onTap; + final Color? primaryColor; @override Widget build(BuildContext context) { final localizationHelper = MoosylLocalization.of(context)!; final textTheme = Theme.of(context).textTheme; - final primaryColor = Theme.of(context).colorScheme.primary; + final effectivePrimary = + primaryColor ?? Theme.of(context).colorScheme.primary; return InkWell( onTap: onTap, child: AppContainer( padding: const EdgeInsetsDirectional.all(10), - border: - Border.all(color: isSelected ? primaryColor : Colors.grey.shade300), + border: Border.all( + color: isSelected ? effectivePrimary : Colors.grey.shade300, + ), borderRadius: BorderRadius.circular(8), child: Row( children: [ @@ -542,10 +1169,28 @@ class _MethodRow extends StatelessWidget { ], ), ), - // Radio - Radio( - value: method, - fillColor: WidgetStateProperty.all(primaryColor), + Container( + width: 22, + height: 22, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: effectivePrimary, + width: isSelected ? 2 : 1.5, + ), + ), + child: isSelected + ? Center( + child: Container( + width: 12, + height: 12, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: effectivePrimary, + ), + ), + ) + : null, ), ], ), diff --git a/lib/src/providers/get_payment_methods_provider.dart b/lib/src/providers/get_payment_methods_provider.dart index f4b0aab..c094447 100644 --- a/lib/src/providers/get_payment_methods_provider.dart +++ b/lib/src/providers/get_payment_methods_provider.dart @@ -31,11 +31,13 @@ class GetPaymentMethodsProvider extends ChangeNotifier { /// Constructs a [GetPaymentMethodsProvider]. GetPaymentMethodsProvider({ required this.publishableApiKey, - required this.transactionId, + this.transactionId = '', required this.totalAmount, }) { getMethods(); - getPaymentRequest(); + if (transactionId.isNotEmpty) { + getPaymentRequest(); + } } /// Holds any error messages that occur during method retrieval. @@ -85,6 +87,7 @@ class GetPaymentMethodsProvider extends ChangeNotifier { } final paymentRequest = result.result!; + this.paymentRequest = paymentRequest; if (paymentRequest.amount == 0) { selectionError = 'paymentRequestFullyPaid'; @@ -189,6 +192,10 @@ class GetPaymentMethodsProvider extends ChangeNotifier { /// Updates the payment request details and notifies listeners when the data changes. void getPaymentRequest() async { + if (transactionId.isEmpty) { + return; + } + final result = await ErrorHandlers.catchErrors( () => GetPaymentRequestService(publishableApiKey).get(transactionId), showFlashBar: false, From 6c3475b3aaf66a04bc2380235d2b3b135e9bbfc7 Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 4 May 2026 15:16:45 +0000 Subject: [PATCH 6/8] Add payment summary item model and enhance Moosyl payment flow with summary validation. Introduce loading builder for payment methods and update MoosylView to support summary items. Refactor AppButton to include optional suffix label. --- lib/moosyl.dart | 3 + lib/src/models/payment_summary_item.dart | 17 + lib/src/moosyl_flutter.dart | 11 +- lib/src/pages/moosyl_view.dart | 35 +- lib/src/pages/payment_methods_view.dart | 636 ++++++++++++++++++----- lib/src/widgets/buttons.dart | 89 +++- 6 files changed, 629 insertions(+), 162 deletions(-) create mode 100644 lib/src/models/payment_summary_item.dart diff --git a/lib/moosyl.dart b/lib/moosyl.dart index 04833aa..3a46314 100644 --- a/lib/moosyl.dart +++ b/lib/moosyl.dart @@ -10,8 +10,11 @@ export 'src/pages/payment_methods_view.dart' show MoosylPaymentMethodBuilder, MoosylPaymentMethodRenderProps, + MoosylPaymentMethodsLoadingBuilder, + MoosylPaymentMethodsLoadingProps, MoosylPaymentMethods, MoosylPaymentMethodsController; export 'src/models/payment_method_model.dart'; +export 'src/models/payment_summary_item.dart'; export 'src/moosyl_flutter.dart'; export 'l10n/moosyl_localization.dart'; diff --git a/lib/src/models/payment_summary_item.dart b/lib/src/models/payment_summary_item.dart new file mode 100644 index 0000000..cd1dd7b --- /dev/null +++ b/lib/src/models/payment_summary_item.dart @@ -0,0 +1,17 @@ +/// A summary row shown in the Moosyl payment flow. +class MoosylPaymentSummaryItem { + /// Creates a payment summary item. + const MoosylPaymentSummaryItem({ + required this.label, + required this.amount, + }); + + /// Label shown for this row. + /// + /// Known keys are localized: `amountToPay`, `tax`, `total`, and + /// `totalAmount`. Other values are shown as provided. + final String label; + + /// Amount for this row in MRU. + final double amount; +} diff --git a/lib/src/moosyl_flutter.dart b/lib/src/moosyl_flutter.dart index 3a6c3c8..4693f97 100644 --- a/lib/src/moosyl_flutter.dart +++ b/lib/src/moosyl_flutter.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:moosyl_flutter/src/models/payment_summary_item.dart'; import 'package:moosyl_flutter/src/pages/moosyl_view.dart'; /// Convenience class to open the payment flow. @@ -12,12 +13,16 @@ class MoosylFlutter { MoosylFlutter._(); /// Opens the payment flow. Returns [PaymentSuccess] on success, `null` when closed without payment. + /// + /// When [items] is supplied, the summary total is validated against the + /// payment request amount. static Future show( BuildContext context, { required String publishableApiKey, required String transactionId, double amountToPay = 0.0, double tax = 0.0, + List? items, bool isFullPage = true, bool isMasriviInBottomSheet = false, String? masriviPhoneNumber, @@ -32,6 +37,7 @@ class MoosylFlutter { transactionId: transactionId, amountToPay: amountToPay, tax: tax, + items: items, isFullPage: true, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, @@ -53,14 +59,17 @@ class MoosylFlutter { minChildSize: 0.5, maxChildSize: 1, builder: (ctx, scrollController) => Container( - decoration: BoxDecoration( + decoration: const BoxDecoration( + color: Colors.white, borderRadius: BorderRadius.vertical(top: Radius.circular(16)), ), + clipBehavior: Clip.antiAlias, child: MoosylView( publishableApiKey: publishableApiKey, transactionId: transactionId, amountToPay: amountToPay, tax: tax, + items: items, isFullPage: false, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, diff --git a/lib/src/pages/moosyl_view.dart b/lib/src/pages/moosyl_view.dart index 33be59c..5fa5289 100644 --- a/lib/src/pages/moosyl_view.dart +++ b/lib/src/pages/moosyl_view.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:moosyl_flutter/l10n/generated/moosyl_localization.dart'; +import 'package:moosyl_flutter/src/models/payment_summary_item.dart'; import 'package:moosyl_flutter/src/pages/masrivi_view.dart'; import 'package:moosyl_flutter/src/pages/payment_methods_view.dart'; import 'package:moosyl_flutter/src/providers/get_payment_methods_provider.dart'; @@ -24,6 +25,7 @@ class MoosylView extends StatelessWidget { this.onBackPress, this.amountToPay = 0.0, this.tax = 0.0, + this.items, this.isFullPage = true, this.isMasriviInBottomSheet = true, this.masriviPhoneNumber, @@ -49,6 +51,12 @@ class MoosylView extends StatelessWidget { /// Tax amount (displayed in summary). Defaults to 0. final double tax; + /// Summary rows displayed under the payment methods. + /// + /// When supplied, the sum of all item amounts is validated against the + /// payment request amount before continuing. + final List? items; + /// When true, payment method selection shows as full page. When false, shows as bottom sheet. final bool isFullPage; @@ -63,14 +71,21 @@ class MoosylView extends StatelessWidget { @override Widget build(BuildContext context) { + final totalAmount = _calculateTotalAmount( + items: items, + amountToPay: amountToPay, + tax: tax, + ); + return Material( + color: Colors.white, child: MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => GetPaymentMethodsProvider( publishableApiKey: publishableApiKey, transactionId: transactionId, - totalAmount: amountToPay + tax, + totalAmount: totalAmount, ), ), ], @@ -87,7 +102,8 @@ class MoosylView extends StatelessWidget { onBackPress: onBackPress, amountToPay: amountToPay, tax: tax, - totalAmount: amountToPay + tax, + items: items, + totalAmount: totalAmount, transactionId: transactionId, onPaymentSuccess: onPaymentSuccess, isFullPage: isFullPage, @@ -146,3 +162,18 @@ class MoosylView extends StatelessWidget { ); } } + +double _calculateTotalAmount({ + required List? items, + required double amountToPay, + required double tax, +}) { + if (items != null) { + return items.fold( + 0, + (total, item) => total + item.amount, + ); + } + + return amountToPay + tax; +} diff --git a/lib/src/pages/payment_methods_view.dart b/lib/src/pages/payment_methods_view.dart index dd70200..2ed852e 100644 --- a/lib/src/pages/payment_methods_view.dart +++ b/lib/src/pages/payment_methods_view.dart @@ -1,10 +1,12 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:intl/intl.dart' show NumberFormat; import 'package:moosyl/moosyl.dart'; import 'package:moosyl_flutter/l10n/generated/moosyl_localization.dart'; import 'package:moosyl_flutter/src/helpers/exception_handling/exception_mapper.dart'; import 'package:moosyl_flutter/src/models/payment_method_model.dart'; +import 'package:moosyl_flutter/src/models/payment_summary_item.dart'; import 'package:moosyl_flutter/src/models/selection_error.dart'; import 'package:moosyl_flutter/src/pages/bankily_view.dart'; import 'package:moosyl_flutter/src/pages/masrivi_view.dart'; @@ -58,6 +60,31 @@ typedef MoosylPaymentMethodBuilder = Widget Function( MoosylPaymentMethodRenderProps props, ); +/// Data passed to [MoosylPaymentMethodsLoadingBuilder]. +class MoosylPaymentMethodsLoadingProps { + /// Creates render props for the payment methods loading state. + const MoosylPaymentMethodsLoadingProps({ + required this.primaryColor, + required this.locale, + required this.isRTL, + }); + + /// Accent color used by the default UI. + final Color primaryColor; + + /// Active locale from the surrounding localization. + final Locale locale; + + /// Whether the surrounding directionality is RTL. + final bool isRTL; +} + +/// Builds custom loading content for [MoosylPaymentMethods]. +typedef MoosylPaymentMethodsLoadingBuilder = Widget Function( + BuildContext context, + MoosylPaymentMethodsLoadingProps props, +); + /// Controller for [MoosylPaymentMethods]. class MoosylPaymentMethodsController extends ChangeNotifier { _MoosylPaymentMethodsContentState? _state; @@ -106,6 +133,8 @@ class MoosylPaymentMethods extends StatelessWidget { this.controller, this.primaryColor, this.renderMethod, + this.loadingComponent, + this.loadingBuilder, this.showDefaultTitle = true, this.isMasriviInBottomSheet = true, this.masriviPresentation = MasriviWebViewPresentation.fullPage, @@ -152,6 +181,12 @@ class MoosylPaymentMethods extends StatelessWidget { /// Custom row builder. Call `props.onSelect()` inside the returned widget. final MoosylPaymentMethodBuilder? renderMethod; + /// Custom loading widget shown while payment methods are loading. + final Widget? loadingComponent; + + /// Custom loading builder shown while payment methods are loading. + final MoosylPaymentMethodsLoadingBuilder? loadingBuilder; + /// Whether the default UI should include the section title. final bool showDefaultTitle; @@ -180,6 +215,8 @@ class MoosylPaymentMethods extends StatelessWidget { controller: controller, primaryColor: primaryColor, renderMethod: renderMethod, + loadingComponent: loadingComponent, + loadingBuilder: loadingBuilder, showDefaultTitle: showDefaultTitle, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPresentation: masriviPresentation, @@ -203,6 +240,8 @@ class MoosylPaymentMethods extends StatelessWidget { controller: controller, primaryColor: primaryColor, renderMethod: renderMethod, + loadingComponent: loadingComponent, + loadingBuilder: loadingBuilder, showDefaultTitle: showDefaultTitle, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPresentation: masriviPresentation, @@ -225,6 +264,8 @@ class _MoosylPaymentMethodsContent extends StatefulWidget { required this.controller, required this.primaryColor, required this.renderMethod, + required this.loadingComponent, + required this.loadingBuilder, required this.showDefaultTitle, required this.isMasriviInBottomSheet, required this.masriviPresentation, @@ -241,6 +282,8 @@ class _MoosylPaymentMethodsContent extends StatefulWidget { final MoosylPaymentMethodsController? controller; final Color? primaryColor; final MoosylPaymentMethodBuilder? renderMethod; + final Widget? loadingComponent; + final MoosylPaymentMethodsLoadingBuilder? loadingBuilder; final bool showDefaultTitle; final bool isMasriviInBottomSheet; final MasriviWebViewPresentation masriviPresentation; @@ -388,23 +431,23 @@ class _MoosylPaymentMethodsContentState final isRTL = Directionality.of(context) == TextDirection.rtl; if (provider.isLoading) { - return AppContainer( - padding: const EdgeInsets.all(24), - border: widget.renderMethod == null - ? Border.all(color: Colors.grey.shade300) - : null, - borderRadius: BorderRadius.circular(8), - child: Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - CircularProgressIndicator(color: primaryColor), - const SizedBox(height: 12), - Text(localizationHelper.sending), - ], - ), - ), + final loadingProps = MoosylPaymentMethodsLoadingProps( + primaryColor: primaryColor, + locale: Localizations.localeOf(context), + isRTL: isRTL, ); + final loadingContent = widget.loadingBuilder?.call( + context, + loadingProps, + ) ?? + widget.loadingComponent ?? + _PaymentMethodsLoadingSkeleton(isRTL: isRTL); + + if (widget.renderMethod != null) { + return loadingContent; + } + + return AppContainer(child: loadingContent); } if (provider.error != null) { @@ -441,7 +484,6 @@ class _MoosylPaymentMethodsContentState final content = Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisSize: MainAxisSize.min, - spacing: 10, children: [ if (widget.renderMethod == null && widget.showDefaultTitle) ...[ Text( @@ -449,6 +491,9 @@ class _MoosylPaymentMethodsContentState style: textTheme.titleMedium ?.copyWith(fontWeight: FontWeight.w600, fontSize: 18), ), + const SizedBox( + height: 10, + ) ], ...provider.methods.map((method) { final type = PaymentMethodTypes.fromString(method.type); @@ -516,6 +561,7 @@ class SelectPaymentMethodPage extends StatelessWidget { this.onBackPress, this.amountToPay = 0.0, this.tax = 0.0, + this.items, this.totalAmount = 0.0, required this.transactionId, this.onPaymentSuccess, @@ -534,6 +580,9 @@ class SelectPaymentMethodPage extends StatelessWidget { /// The tax amount (displayed in summary). final double tax; + /// Summary rows displayed under the payment methods. + final List? items; + /// The total amount including tax (displayed on the pay button). final double totalAmount; @@ -549,6 +598,7 @@ class SelectPaymentMethodPage extends StatelessWidget { onBackPress: onBackPress, amountToPay: amountToPay, tax: tax, + items: items, totalAmount: totalAmount, transactionId: transactionId, onPaymentSuccess: onPaymentSuccess, @@ -563,6 +613,7 @@ class _SelectPaymentMethodContent extends StatelessWidget { required this.onBackPress, required this.amountToPay, required this.tax, + required this.items, required this.totalAmount, required this.transactionId, required this.onPaymentSuccess, @@ -572,6 +623,7 @@ class _SelectPaymentMethodContent extends StatelessWidget { final VoidCallback? onBackPress; final double amountToPay; final double tax; + final List? items; final double totalAmount; final String transactionId; final FutureOr Function(bool isSuccess)? onPaymentSuccess; @@ -585,14 +637,26 @@ class _SelectPaymentMethodContent extends StatelessWidget { final textTheme = Theme.of(context).textTheme; if (provider.isLoading) { - return const Center(child: CircularProgressIndicator()); + final loading = const Center(child: CircularProgressIndicator()); + return isFullPage + ? loading + : ColoredBox( + color: Colors.white, + child: loading, + ); } if (provider.error != null) { - return AppErrorWidget( + final errorView = AppErrorWidget( message: ExceptionMapper.getErrorMessage(provider.error, context), onRetry: provider.getMethods, ); + return isFullPage + ? errorView + : ColoredBox( + color: Colors.white, + child: errorView, + ); } final selectionErrorMessage = provider.selectionError != null @@ -601,6 +665,23 @@ class _SelectPaymentMethodContent extends StatelessWidget { : null; final pendingSelection = provider.pendingSelection; + final summaryItems = items ?? + [ + if (amountToPay > 0) + MoosylPaymentSummaryItem( + label: 'amountToPay', + amount: amountToPay, + ), + if (tax > 0) + MoosylPaymentSummaryItem( + label: 'tax', + amount: tax, + ), + ]; + final shouldShowSummary = items != null || summaryItems.isNotEmpty; + final displayTotal = provider.paymentRequest?.amount ?? + (totalAmount > 0 ? totalAmount : _calculateSummaryTotal(summaryItems)); + final displayTotalText = '${_formatAmount(displayTotal)} MRU'; final bodyContent = Padding( padding: const EdgeInsets.symmetric(horizontal: 16), @@ -635,59 +716,19 @@ class _SelectPaymentMethodContent extends StatelessWidget { Text(selectionErrorMessage, style: textTheme.bodyMedium?.copyWith(color: Colors.red)), const SizedBox(height: 16), - AppContainer( - padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 12), - color: Colors.grey.shade100, - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(8), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (amountToPay > 0 && tax > 0) - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(localizationHelper.amountToPay, - style: textTheme.bodyLarge), - Text( - '${amountToPay > 0 ? amountToPay.toStringAsFixed(0) : (provider.paymentRequest?.amount.toStringAsFixed(0) ?? '0')} MRU', - style: textTheme.bodyLarge - ?.copyWith(fontWeight: FontWeight.bold)), - ], - ), - if (tax > 0) ...[ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(localizationHelper.tax, - style: textTheme.bodyLarge), - Text('${tax.toStringAsFixed(0)} MRU', - style: textTheme.bodyLarge - ?.copyWith(fontWeight: FontWeight.bold)), - ], - ), - Divider(color: Colors.grey.shade300), - ], - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(localizationHelper.totalAmount, - style: textTheme.bodyLarge), - Text( - '${totalAmount > 0 ? totalAmount.toStringAsFixed(0) : (provider.paymentRequest?.amount.toStringAsFixed(0) ?? '0')} MRU', - style: textTheme.bodyLarge - ?.copyWith(fontWeight: FontWeight.bold)), - ], - ), - ], - )), + if (shouldShowSummary) + _PaymentSummary( + items: summaryItems, + totalText: displayTotalText, + localization: localizationHelper, + ), AppButton( - minHeight: 50, + minHeight: 60, + borderRadius: BorderRadius.circular(18), labelText: provider.isValidating ? localizationHelper.sending : localizationHelper.pay, + suffixLabelText: displayTotalText, onPressed: pendingSelection == null || provider.isValidating ? null : () => _onPayPressed( @@ -734,7 +775,10 @@ class _SelectPaymentMethodContent extends StatelessWidget { ); } - return bodyContent; + return ColoredBox( + color: Colors.white, + child: bodyContent, + ); } Future _onPayPressed( @@ -895,6 +939,127 @@ class _SelectPaymentMethodContent extends StatelessWidget { } } +class _PaymentSummary extends StatelessWidget { + const _PaymentSummary({ + required this.items, + required this.totalText, + required this.localization, + }); + + final List items; + final String totalText; + final MoosylLocalization localization; + + @override + Widget build(BuildContext context) { + final textTheme = Theme.of(context).textTheme; + final labelStyle = textTheme.bodyLarge?.copyWith( + color: Colors.grey.shade700, + ); + final valueStyle = textTheme.bodyLarge?.copyWith( + color: const Color(0xFF111111), + ); + final totalStyle = textTheme.bodyLarge?.copyWith( + color: const Color(0xFF111111), + fontWeight: FontWeight.w600, + ); + + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 12), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ...items.map( + (item) => Padding( + padding: const EdgeInsets.only(bottom: 8), + child: _PaymentSummaryRow( + label: _localizedSummaryLabel(item.label, localization), + value: '${_formatAmount(item.amount)} MRU', + labelStyle: labelStyle, + valueStyle: valueStyle, + ), + ), + ), + if (items.isNotEmpty) + Divider( + height: 18, + thickness: 2, + color: Colors.grey.shade300, + ), + _PaymentSummaryRow( + label: localization.totalAmount, + value: totalText, + labelStyle: totalStyle, + valueStyle: totalStyle, + ), + ], + ), + ); + } +} + +class _PaymentSummaryRow extends StatelessWidget { + const _PaymentSummaryRow({ + required this.label, + required this.value, + required this.labelStyle, + required this.valueStyle, + }); + + final String label; + final String value; + final TextStyle? labelStyle; + final TextStyle? valueStyle; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: Text( + label, + style: labelStyle, + ), + ), + const SizedBox(width: 8), + Text( + value, + style: valueStyle, + ), + ], + ); + } +} + +double _calculateSummaryTotal(List items) { + return items.fold( + 0, + (total, item) => total + item.amount, + ); +} + +String _formatAmount(num value) { + return NumberFormat.decimalPattern('fr_FR').format(value.round()); +} + +String _localizedSummaryLabel( + String label, + MoosylLocalization localization, +) { + switch (label) { + case 'amountToPay': + return localization.amountToPay; + case 'tax': + return localization.tax; + case 'total': + case 'totalAmount': + return localization.totalAmount; + default: + return label; + } +} + Future _showPaymentDialogForMethod( BuildContext context, { required String publishableApiKey, @@ -1102,6 +1267,153 @@ class _DialogWithPayProvider extends StatelessWidget { } } +class _PaymentMethodsLoadingSkeleton extends StatefulWidget { + const _PaymentMethodsLoadingSkeleton({required this.isRTL}); + + final bool isRTL; + + @override + State<_PaymentMethodsLoadingSkeleton> createState() => + _PaymentMethodsLoadingSkeletonState(); +} + +class _PaymentMethodsLoadingSkeletonState + extends State<_PaymentMethodsLoadingSkeleton> + with SingleTickerProviderStateMixin { + late final AnimationController _controller; + late final Animation _shimmerAnimation; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 1100), + )..repeat(); + _shimmerAnimation = Tween(begin: -80, end: 80).animate( + CurvedAnimation(parent: _controller, curve: Curves.linear), + ); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Directionality( + textDirection: widget.isRTL ? TextDirection.rtl : TextDirection.ltr, + child: Column( + mainAxisSize: MainAxisSize.min, + children: List.generate( + 3, + (index) => _PaymentMethodsLoadingSkeletonRow( + shimmerAnimation: _shimmerAnimation, + ), + ), + ), + ); + } +} + +class _PaymentMethodsLoadingSkeletonRow extends StatelessWidget { + const _PaymentMethodsLoadingSkeletonRow({ + required this.shimmerAnimation, + }); + + final Animation shimmerAnimation; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 12), + child: Row( + children: [ + _LoadingShimmerBlock( + width: 46, + height: 46, + borderRadius: BorderRadius.circular(8), + shimmerAnimation: shimmerAnimation, + ), + const SizedBox(width: 12), + Expanded( + child: Align( + alignment: AlignmentDirectional.centerStart, + child: FractionallySizedBox( + widthFactor: 0.68, + alignment: AlignmentDirectional.centerStart, + child: _LoadingShimmerBlock( + height: 15, + borderRadius: BorderRadius.circular(8), + shimmerAnimation: shimmerAnimation, + ), + ), + ), + ), + const SizedBox(width: 12), + _LoadingShimmerBlock( + width: 18, + height: 18, + borderRadius: BorderRadius.circular(9), + shimmerAnimation: shimmerAnimation, + ), + ], + ), + ), + ); + } +} + +class _LoadingShimmerBlock extends StatelessWidget { + const _LoadingShimmerBlock({ + required this.height, + required this.borderRadius, + required this.shimmerAnimation, + this.width, + }); + + final double? width; + final double height; + final BorderRadius borderRadius; + final Animation shimmerAnimation; + + @override + Widget build(BuildContext context) { + return ClipRRect( + borderRadius: borderRadius, + child: ColoredBox( + color: const Color(0xFFECEFF1), + child: SizedBox( + width: width, + height: height, + child: AnimatedBuilder( + animation: shimmerAnimation, + builder: (context, child) { + return Transform.translate( + offset: Offset(shimmerAnimation.value, 0), + child: child, + ); + }, + child: FractionallySizedBox( + widthFactor: 0.55, + alignment: Alignment.centerLeft, + child: DecoratedBox( + decoration: BoxDecoration( + color: Color.fromRGBO(255, 255, 255, 0.55), + ), + ), + ), + ), + ), + ), + ); + } +} + class _MethodRow extends StatelessWidget { const _MethodRow({ required this.method, @@ -1118,82 +1430,134 @@ class _MethodRow extends StatelessWidget { @override Widget build(BuildContext context) { - final localizationHelper = MoosylLocalization.of(context)!; final textTheme = Theme.of(context).textTheme; final effectivePrimary = primaryColor ?? Theme.of(context).colorScheme.primary; - return InkWell( - onTap: onTap, - child: AppContainer( - padding: const EdgeInsetsDirectional.all(10), - border: Border.all( - color: isSelected ? effectivePrimary : Colors.grey.shade300, - ), - borderRadius: BorderRadius.circular(8), - child: Row( - children: [ - // Icon - square bordered - Container( - width: 48, - height: 48, - decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade300), - borderRadius: BorderRadius.circular(8), - ), - clipBehavior: Clip.antiAlias, - child: Center( - child: PaymentMethodTypes.fromString(method.type) - .icon - .apply(size: 40), - ), - ), - const SizedBox(width: 16), - // Name + subtitle - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - PaymentMethodTypes.fromString(method.type).title(context), - style: textTheme.titleMedium, - ), - const SizedBox(height: 4), - Text( - isSelected - ? localizationHelper.selected - : localizationHelper.tapToUse, - style: textTheme.bodyMedium, + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6), + child: TweenAnimationBuilder( + tween: Tween(end: isSelected ? 1 : 0), + duration: const Duration(milliseconds: 180), + curve: Curves.easeOutCubic, + builder: (context, value, _) { + return Stack( + clipBehavior: Clip.none, + children: [ + Positioned.fill( + top: -2, + right: -2, + bottom: -2, + left: -2, + child: IgnorePointer( + child: Transform.scale( + scale: 0.98 + (0.02 * value), + child: Opacity( + opacity: value, + child: DecoratedBox( + decoration: BoxDecoration( + border: Border.all( + color: effectivePrimary, + width: 2, + ), + borderRadius: BorderRadius.circular(18), + ), + ), + ), ), - ], - ), - ), - Container( - width: 22, - height: 22, - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all( - color: effectivePrimary, - width: isSelected ? 2 : 1.5, ), ), - child: isSelected - ? Center( - child: Container( - width: 12, - height: 12, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: effectivePrimary, + Transform.scale( + scale: 1 - (0.005 * value), + child: Material( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + child: InkWell( + splashColor: Colors.transparent, + onTap: onTap, + borderRadius: BorderRadius.circular(16), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 12, + ), + decoration: BoxDecoration( + border: Border.all( + color: const Color(0xFFEDF3FF), ), + borderRadius: BorderRadius.circular(16), ), - ) - : null, - ), - ], - ), + child: Row( + children: [ + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: const Color(0xFFF7F8FB), + border: Border.all( + color: const Color(0xFFEDF3FF), + ), + borderRadius: BorderRadius.circular(6), + ), + clipBehavior: Clip.antiAlias, + child: Center( + child: PaymentMethodTypes.fromString(method.type) + .icon + .apply(size: 40), + ), + ), + const SizedBox(width: 10), + Expanded( + child: Align( + alignment: AlignmentDirectional.centerStart, + child: Text( + PaymentMethodTypes.fromString(method.type) + .title(context), + style: textTheme.titleMedium?.copyWith( + color: const Color(0xFF111111), + fontSize: 17, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + const SizedBox(width: 12), + Container( + width: 22, + height: 22, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: effectivePrimary, + width: 1.5, + ), + ), + child: Center( + child: Transform.scale( + scale: 0.4 + (0.6 * value), + child: Opacity( + opacity: value, + child: Container( + width: 12, + height: 12, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: effectivePrimary, + ), + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ), + ], + ); + }, ), ); } diff --git a/lib/src/widgets/buttons.dart b/lib/src/widgets/buttons.dart index 2471624..4148fba 100644 --- a/lib/src/widgets/buttons.dart +++ b/lib/src/widgets/buttons.dart @@ -15,7 +15,9 @@ enum AppButtonStyle { class AppButton extends StatelessWidget { final String labelText; + final String? suffixLabelText; final Widget? leading; + final Widget? trailing; final VoidCallback? onPressed; final EdgeInsetsGeometry margin; final bool disabled, loading; @@ -32,8 +34,10 @@ class AppButton extends StatelessWidget { const AppButton({ super.key, required this.labelText, + this.suffixLabelText, this.onPressed, this.leading, + this.trailing, this.margin = const EdgeInsets.only(top: 16), this.disabled = false, this.loading = false, @@ -93,32 +97,71 @@ class AppButton extends StatelessWidget { padding: padding, ); - final button = loading || leading != null - ? ElevatedButton.icon( + final labelStyle = Theme.of(context).textTheme.bodyMedium!.copyWith( + fontSize: 16, + color: fg, + ); + final suffix = trailing ?? + (suffixLabelText == null + ? null + : Text( + suffixLabelText!, + style: labelStyle.copyWith(fontWeight: FontWeight.w600), + )); + + final button = suffix != null + ? ElevatedButton( onPressed: _isDisabled ? () {} : onPressed ?? () {}, - icon: loading - ? SizedBox( - width: 24, - height: 24, - child: CircularProgressIndicator(color: fg), - ) - : leading, style: buttonStyle, - label: Text(labelText, - style: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, - color: fg, - )), + child: Row( + children: [ + Expanded( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (loading || leading != null) ...[ + loading + ? SizedBox( + width: 24, + height: 24, + child: CircularProgressIndicator(color: fg), + ) + : leading!, + const SizedBox(width: 8), + ], + Flexible( + child: Text( + labelText, + overflow: TextOverflow.ellipsis, + style: labelStyle, + ), + ), + ], + ), + ), + const SizedBox(width: 12), + suffix, + ], + ), ) - : ElevatedButton( - onPressed: _isDisabled ? () {} : onPressed ?? () {}, - style: buttonStyle, - child: Text(labelText, - style: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, - color: fg, - )), - ); + : loading || leading != null + ? ElevatedButton.icon( + onPressed: _isDisabled ? () {} : onPressed ?? () {}, + icon: loading + ? SizedBox( + width: 24, + height: 24, + child: CircularProgressIndicator(color: fg), + ) + : leading, + style: buttonStyle, + label: Text(labelText, style: labelStyle), + ) + : ElevatedButton( + onPressed: _isDisabled ? () {} : onPressed ?? () {}, + style: buttonStyle, + child: Text(labelText, style: labelStyle), + ); return Padding( padding: margin, From 1178d65972ea6378f8992024700d06cd4a4652c3 Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Tue, 5 May 2026 13:27:52 +0000 Subject: [PATCH 7/8] Add shimmer package for loading effects, update pubspec.yaml, and enhance payment method dialogs with new payment handling features. Refactor MoosylView and payment methods to streamline user experience and improve code organization. --- assets/icons/amanty.png | Bin 4835 -> 44792 bytes assets/icons/bankily.png | Bin 8597 -> 41091 bytes assets/icons/bci_pay.png | Bin 6074 -> 150655 bytes assets/icons/bim_bank.png | Bin 1929 -> 71260 bytes assets/icons/masrivi.png | Bin 6350 -> 51513 bytes assets/icons/sedad.png | Bin 5406 -> 121884 bytes example/lib/main.dart | 611 +++++++++- example/pubspec.lock | 10 +- lib/src/moosyl_flutter.dart | 9 - lib/src/pages/home.dart | 3 - lib/src/pages/masrivi_view.dart | 9 +- lib/src/pages/moosyl_view.dart | 21 +- lib/src/pages/payment_dialogs.dart | 205 ++++ lib/src/pages/payment_methods.dart | 778 +++++++++++++ lib/src/pages/payment_methods_view.dart | 1421 +---------------------- lib/src/pages/payment_summary.dart | 116 ++ pubspec.yaml | 1 + 17 files changed, 1741 insertions(+), 1443 deletions(-) create mode 100644 lib/src/pages/payment_dialogs.dart create mode 100644 lib/src/pages/payment_methods.dart create mode 100644 lib/src/pages/payment_summary.dart diff --git a/assets/icons/amanty.png b/assets/icons/amanty.png index 83ff39863d0fd887d652bac9e940668075be982f..1921577950b30712953a8b2a6f93b4a3fd079720 100644 GIT binary patch literal 44792 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 ki#r@@4#6K%D1eldVB!l_5I00093P)t-sM{rF4 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%0A72cw`nc4T$5XMat-3ZF&OkhKQ!82#j0CgqROs zw|f=D<73A_)fW?q-2_F%37QPZ(m6_~m`Cp_mBV94-$GZp{Jm>> zNy*|&-&@BV-351}Y0Q@%8Pg)mj03Ot`p6K&kM=lo&YsX%sK=*toyUDU`Mhmw2D?pL zz_;acxw0!dgAc1nxFTes%@@l*cmH~NWa!FD8FKXA^BVDsV6gASK>dDLb#<<_=-fIB zbuIM}p2Egq%rL_;*IO!Dk4_g+8bDgJ$79CHLIl z=4i*TkkpQhDWj~{BfXfKY9T~f;zVItp9&+%BrS_ZS&}-v^3>}VLfjTjf>-p) zSjBBIB^piQh9o2fQ!6br-h<&3$01ngLD?(A<4#ey(>j}xOLDI_klZd|#BFXv47YQf zl$=B@^s2%nCrs(lvI!nW3c^$vc{y&<%b-DHOPLnKwf|?$egk)~k}9o`Nt6Hp002ov JPDHLkV1m{~38Mf2 diff --git a/assets/icons/bankily.png b/assets/icons/bankily.png index bba4aaca6f5e49ee6e819cec6dd240d75b7b4f58..395f19c5128af323c8899480e5bf91138e3c7bc3 100644 GIT binary patch literal 41091 zcmce+RX|+NvM)SXAV6?;cTaE`+}&LQ1Hs*8fZ*;B9D;iY5_FK@1d`wm!6h(Q@R^VN z_u1!u4|m_UbLM4ruc@x8uKIO#b*+xoR9AR~PKFKu0A496%4!1uh|f(#0NRV^$Ccmg z{quv=OU}?s$JN%$*UAF~kg{=o3!+hSwz30hgRE@)-N!&;000uby{@5`p_;0QwW~9i z)n6JeKWDe+(ExxL(9g}v+7aYM^A==h?;=ij)&-%Xv9}SYGvHU_QFD_4y|Y&g@Brxq zsOwq>I9dza&;ccA#Qa2_890NytZ4k4om@Oc{KV=0;Vbgo{`;Dnj^-Z{FGq2@e<@|C zrb#2?>H(tR=Mvzw=6%CMBPh(pE5P%HpO=G%kB3)~n}?s9M}U)uSA<7MgpZfzzkYPj z(mZTzMYLt*|4Y_$Pn_{mbZeC$wVQwBiZazNFX9`YFe-|$+ zKTa1<`hRnf1$kO~*t>bzySmW)WmXeYE_gGn1Yj0RM;aycf2G3)c$S4$ zf++b{=>K?!5b!*~2u%c?IPuEF@_s@fk&9hZ3i(L>j43;g9VSV8&qj5Z{LyIhPL6vu+Z=*035 zq-&C(5P4WqRvMmF{hao&ihq(m!askowQp)k@=9I?4X)zig;0 z7kDGn!!V!!HiOp&8p?u*u~_^saY0+)n8#oZWD*d8B4YX!DhMC4JgM1Yt6Zam4lMuRHvU31)v02UtO|Lt?e3 zA4ti*E5M5Mc6Ek{)mPD9>F6aii~gA$rT8%djDII;qzplG6ldF&z+INe6T!-Y_$mp% z9_|TY-zBR)!(R9KhjT^`^o$k^O!+x%n<&QmUQQE2X&sC@zM;xmIn*R@@j@)Dz6?gU z9`Y~ZL@3Y#)=N`f@r`VvJfCae?ndY+ihj$D6&`Q(+h3b2$r1QWh(;Ki6X}`8r+VKm zXL#($iX_M4>e12o*^3(@lffU~vb(9YV)f!5tV^yUc9ckCfy!zW&Rk$GMGNP!DTLJ4y|43($$2qG^`D{_0B;ZJ+d&Y*_+nD(iwlcBd#5y8p=MX4eplA34fZ^&XTh`+PJ9iZ2}xX-ZRGUP#ht9$+BL$IwChz=CG^XHdhf^iV1< z?syBW1yzs@R*-0_nhn`B_Vv}u*Cx^^Wr^%?oN*|0%u(*;=$^IgUt5f;+l?=dZ+2!1n%{mJv>u)vOny<1tNbnVB9e~| zu{V92L$&yOJNb0-SJ!dHtgA4zTMKV-g|QI@BIQ0yqkTdNw@>Nl%0Ys4J-cbIu%>Cvk~q2h#h(mEE`6zb zGf0gOz$}QtnQA@y%77@OO_Ez$YUY2I9?<}`^#OiaKA}~8c81lTW1y$MBBB()RIA;a?=v(F#B&(eO=}Eb?s|$&F|C z`f!~tO}^UVh>puc=2O#f>q#xuDeyp>EgY(lJRuTiAQfwM;#P62z;J&W&iUlni zCf5goo|)W%QYVuKA8S=iuP*J@8j zYW9EllMTQPIfKX+>ky*{b_lOdKcxW7SD@`P&;8MVf+^XG`QhFGt$quui~1Be!&|Fwx~U)yOwnD9p;qP z{BM4U~ znpJjgAsNpc+UBK|P5svA6lWlIm<>W^_6D_P^c(Y_8%)j^I?tLM`#AUonz?1Lgkoz=U z)yU<8eOU5($T5k43E|PM$_LUjzmS+q$ZczZ0?O2-U-u%MmhSPJepaT(M~d5{P%0CS zq@LKI$5NjgsXiP@Y~c#Vps#;Z2uZO4YH8dtH?oyFgfOopGHI4J|jXF?_dldTG?FdXfT)MwxN+jeLhDB#}jiWFkM2x#!qeTT}wZ=R!lWl;WO!h(``Zut150uB$mdQY7W%G(cVF`|9Fmpc1@Xd`>Dry zzRwRHjLz!y`t@4@&UVr}XaI}afyF;mNg^D>G{C%Bs7RfWK3bb;A3FhE9uQx6*_)Ea8LpsS<1Bh{-7sc8t&0nzETH;%Sg=x!dVj6W zuk)v67Sdx`J)VE3@*NRpc<)um9ja^B<;AYm0B!~RCNmgqTM{?JT?6L1v~c3crEz^&6JiR{OSG_*)t*;T(_e{G_AzmFv^xJ<&HShHdkvQG zG0@sQca9OinlcXu0-`yLu089l$NAKSfZ^blqXbE(Ur+TEI zjpt0eZ|-{@F$Rj+#d>(kr;WU(v2?YH`E;{kXx5~`eqDzKKbt4Rf-9WO8U8jCGz$Ou~-#aUrbK9<{u*K_~$3rdh(kn0GeE(!^WLQgVNK4YKY!V90^#vt)b+&b2 zay?!w*wTSf1H_Ns;65tU9N<5FofM`tsnS^%&|3mG=x#Kw)cj0OpS^o%(M9ENsHA%G zt~Sp6eB5*q7o4}SOYD7U=k3Er*`oLj>mo);gLK}{b>BswK8FxeEO3=Grr?D!E$yc z1v}RXL|Z_b)B$RzQEoo0(h}Z?B7>*-9gD{ zgs6fw@9f>Dh}_ZrD-#4H6od1LdfUp%ypV`&AS`;%A*ugIZX6oZjt^5Qzj9}L zTuBOglEj5UGRmRc8B`aL70;6hVCc=JiN}=MV8AF^{9rBep8m-_B=(xI9|!P=EI>@)n%;KsZW|{iA?c%9yi4YF)a8%oiC>goMFX0f zQ>{bPk+-lHE~MxvTz%;tO(dR_JJI02&vGrY2EdL|Ry?!ZNys+Ft;8%9>23V$?-olD<0pVUTv;F|=BQAMEoa8C>`=VWuEOQzXG2*4C6_IbY?p10~DL-c5KX({qcQg zJl`XYk4yyZ0OId~9h_rV;j!;3PhHc0{AMF$i?|=jJmOSl@4Ka2>6k6*Cj^<0FXaCC zN-F+B5`fUYE*56}x%7`4YgnJ%i1r}exh_gq7wP0T5(C}XDLcaY$ZVdQn{kzS1>C06wjV%rRRwuu1Rd2oY3fb=Pb(h=8Lt zj=bNBXlZt!V7R^Wokj-6ZlVZR-djmGGb{?olSjUv6#H1u7T_(J%*hDrLpp!?6uQh6 z_bt~H_g)yqK}ITdocnxadjkhihNOMzG0XYB7s7)6`}X!Zk=4_DhK|O<0JsRvv4A!l zo+;$exSeQ4wjvvj48(y&N?6$IZfF}}qgYP87yZ4g9?bE2Kn2e(Ql2@qI(z zkYe%}!p96e_-e4}$#^x`p_}x%dZ^=Dc5;zgypZ5?B}docIXbP-gL3$6J8LOHzhj$E z`44`GE-Tm$w=v300Y#UNh1adWW@fV~LNAMgeIT;#9W8@Dh$eo_v`>5h%10bi;lsrI z6zz(*alXu%A3V$@mEx_hv%URn$xOY!p}_tgDdvEr zJroR3?FWvvMGLL1l^(xPJ6;&-U@qA5okTv#8SrV z03_j#Q5ibF7Vl|TH&iI6RqPLJ2B*2iIy4Ewx*QppDUYtJBBIiE2?$Xy@1K*&W(Tm) zr#*F9bHHmDkCZuG&z!&pQUK>aR)Hl#Z=JZVLcF2IKsQKhVycteL& z81M^$>J&rvCCSmOlG|9yC3uvT?UYNouU6eRE+3Y6i7{bjI4)e|T!JiVsNTA?_p&y! z`IW8lV+G=>NfXr6);-8XZDgS!ndTX3wkVd_bkID4TV#p`AMCrhOk-_%?FdU%|b{JY8KbmenD&w%T_ePS9tYQHc1@j=gl+u9pP_6xl30B$H9fh|DF#^ zrxttiTw}Z)%e<&2n3P4ch@sNXWvBm%P@b7FlaY!9?lcGDIhU`#{b4Qd^7KPsMT|{3 zbV0t4s}XQxU?<%B#F+&y2d<2rDFtD^q%AvPeKNXw4)ElgT&y{rZSoZSK_!;TQsa|7PFStf$!etg>jF z!%+2cwrjmxGlHS{1y}0N(b7GsQU+CY3zn5t25Jq1(7+QZ;ogVAq*phTQ@B46DeIVU z=$@y)L>Ov@*i^vRy?{FW>Do3jCTud{hVpb~rdq2f`Z25+@fYjGo$T%Y5dL;@K2nU2 zpKj7t5ptVSa6RVL50nk&F^Ps&oP$bMdWW}QXHK+Fn&TlNV975(n~X`dkaowYJ)9m) z@~2nEN$3u^A=8^56`up59>OByRm#(;5oj`DpJ0;BHyv$MjG5e`S>(3)5NrQwS&P?bOgpi2iF^<1kaVyuyH?k zxzPbq&k8n9i{!-){fHo+#ZUde!X_gZ#$2bNS_}~>&E-MJGPd$z1S|lz{D-Nnd9#dE zIVf55Lw+qL{sT2{T_SBXLi4woOubtq+&Z-O_sw&>eiAugNnKiy>Nkub%kntx*mRv2 zh8*t^qYt7g{&9V$A;9PC!!}8ZDw_N6YYLaADCyyj$pi}2huTU`gy@yJPsSKT%5Kl0gRRv9FWvxy63ea_`EhOqj17M7R=bc-9q+F zLOTIcp0Jy-V^aM!u<&<%{*+*K!nsc08_M9N`Hxq!%HN8Brk!iyBKY5E7vI=tVD zYGtKZ8cqa1parlqh{B2=LtL zAm-jhBMTa1P{Q8>VkkZeK>Sc=APb8aWplo2g{(S)m%;7Bd-1n)B^U)$^u>{IiHq}( zd=+<$UC>BYH0T9fZ5+FlzgA?yPwj z!!O;31M}Y9X5O8A`H4fS=2xP2t}f3IfVFU|`>u@z$?>l0IW_S%0KCBJzr8ziFz}!V z&4)(EK;hrqgN>Ggce!oTdE^73{~Qyl0GJfvUqxTf7W&_w;cdYUBYrzfoC)J*0MOcR!igdl zC7qr={TM)&tD>u(CMJ9&8-O5e#W7 zQSr0>h>gJs<(0Wv1D9|>7ZlRA0Gd}+Q7_y-uTn?AH5roF(3x0p?VM3J`X1L8d~p*- zl7vPS%1wthkel5;8fpJ(Hl=p8i8!?d| zpso(Gz`%!X4l90wvns7C&_2G;jjLj-9#d-fahku4@8LWBOg%9*>8A-ZuZuKe5Rkol z%4PHG;jQOpViVCOO{ZC7-6aL>2=vW%lgr)ivs(|)wGU8tP!`M9x7<;FmVmK5ti&hN zK8Gefl)i)1XpD?x*;|NZJAx|QJlR+A_F{*@6@E24EBw2WdR{yn4{F>L-8egsHj;r~ zao$19g5XO{jy;+6D#EmjKM2^mLH~LijgN%AknP!5^HgaFP)M&Wp=A- z(umc5pdSWkOW-ilB&t1Ec=Y6+7j;?EWANNtpn=jExM0oJb_P7SeCY6~w_i<)k#*9R z^k~k`$+%m9wSe9AIvlS_6ZS_--h+&pV$5Waf8nt3X^yvU#pL%Pg)&;Tx}~lD;D@{n z-11{&A-5Pk%qL`ASoX3H>Z?Y$QOP>IppyFI9|uDVGx*Py{tfb3WrLNA3%whk`q{>b zM9mNg5UM;8b={C7?DQ`7TO!KzpXBn#>6Vrr7PPE+1YFb4JKHfrQzXi-9w~BozYE8x zALw*hz%-oDwZEaz66`B+IS3i8I}2y-m~LSpgUevr#)|!c)FVk>-P{O5jHW<(6xYvR z%HD5_)wtRe-RMV~aCXc(PzmkmVr*eYHW_?mwdI33j! zRQEG*9v{;)Z`@DgH)(4>^0^$e9|oL3;(a_6N8?oNLaV?uOdXhv;l z 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 Wi=YIJ&kFzjAXS#vkgJoi4Euk~PrKm& diff --git a/assets/icons/bci_pay.png b/assets/icons/bci_pay.png index ac0c1a962ec5422eaa270bee842204660b66ea4a..7de0d946104a89fa802c57e454767705a737e8e6 100644 GIT binary patch literal 150655 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 U=_xE=zyJUM07*qoM6N<$f)GGV9RL6T literal 6074 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 z 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 S`oIGeVeoYIb6Mw<&;$Sm)kik~ literal 6350 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 DM>f-Y diff --git a/assets/icons/sedad.png b/assets/icons/sedad.png index 0c8accdb692b645c9774a8a1d8fe1fd2153f530e..295e5897cc50fde9211789dc09be0cee07f2deff 100644 GIT binary patch literal 121884 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%0DdIG_p#4`CrUXv6G2jX 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

Pw3^*Ok=^}S|!8u3fQb*I&Ma- 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 literal 5406 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 b(d3FSxL>7AQW!IQ{ci;dsfnmnun77e0@lsO diff --git a/example/lib/main.dart b/example/lib/main.dart index 8dae410..d9ce50e 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -5,17 +5,22 @@ import 'package:moosyl_flutter/moosyl.dart'; import 'payment_success_dialog.dart'; +const _apiKey = 'your_api_key'; +const _transactionId = 'transaction_id'; +const _primaryColor = Color(0xFFF55E1E); + void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); + static const colorScheme = ColorScheme.light( - primary: Color.fromARGB(255, 244, 68, 147), + primary: _primaryColor, onPrimary: Color(0xFFFFFFFF), - surface: Color(0xFFF0F0F0), - onSurface: Color(0xFF000000), + surface: Color(0xFFF7F7F7), + onSurface: Color(0xFF111111), secondary: Color(0xFFEAF1FF), onSecondary: Color(0xFF000000), error: Color(0xFFCE2C2C), @@ -25,7 +30,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Moosyl Demo', + title: 'Moosyl Demo', localizationsDelegates: MoosylLocalization.localizationsDelegates, supportedLocales: MoosylLocalization.supportedLocales, locale: const Locale('en'), @@ -33,58 +38,600 @@ class MyApp extends StatelessWidget { colorScheme: colorScheme, useMaterial3: true, ), - home: const MyHomePage(title: 'Moosyl Demo Home Page'), + home: const DemoHomePage(), ); } } -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, required this.title}); +enum DemoMode { + menu, + embeddedPlatforms, + customPlatforms, +} - final String title; +class DemoHomePage extends StatefulWidget { + const DemoHomePage({super.key}); @override - State createState() => _MyHomePageState(); + State createState() => _DemoHomePageState(); } -class _MyHomePageState extends State { - void _openPaymentFlow() async { - final isSuccess = await MoosylFlutter.show( - context, - publishableApiKey: 'your publishable api key', - transactionId: 'your transaction id', - isFullPage: false, - ); +class _DemoHomePageState extends State { + final _embeddedController = MoosylPaymentMethodsController(); + final _customController = MoosylPaymentMethodsController(); + + DemoMode _demoMode = DemoMode.menu; + ConfigurationListDataInner? _selectedEmbeddedMethod; + ConfigurationListDataInner? _selectedCustomMethod; + bool _embeddedContinueLoading = false; + bool _customContinueLoading = false; + + @override + void dispose() { + _embeddedController.dispose(); + _customController.dispose(); + super.dispose(); + } + + Future _openMoosylView() async { + final isSuccess = await MoosylFlutter.show(context, + publishableApiKey: _apiKey, + transactionId: _transactionId, + isFullPage: true, + items: [ + const MoosylPaymentSummaryItem(amount: 5, label: 'amount'), + const MoosylPaymentSummaryItem(amount: 0, label: 'tax') + ]); if (!mounted) return; if (isSuccess != null) { - await showPaymentSuccessDialog(context, isSuccess: isSuccess); - print('Payment was successful! isSuccess=$isSuccess'); + await _showSuccess(isSuccess); } } + Future _showSuccess(bool isSuccess) async { + await showPaymentSuccessDialog(context, isSuccess: isSuccess); + print('Payment was successful! isSuccess=$isSuccess'); + } + + void _showMenu() { + setState(() { + _demoMode = DemoMode.menu; + }); + } + + @override + Widget build(BuildContext context) { + return switch (_demoMode) { + DemoMode.menu => _MenuScreen( + onOpenMoosylView: _openMoosylView, + onOpenEmbeddedPlatforms: () { + setState(() { + _demoMode = DemoMode.embeddedPlatforms; + }); + }, + onOpenCustomPlatforms: () { + setState(() { + _demoMode = DemoMode.customPlatforms; + }); + }, + ), + DemoMode.embeddedPlatforms => _EmbeddedPlatformsScreen( + controller: _embeddedController, + selectedMethod: _selectedEmbeddedMethod, + continueLoading: _embeddedContinueLoading, + onBack: _showMenu, + onSelectMethod: (method) { + setState(() { + _selectedEmbeddedMethod = method; + }); + }, + onContinueLoadingChange: (loading) { + setState(() { + _embeddedContinueLoading = loading; + }); + }, + onPaymentSuccess: _showSuccess, + ), + DemoMode.customPlatforms => _CustomPlatformsScreen( + controller: _customController, + selectedMethod: _selectedCustomMethod, + continueLoading: _customContinueLoading, + onBack: _showMenu, + onSelectMethod: (method) { + setState(() { + _selectedCustomMethod = method; + }); + }, + onContinueLoadingChange: (loading) { + setState(() { + _customContinueLoading = loading; + }); + }, + onPaymentSuccess: _showSuccess, + ), + }; + } +} + +class _MenuScreen extends StatelessWidget { + const _MenuScreen({ + required this.onOpenMoosylView, + required this.onOpenEmbeddedPlatforms, + required this.onOpenCustomPlatforms, + }); + + final VoidCallback onOpenMoosylView; + final VoidCallback onOpenEmbeddedPlatforms; + final VoidCallback onOpenCustomPlatforms; + @override Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Moosyl Demo')), + body: Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + spacing: 14, + children: [ + _DemoButton( + label: 'Test MoosylView', + onPressed: onOpenMoosylView, + ), + _DemoButton( + label: 'Test embedded platforms', + onPressed: onOpenEmbeddedPlatforms, + outlined: true, + ), + _DemoButton( + label: 'Test custom methods UI', + onPressed: onOpenCustomPlatforms, + outlined: true, + ), + ], + ), + ), + ), + ); + } +} + +class _EmbeddedPlatformsScreen extends StatelessWidget { + const _EmbeddedPlatformsScreen({ + required this.controller, + required this.selectedMethod, + required this.continueLoading, + required this.onBack, + required this.onSelectMethod, + required this.onContinueLoadingChange, + required this.onPaymentSuccess, + }); + + final MoosylPaymentMethodsController controller; + final ConfigurationListDataInner? selectedMethod; + final bool continueLoading; + final VoidCallback onBack; + final ValueChanged onSelectMethod; + final ValueChanged onContinueLoadingChange; + final Future Function(bool isSuccess) onPaymentSuccess; + + @override + Widget build(BuildContext context) { + final selectedTitle = selectedMethod == null + ? 'platform' + : PaymentMethodTypes.fromString(selectedMethod!.type).title(context); + return Scaffold( appBar: AppBar( - title: Text(widget.title), + title: const Text('Embedded Platforms'), + leading: IconButton( + onPressed: onBack, + icon: const Icon(Icons.arrow_back), + ), ), - body: Center( - child: ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: Theme.of(context).colorScheme.primary, - foregroundColor: Theme.of(context).colorScheme.onPrimary, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8), + body: ListView( + padding: const EdgeInsets.all(20), + children: [ + Text( + 'This screen owns the checkout UI and only uses Moosyl to load and select the platform.', + style: Theme.of(context).textTheme.bodyMedium, + ), + const SizedBox(height: 20), + Text( + 'Payment method', + style: Theme.of(context).textTheme.titleLarge, + ), + const SizedBox(height: 12), + MoosylPaymentMethods( + controller: controller, + publishableApiKey: _apiKey, + transactionId: _transactionId, + selectedMethodId: selectedMethod?.id, + onSelectMethod: onSelectMethod, + onContinueLoadingChange: onContinueLoadingChange, + onPaymentSuccess: onPaymentSuccess, + primaryColor: _primaryColor, + ), + const SizedBox(height: 20), + _DemoButton( + label: + continueLoading ? 'Loading...' : 'Continue with $selectedTitle', + onPressed: selectedMethod == null || continueLoading + ? null + : controller.continuePayment, + ), + ], + ), + ); + } +} + +class _CustomPlatformsScreen extends StatelessWidget { + const _CustomPlatformsScreen({ + required this.controller, + required this.selectedMethod, + required this.continueLoading, + required this.onBack, + required this.onSelectMethod, + required this.onContinueLoadingChange, + required this.onPaymentSuccess, + }); + + final MoosylPaymentMethodsController controller; + final ConfigurationListDataInner? selectedMethod; + final bool continueLoading; + final VoidCallback onBack; + final ValueChanged onSelectMethod; + final ValueChanged onContinueLoadingChange; + final Future Function(bool isSuccess) onPaymentSuccess; + + @override + Widget build(BuildContext context) { + final selectedTitle = selectedMethod == null + ? 'payment method' + : PaymentMethodTypes.fromString(selectedMethod!.type).title(context); + + return Scaffold( + backgroundColor: const Color(0xFFF6F0E8), + appBar: AppBar( + backgroundColor: const Color(0xFFF6F0E8), + title: const Text('Custom Checkout'), + leading: IconButton( + onPressed: onBack, + icon: const Icon(Icons.arrow_back), + ), + ), + body: ListView( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 120), + children: [ + const _CheckoutSectionTitle(step: '1', title: 'Delivery address'), + _CheckoutCard( + child: ListTile( + contentPadding: EdgeInsets.zero, + leading: const Icon(Icons.location_on_outlined), + title: const Text('Mohamed Ahmed'), + subtitle: + const Text('Tevragh Zeina, Nouakchott\n+222 47 12 34 56'), + trailing: TextButton( + onPressed: () {}, + child: const Text('Change'), + ), + ), + ), + const SizedBox(height: 24), + const _CheckoutSectionTitle(step: '2', title: 'Products'), + const _CheckoutCard( + child: Column( + children: [ + _ProductRow( + title: 'Floral Midi Dress', + subtitle: 'Pink • M • 1 x 520 MRU', + price: '520 MRU', + ), + Divider(height: 28), + _ProductRow( + title: 'Cargo Wide-Leg Pants', + subtitle: 'Beige • L • 1 x 680 MRU', + price: '680 MRU', + ), + ], + ), + ), + const SizedBox(height: 24), + const _CheckoutSectionTitle(step: '3', title: 'Payment method'), + MoosylPaymentMethods( + controller: controller, + publishableApiKey: _apiKey, + transactionId: _transactionId, + selectedMethodId: selectedMethod?.id, + onSelectMethod: onSelectMethod, + onContinueLoadingChange: onContinueLoadingChange, + onPaymentSuccess: onPaymentSuccess, + primaryColor: _primaryColor, + renderMethod: (context, props) => _CustomMethodRow(props: props), + ), + ], + ), + bottomNavigationBar: SafeArea( + minimum: const EdgeInsets.fromLTRB(16, 12, 16, 16), + child: SizedBox( + height: 64, + child: FilledButton.icon( + onPressed: selectedMethod == null || continueLoading + ? null + : controller.continuePayment, + icon: selectedMethod == null + ? const Icon(Icons.payments_outlined) + : PaymentMethodTypes.fromString(selectedMethod!.type) + .icon + .apply(size: 32), + label: Text( + continueLoading + ? 'Loading...' + : 'Pay 2,470 MRU with $selectedTitle', + textAlign: TextAlign.center, + ), + style: FilledButton.styleFrom( + backgroundColor: const Color(0xFF171713), + foregroundColor: Colors.white, + disabledBackgroundColor: const Color(0xFF171713).withValues( + alpha: 0.45, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(18), + ), ), - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - textStyle: Theme.of(context).textTheme.bodyMedium!.copyWith( - fontSize: 16, + ), + ), + ), + ); + } +} + +class _CustomMethodRow extends StatelessWidget { + const _CustomMethodRow({required this.props}); + + final MoosylPaymentMethodRenderProps props; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 12), + child: InkWell( + borderRadius: BorderRadius.circular(24), + onTap: props.onSelect, + child: AnimatedContainer( + duration: const Duration(milliseconds: 160), + constraints: const BoxConstraints(minHeight: 78), + padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 12), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(24), + border: Border.all( + color: props.isSelected + ? const Color(0xFF171713) + : const Color(0xFFEEE9E2), + width: props.isSelected ? 2 : 1, + ), + boxShadow: const [ + BoxShadow( + color: Color(0x12000000), + blurRadius: 10, + offset: Offset(0, 4), + ), + ], + ), + child: Row( + children: [ + Container( + width: 34, + height: 34, + decoration: BoxDecoration( + color: + props.isSelected ? const Color(0xFF171713) : Colors.white, + border: Border.all(color: const Color(0xFFD1D1CD)), + shape: BoxShape.circle, ), + child: props.isSelected + ? const Icon(Icons.check, color: Colors.white, size: 20) + : null, + ), + const SizedBox(width: 14), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + props.title, + textAlign: TextAlign.right, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w800, + ), + ), + const SizedBox(height: 4), + Text( + props.type == PaymentMethodTypes.bankily + ? 'Confirm with passcode' + : props.type == PaymentMethodTypes.masrivi + ? 'Mauritel Money' + : 'Payment wallet', + textAlign: TextAlign.right, + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ), + const SizedBox(width: 14), + Container( + width: 56, + height: 56, + decoration: BoxDecoration( + color: const Color(0xFFF4F4F1), + borderRadius: BorderRadius.circular(16), + ), + child: Center(child: props.type.icon.apply(size: 46)), + ), + ], ), - onPressed: _openPaymentFlow, - child: const Text('Test payment flow'), ), ), ); } } + +class _DemoButton extends StatelessWidget { + const _DemoButton({ + required this.label, + required this.onPressed, + this.outlined = false, + }); + + final String label; + final VoidCallback? onPressed; + final bool outlined; + + @override + Widget build(BuildContext context) { + final shape = RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ); + + if (outlined) { + return OutlinedButton( + onPressed: onPressed, + style: OutlinedButton.styleFrom( + foregroundColor: _primaryColor, + side: const BorderSide(color: _primaryColor, width: 2), + shape: shape, + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14), + ), + child: Text(label), + ); + } + + return FilledButton( + onPressed: onPressed, + style: FilledButton.styleFrom( + backgroundColor: _primaryColor, + foregroundColor: Colors.white, + shape: shape, + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14), + ), + child: Text(label), + ); + } +} + +class _CheckoutSectionTitle extends StatelessWidget { + const _CheckoutSectionTitle({ + required this.step, + required this.title, + }); + + final String step; + final String title; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(bottom: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + title, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w800, + ), + ), + const SizedBox(width: 10), + Container( + width: 30, + height: 22, + alignment: Alignment.center, + decoration: BoxDecoration( + color: const Color(0xFFEBE5DC), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + step, + style: const TextStyle(fontWeight: FontWeight.w800), + ), + ), + ], + ), + ); + } +} + +class _CheckoutCard extends StatelessWidget { + const _CheckoutCard({required this.child}); + + final Widget child; + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(18), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(22), + boxShadow: const [ + BoxShadow( + color: Color(0x12000000), + blurRadius: 10, + offset: Offset(0, 4), + ), + ], + ), + child: child, + ); + } +} + +class _ProductRow extends StatelessWidget { + const _ProductRow({ + required this.title, + required this.subtitle, + required this.price, + }); + + final String title; + final String subtitle; + final String price; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Text( + price, + style: Theme.of(context).textTheme.titleSmall?.copyWith( + fontWeight: FontWeight.w800, + ), + ), + const Spacer(), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text(title, style: Theme.of(context).textTheme.titleSmall), + const SizedBox(height: 6), + Text(subtitle, style: Theme.of(context).textTheme.bodySmall), + ], + ), + const SizedBox(width: 14), + Container( + width: 58, + height: 58, + decoration: BoxDecoration( + color: const Color(0xFFF2CDD8), + borderRadius: BorderRadius.circular(16), + ), + ), + ], + ); + } +} diff --git a/example/pubspec.lock b/example/pubspec.lock index e31cd2f..75a0ec3 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -275,7 +275,7 @@ packages: path: ".." relative: true source: path - version: "2.0.1" + version: "2.0.2" nested: dependency: transitive description: @@ -332,6 +332,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.2" + shimmer: + dependency: transitive + description: + name: shimmer + sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" + url: "https://pub.dev" + source: hosted + version: "3.0.0" sky_engine: dependency: transitive description: flutter diff --git a/lib/src/moosyl_flutter.dart b/lib/src/moosyl_flutter.dart index 4693f97..1dcabe9 100644 --- a/lib/src/moosyl_flutter.dart +++ b/lib/src/moosyl_flutter.dart @@ -20,13 +20,10 @@ class MoosylFlutter { BuildContext context, { required String publishableApiKey, required String transactionId, - double amountToPay = 0.0, - double tax = 0.0, List? items, bool isFullPage = true, bool isMasriviInBottomSheet = false, String? masriviPhoneNumber, - double masriviBottomSheetHeight = 0.88, }) async { if (isFullPage) { return Navigator.push( @@ -35,13 +32,10 @@ class MoosylFlutter { builder: (ctx) => MoosylView( publishableApiKey: publishableApiKey, transactionId: transactionId, - amountToPay: amountToPay, - tax: tax, items: items, isFullPage: true, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, onBackPress: () => Navigator.pop(ctx, null), onPaymentSuccess: (payment) async { Navigator.pop(ctx, payment); @@ -67,13 +61,10 @@ class MoosylFlutter { child: MoosylView( publishableApiKey: publishableApiKey, transactionId: transactionId, - amountToPay: amountToPay, - tax: tax, items: items, isFullPage: false, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, onBackPress: () => Navigator.pop(ctx, null), onPaymentSuccess: (payment) async { Navigator.pop(ctx, payment); diff --git a/lib/src/pages/home.dart b/lib/src/pages/home.dart index 82ac0ab..42d3a01 100644 --- a/lib/src/pages/home.dart +++ b/lib/src/pages/home.dart @@ -49,7 +49,6 @@ class Moosyl extends HookWidget { isFullPage: isFullPage, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, ), ); } @@ -96,7 +95,6 @@ class Moosyl extends HookWidget { isFullPage: isFullPage, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, ), ); }, @@ -111,7 +109,6 @@ class Moosyl extends HookWidget { isFullPage: isFullPage, isMasriviInBottomSheet: isMasriviInBottomSheet, masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, ); } } diff --git a/lib/src/pages/masrivi_view.dart b/lib/src/pages/masrivi_view.dart index bbb70ab..c779509 100644 --- a/lib/src/pages/masrivi_view.dart +++ b/lib/src/pages/masrivi_view.dart @@ -57,7 +57,6 @@ class MasriviView extends StatelessWidget { this.onBackPress, this.onPaymentDeclined, this.presentation = MasriviWebViewPresentation.fullPage, - this.bottomSheetHeight = 0.88, this.phoneNumber, }); @@ -83,9 +82,6 @@ class MasriviView extends StatelessWidget { /// Display as a full page or bottom-sheet content. final MasriviWebViewPresentation presentation; - /// Height factor used by hosts that size the Masrivi bottom sheet. - final double bottomSheetHeight; - /// Phone number to prefill in the Masrivi page when a matching input is found. final String? phoneNumber; @@ -111,7 +107,6 @@ class MasriviView extends StatelessWidget { onBackPress: onBackPress ?? () => Navigator.of(context).pop(), onPaymentDeclined: onPaymentDeclined, presentation: presentation, - bottomSheetHeight: bottomSheetHeight, phoneNumber: phoneNumber, ); } @@ -126,7 +121,6 @@ class _MasriviWebView extends StatefulWidget { required this.onBackPress, this.onPaymentDeclined, required this.presentation, - required this.bottomSheetHeight, this.phoneNumber, }); @@ -137,7 +131,6 @@ class _MasriviWebView extends StatefulWidget { final VoidCallback onBackPress; final VoidCallback? onPaymentDeclined; final MasriviWebViewPresentation presentation; - final double bottomSheetHeight; final String? phoneNumber; @override @@ -259,7 +252,7 @@ true; final webView = WebViewWidget(controller: _controller); if (widget.presentation == MasriviWebViewPresentation.bottomSheet) { - final heightFactor = widget.bottomSheetHeight.clamp(0.2, 1.0).toDouble(); + final heightFactor = (0.88).clamp(0.2, 1.0).toDouble(); return LayoutBuilder( builder: (context, constraints) { diff --git a/lib/src/pages/moosyl_view.dart b/lib/src/pages/moosyl_view.dart index 5fa5289..cab8c1e 100644 --- a/lib/src/pages/moosyl_view.dart +++ b/lib/src/pages/moosyl_view.dart @@ -23,13 +23,10 @@ class MoosylView extends StatelessWidget { required this.transactionId, this.onPaymentSuccess, this.onBackPress, - this.amountToPay = 0.0, - this.tax = 0.0, this.items, this.isFullPage = true, this.isMasriviInBottomSheet = true, this.masriviPhoneNumber, - this.masriviBottomSheetHeight = 0.88, }); /// The API key for authenticating the payment transaction. @@ -45,12 +42,6 @@ class MoosylView extends StatelessWidget { /// Callback when the back arrow is pressed on the payment method selection page. final VoidCallback? onBackPress; - /// Amount to pay (displayed in summary). Defaults to 0. - final double amountToPay; - - /// Tax amount (displayed in summary). Defaults to 0. - final double tax; - /// Summary rows displayed under the payment methods. /// /// When supplied, the sum of all item amounts is validated against the @@ -66,15 +57,10 @@ class MoosylView extends StatelessWidget { /// Optional phone number to prefill when the selected method opens Masrivi. final String? masriviPhoneNumber; - /// Height factor used when Masrivi is rendered as bottom-sheet content. - final double masriviBottomSheetHeight; - @override Widget build(BuildContext context) { final totalAmount = _calculateTotalAmount( items: items, - amountToPay: amountToPay, - tax: tax, ); return Material( @@ -100,8 +86,6 @@ class MoosylView extends StatelessWidget { if (selectedModeOfPayment == null) { return SelectPaymentMethodPage( onBackPress: onBackPress, - amountToPay: amountToPay, - tax: tax, items: items, totalAmount: totalAmount, transactionId: transactionId, @@ -120,7 +104,6 @@ class MoosylView extends StatelessWidget { presentation: isMasriviInBottomSheet ? MasriviWebViewPresentation.bottomSheet : MasriviWebViewPresentation.fullPage, - bottomSheetHeight: masriviBottomSheetHeight, phoneNumber: masriviPhoneNumber ?? provider.paymentRequest?.phoneNumber, onPaymentDeclined: () { @@ -165,8 +148,6 @@ class MoosylView extends StatelessWidget { double _calculateTotalAmount({ required List? items, - required double amountToPay, - required double tax, }) { if (items != null) { return items.fold( @@ -175,5 +156,5 @@ double _calculateTotalAmount({ ); } - return amountToPay + tax; + return 0; } diff --git a/lib/src/pages/payment_dialogs.dart b/lib/src/pages/payment_dialogs.dart new file mode 100644 index 0000000..a9ea034 --- /dev/null +++ b/lib/src/pages/payment_dialogs.dart @@ -0,0 +1,205 @@ +part of 'payment_methods_view.dart'; + +Future _showPaymentDialogForMethod( + BuildContext context, { + required String publishableApiKey, + required String transactionId, + required ConfigurationListDataInner method, + required Color primaryColor, + required FutureOr Function(bool isSuccess)? onPaymentSuccess, +}) async { + final type = PaymentMethodTypes.fromString(method.type); + + if (type == PaymentMethodTypes.bankily) { + _showBankilyDialog( + context, + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: onPaymentSuccess, + ); + } else if (type == PaymentMethodTypes.sedad || + type == PaymentMethodTypes.bimBank) { + await _showSedadDialog( + context, + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: onPaymentSuccess, + ); + } +} + +Future _showSedadDialog( + BuildContext context, { + required String publishableApiKey, + required String transactionId, + required ConfigurationListDataInner method, + required FutureOr Function(bool isSuccess)? onPaymentSuccess, +}) async { + final payProvider = PayProvider( + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: (payment) async => await onPaymentSuccess?.call(payment), + ); + final getPaymentMethodsProvider = context.read(); + + showDialog( + context: context, + barrierDismissible: false, + builder: (_) => const Center( + child: CircularProgressIndicator(), + ), + ); + + final paymentCode = await payProvider.getPaymentCodeForSedad(); + + if (context.mounted) { + Navigator.of(context).pop(); + } + if (!context.mounted) return; + + if (paymentCode == null || paymentCode.isEmpty) { + if (payProvider.error != null) { + Feedbacks.flushBar( + context: context, + message: ExceptionMapper.getErrorMessage(payProvider.error, context), + error: true, + ); + } + return; + } + + showDialog( + context: context, + barrierDismissible: false, + builder: (dialogContext) { + payProvider.onBeforePaymentSuccess = () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }; + return ChangeNotifierProvider.value( + value: payProvider, + child: _DialogWithPayProvider( + payProvider: payProvider, + builder: (paymentRequest) => SedadView( + paymentCodeDisplay: paymentCode, + paymentRequest: paymentRequest, + onClose: () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }, + ), + ), + ); + }, + ).then((_) { + getPaymentMethodsProvider.setPaymentMethod(null); + }); +} + +void _showBankilyDialog( + BuildContext context, { + required String publishableApiKey, + required String transactionId, + required ConfigurationListDataInner method, + required FutureOr Function(bool isSuccess)? onPaymentSuccess, +}) { + final payProvider = PayProvider( + publishableApiKey: publishableApiKey, + transactionId: transactionId, + method: method, + onPaymentSuccess: (payment) async => await onPaymentSuccess?.call(payment), + ); + final getPaymentMethodsProvider = context.read(); + + showDialog( + context: context, + barrierDismissible: false, + builder: (dialogContext) { + payProvider.onBeforePaymentSuccess = () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }; + return ChangeNotifierProvider.value( + value: payProvider, + child: _DialogWithPayProvider( + payProvider: payProvider, + builder: (_) => BankilyView( + method: method, + publishableApiKey: publishableApiKey, + transactionId: transactionId, + paymentCodeDisplay: payProvider.paymentCode, + onClose: () { + Navigator.of(dialogContext).pop(); + getPaymentMethodsProvider.setPaymentMethod(null); + }, + ), + ), + ); + }, + ).then((_) { + getPaymentMethodsProvider.setPaymentMethod(null); + }); +} + +class _DialogWithPayProvider extends StatelessWidget { + const _DialogWithPayProvider({ + required this.payProvider, + required this.builder, + }); + + final PayProvider payProvider; + final Widget Function(dynamic paymentRequest) builder; + + @override + Widget build(BuildContext context) { + return Builder( + builder: (context) { + final provider = context.watch(); + + if (provider.paymentRequest == null) { + if (provider.isLoading) { + return Dialog( + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const CircularProgressIndicator(), + const SizedBox(height: 16), + Text(MoosylLocalization.of(context)?.sending ?? ''), + ], + ), + ), + ); + } + if (provider.error != null) { + return Dialog( + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(provider.error.toString()), + const SizedBox(height: 16), + TextButton( + onPressed: provider.getPaymentRequest, + child: + Text(MoosylLocalization.of(context)?.retry ?? ''), + ), + ], + ), + ), + ); + } + } + + return provider.paymentRequest != null + ? builder(provider.paymentRequest!) + : const SizedBox.shrink(); + }, + ); + } +} diff --git a/lib/src/pages/payment_methods.dart b/lib/src/pages/payment_methods.dart new file mode 100644 index 0000000..438620e --- /dev/null +++ b/lib/src/pages/payment_methods.dart @@ -0,0 +1,778 @@ +part of 'payment_methods_view.dart'; + +/// Data passed to [MoosylPaymentMethodBuilder] for each payment method row. +class MoosylPaymentMethodRenderProps { + /// Creates render props for a payment method row. + const MoosylPaymentMethodRenderProps({ + required this.method, + required this.type, + required this.title, + required this.isSelected, + required this.selectedMethodId, + required this.isRTL, + required this.onSelect, + }); + + /// Raw method from the Moosyl Dart SDK. + final ConfigurationListDataInner method; + + /// Parsed payment method type. + final PaymentMethodTypes type; + + /// Localized method title. + final String title; + + /// Whether this method is selected. + final bool isSelected; + + /// Currently selected method id, if any. + final String? selectedMethodId; + + /// Whether the surrounding directionality is RTL. + final bool isRTL; + + /// Selects this method. + final VoidCallback onSelect; +} + +/// Builds a custom payment method row. +typedef MoosylPaymentMethodBuilder = Widget Function( + BuildContext context, + MoosylPaymentMethodRenderProps props, +); + +/// Data passed to [MoosylPaymentMethodsLoadingBuilder]. +class MoosylPaymentMethodsLoadingProps { + /// Creates render props for the payment methods loading state. + const MoosylPaymentMethodsLoadingProps({ + required this.primaryColor, + required this.locale, + required this.isRTL, + }); + + /// Accent color used by the default UI. + final Color primaryColor; + + /// Active locale from the surrounding localization. + final Locale locale; + + /// Whether the surrounding directionality is RTL. + final bool isRTL; +} + +/// Builds custom loading content for [MoosylPaymentMethods]. +typedef MoosylPaymentMethodsLoadingBuilder = Widget Function( + BuildContext context, + MoosylPaymentMethodsLoadingProps props, +); + +/// Controller for [MoosylPaymentMethods]. +class MoosylPaymentMethodsController extends ChangeNotifier { + _MoosylPaymentMethodsContentState? _state; + + void _attach(_MoosylPaymentMethodsContentState state) { + _state = state; + } + + void _detach(_MoosylPaymentMethodsContentState state) { + if (_state == state) { + _state = null; + } + } + + /// Continues with the currently selected payment method. + Future continuePayment() async { + await _state?._continuePayment(); + } + + /// Returns the currently selected method, if mounted and selected. + ConfigurationListDataInner? get selectedMethod => _state?._selectedMethod; + + void _selectionDidChange() { + notifyListeners(); + } +} + +/// Standalone payment method picker that can be embedded in custom checkout UI. +/// +/// Use [controller] to trigger [MoosylPaymentMethodsController.continuePayment] +/// from a button owned by your screen. +class MoosylPaymentMethods extends StatelessWidget { + /// Creates a reusable payment method picker. + const MoosylPaymentMethods({ + super.key, + required this.publishableApiKey, + this.transactionId, + this.amountToPay = 0.0, + this.tax = 0.0, + this.totalAmount, + this.selectedMethodId, + this.onSelectMethod, + this.onPaymentSuccess, + this.onPaymentError, + this.onContinueLoadingChange, + this.controller, + this.primaryColor, + this.renderMethod, + this.loadingComponent, + this.loadingBuilder, + this.showDefaultTitle = true, + this.isMasriviInBottomSheet = true, + this.masriviPresentation = MasriviWebViewPresentation.fullPage, + this.masriviPhoneNumber, + this.masriviBottomSheetHeight = 0.88, + }); + + /// Publishable API key used to load payment methods. + final String publishableApiKey; + + /// Transaction id used by [MoosylPaymentMethodsController.continuePayment]. + final String? transactionId; + + /// Amount to pay, used for validation when continuing. + final double amountToPay; + + /// Tax amount, used with [amountToPay] when [totalAmount] is not supplied. + final double tax; + + /// Total expected amount. Defaults to [amountToPay] + [tax]. + final double? totalAmount; + + /// Controlled selected method id. + final String? selectedMethodId; + + /// Called whenever a method is selected. + final ValueChanged? onSelectMethod; + + /// Called when payment succeeds. + final FutureOr Function(bool isSuccess)? onPaymentSuccess; + + /// Called when continuing fails. + final ValueChanged? onPaymentError; + + /// Called when continuePayment starts or finishes. + final ValueChanged? onContinueLoadingChange; + + /// Controller used by host UI to continue payment. + final MoosylPaymentMethodsController? controller; + + /// Accent color for the default rows and dialogs. + final Color? primaryColor; + + /// Custom row builder. Call `props.onSelect()` inside the returned widget. + final MoosylPaymentMethodBuilder? renderMethod; + + /// Custom loading widget shown while payment methods are loading. + final Widget? loadingComponent; + + /// Custom loading builder shown while payment methods are loading. + final MoosylPaymentMethodsLoadingBuilder? loadingBuilder; + + /// Whether the default UI should include the section title. + final bool showDefaultTitle; + + /// When true, Masrivi opens inside a bottom sheet from custom platform UIs. + final bool isMasriviInBottomSheet; + + /// How Masrivi should be presented when this picker opens the WebView. + final MasriviWebViewPresentation masriviPresentation; + + /// Optional phone number to prefill when the selected method opens Masrivi. + final String? masriviPhoneNumber; + + /// Height factor used when Masrivi is rendered as bottom-sheet content. + final double masriviBottomSheetHeight; + + @override + Widget build(BuildContext context) { + try { + context.read(); + return _MoosylPaymentMethodsContent( + selectedMethodId: selectedMethodId, + onSelectMethod: onSelectMethod, + onPaymentSuccess: onPaymentSuccess, + onPaymentError: onPaymentError, + onContinueLoadingChange: onContinueLoadingChange, + controller: controller, + primaryColor: primaryColor, + renderMethod: renderMethod, + loadingComponent: loadingComponent, + loadingBuilder: loadingBuilder, + showDefaultTitle: showDefaultTitle, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPresentation: masriviPresentation, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, + ); + } on ProviderNotFoundException catch (_) { + return ChangeNotifierProvider( + create: (_) => GetPaymentMethodsProvider( + publishableApiKey: publishableApiKey, + transactionId: transactionId ?? '', + totalAmount: totalAmount ?? amountToPay + tax, + ), + child: _MoosylPaymentMethodsContent( + selectedMethodId: selectedMethodId, + onSelectMethod: onSelectMethod, + onPaymentSuccess: onPaymentSuccess, + onPaymentError: onPaymentError, + onContinueLoadingChange: onContinueLoadingChange, + controller: controller, + primaryColor: primaryColor, + renderMethod: renderMethod, + loadingComponent: loadingComponent, + loadingBuilder: loadingBuilder, + showDefaultTitle: showDefaultTitle, + isMasriviInBottomSheet: isMasriviInBottomSheet, + masriviPresentation: masriviPresentation, + masriviPhoneNumber: masriviPhoneNumber, + masriviBottomSheetHeight: masriviBottomSheetHeight, + ), + ); + } + } +} + +class _MoosylPaymentMethodsContent extends StatefulWidget { + const _MoosylPaymentMethodsContent({ + required this.selectedMethodId, + required this.onSelectMethod, + required this.onPaymentSuccess, + required this.onPaymentError, + required this.onContinueLoadingChange, + required this.controller, + required this.primaryColor, + required this.renderMethod, + required this.loadingComponent, + required this.loadingBuilder, + required this.showDefaultTitle, + required this.isMasriviInBottomSheet, + required this.masriviPresentation, + required this.masriviPhoneNumber, + required this.masriviBottomSheetHeight, + }); + + final String? selectedMethodId; + final ValueChanged? onSelectMethod; + final FutureOr Function(bool isSuccess)? onPaymentSuccess; + final ValueChanged? onPaymentError; + final ValueChanged? onContinueLoadingChange; + final MoosylPaymentMethodsController? controller; + final Color? primaryColor; + final MoosylPaymentMethodBuilder? renderMethod; + final Widget? loadingComponent; + final MoosylPaymentMethodsLoadingBuilder? loadingBuilder; + final bool showDefaultTitle; + final bool isMasriviInBottomSheet; + final MasriviWebViewPresentation masriviPresentation; + final String? masriviPhoneNumber; + final double masriviBottomSheetHeight; + + @override + State<_MoosylPaymentMethodsContent> createState() => + _MoosylPaymentMethodsContentState(); +} + +class _MoosylPaymentMethodsContentState + extends State<_MoosylPaymentMethodsContent> { + String? _continueError; + + @override + void initState() { + super.initState(); + widget.controller?._attach(this); + } + + @override + void didUpdateWidget(covariant _MoosylPaymentMethodsContent oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.controller != widget.controller) { + oldWidget.controller?._detach(this); + widget.controller?._attach(this); + } + } + + @override + void dispose() { + widget.controller?._detach(this); + super.dispose(); + } + + ConfigurationListDataInner? get _selectedMethod { + final provider = context.read(); + final selectedId = widget.selectedMethodId ?? provider.pendingSelection?.id; + for (final method in provider.methods) { + if (method.id == selectedId) { + return method; + } + } + return null; + } + + Future _continuePayment() async { + final provider = context.read(); + final pendingSelection = _selectedMethod; + final transactionId = provider.transactionId; + + if (pendingSelection == null) { + return; + } + + if (transactionId.isEmpty) { + setState(() { + _continueError = 'Transaction ID is required to continue payment.'; + }); + return; + } + + setState(() { + _continueError = null; + }); + widget.onContinueLoadingChange?.call(true); + + try { + final methodToShow = + await provider.setPaymentMethodWithValidation(pendingSelection); + if (!mounted) return; + + if (methodToShow == null) { + final selected = provider.selected; + if (selected == null) { + return; + } + + final masriviPresentation = widget.isMasriviInBottomSheet + ? MasriviWebViewPresentation.bottomSheet + : widget.masriviPresentation; + + final masriviView = MasriviView( + publishableApiKey: provider.publishableApiKey, + transactionId: provider.transactionId, + configurationId: selected.id, + onPaymentSuccess: widget.onPaymentSuccess, + onBackPress: () => Navigator.of(context).pop(), + presentation: masriviPresentation, + phoneNumber: + widget.masriviPhoneNumber ?? provider.paymentRequest?.phoneNumber, + ); + + if (masriviPresentation == MasriviWebViewPresentation.bottomSheet) { + await showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (_) => masriviView, + ); + } else { + await Navigator.of(context).push( + MaterialPageRoute(builder: (_) => masriviView), + ); + } + + if (mounted) { + provider.setPaymentMethod(null); + } + return; + } + + final primaryColor = + widget.primaryColor ?? Theme.of(context).colorScheme.primary; + await _showPaymentDialogForMethod( + context, + publishableApiKey: provider.publishableApiKey, + transactionId: provider.transactionId, + method: methodToShow, + primaryColor: primaryColor, + onPaymentSuccess: widget.onPaymentSuccess, + ); + } catch (error) { + widget.onPaymentError?.call(error); + if (mounted) { + setState(() { + _continueError = error.toString(); + }); + } + } finally { + widget.onContinueLoadingChange?.call(false); + } + } + + @override + Widget build(BuildContext context) { + final provider = context.watch(); + final localizationHelper = MoosylLocalization.of(context)!; + final textTheme = Theme.of(context).textTheme; + final primaryColor = + widget.primaryColor ?? Theme.of(context).colorScheme.primary; + final isRTL = Directionality.of(context) == TextDirection.rtl; + + if (provider.isLoading) { + final loadingProps = MoosylPaymentMethodsLoadingProps( + primaryColor: primaryColor, + locale: Localizations.localeOf(context), + isRTL: isRTL, + ); + final loadingContent = widget.loadingBuilder?.call( + context, + loadingProps, + ) ?? + widget.loadingComponent ?? + _PaymentMethodsLoadingSkeleton( + isRTL: isRTL, + showTitle: widget.showDefaultTitle, + ); + + return widget.renderMethod == null + ? AppContainer(child: loadingContent) + : loadingContent; + } + + if (provider.error != null) { + final error = provider.error!; + WidgetsBinding.instance.addPostFrameCallback((_) { + widget.onPaymentError?.call(error); + }); + return AppErrorWidget( + message: ExceptionMapper.getErrorMessage(error, context), + onRetry: provider.getMethods, + ); + } + + if (provider.methods.isEmpty) { + return AppContainer( + padding: const EdgeInsets.all(24), + border: widget.renderMethod == null + ? Border.all(color: Colors.grey.shade300) + : null, + borderRadius: BorderRadius.circular(8), + child: Text( + localizationHelper.paymentMethod, + textAlign: TextAlign.center, + ), + ); + } + + final selectedId = widget.selectedMethodId ?? provider.pendingSelection?.id; + final selectionErrorMessage = provider.selectionError != null + ? SelectionErrorType.fromStr(provider.selectionError!) + .message(localizationHelper) + : null; + + final content = Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: [ + if (widget.renderMethod == null && widget.showDefaultTitle) ...[ + Text( + localizationHelper.chooseHowYouWouldLikeToPay, + style: textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + fontSize: 18, + ), + ), + const SizedBox(height: 10), + ], + ...provider.methods.map((method) { + final type = PaymentMethodTypes.fromString(method.type); + final isSelected = selectedId == method.id; + final props = MoosylPaymentMethodRenderProps( + method: method, + type: type, + title: type.title(context), + isSelected: isSelected, + selectedMethodId: selectedId, + isRTL: isRTL, + onSelect: () { + if (widget.selectedMethodId == null) { + provider.setPendingSelection(method); + } + widget.onSelectMethod?.call(method); + widget.controller?._selectionDidChange(); + }, + ); + + if (widget.renderMethod != null) { + return widget.renderMethod!(context, props); + } + + return _MethodRow( + method: method, + isSelected: isSelected, + onTap: props.onSelect, + primaryColor: primaryColor, + ); + }), + if (selectionErrorMessage != null || _continueError != null) + Padding( + padding: const EdgeInsets.only(top: 4), + child: Text( + selectionErrorMessage ?? _continueError!, + style: textTheme.bodyMedium?.copyWith(color: Colors.red), + ), + ), + ], + ); + + return widget.renderMethod == null ? AppContainer(child: content) : content; + } +} + +class _PaymentMethodsLoadingSkeleton extends StatelessWidget { + const _PaymentMethodsLoadingSkeleton({ + required this.isRTL, + required this.showTitle, + }); + + final bool isRTL; + final bool showTitle; + + @override + Widget build(BuildContext context) { + final localizationHelper = MoosylLocalization.of(context); + final textTheme = Theme.of(context).textTheme; + + return Directionality( + textDirection: isRTL ? TextDirection.rtl : TextDirection.ltr, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: [ + if (showTitle && localizationHelper != null) ...[ + Text( + localizationHelper.chooseHowYouWouldLikeToPay, + style: textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + fontSize: 18, + ), + ), + const SizedBox(height: 10), + ], + ...List.generate( + 3, + (_) => const _PaymentMethodsLoadingSkeletonRow(), + ), + ], + ), + ); + } +} + +class _PaymentMethodsLoadingSkeletonRow extends StatelessWidget { + const _PaymentMethodsLoadingSkeletonRow(); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 12), + decoration: BoxDecoration( + border: Border.all(color: const Color(0xFFEDF3FF)), + borderRadius: BorderRadius.circular(16), + ), + child: Row( + children: [ + _LoadingShimmerBlock( + width: 48, + height: 48, + borderRadius: BorderRadius.circular(6), + ), + const SizedBox(width: 12), + Expanded( + child: Align( + alignment: AlignmentDirectional.centerStart, + child: FractionallySizedBox( + widthFactor: 0.68, + alignment: AlignmentDirectional.centerStart, + child: _LoadingShimmerBlock( + height: 18, + borderRadius: BorderRadius.circular(8), + ), + ), + ), + ), + const SizedBox(width: 12), + _LoadingShimmerBlock( + width: 20, + height: 20, + borderRadius: BorderRadius.circular(9), + ), + ], + ), + ), + ); + } +} + +class _LoadingShimmerBlock extends StatelessWidget { + const _LoadingShimmerBlock({ + required this.height, + required this.borderRadius, + this.width, + }); + + final double? width; + final double height; + final BorderRadius borderRadius; + + @override + Widget build(BuildContext context) { + return ClipRRect( + borderRadius: borderRadius, + child: Shimmer.fromColors( + baseColor: const Color(0xFFECEFF1), + highlightColor: const Color.fromRGBO(255, 255, 255, 0.55), + child: ColoredBox( + color: Colors.white, + child: SizedBox(width: width, height: height), + ), + ), + ); + } +} + +class _MethodRow extends StatelessWidget { + const _MethodRow({ + required this.method, + required this.isSelected, + required this.onTap, + this.primaryColor, + }); + + final ConfigurationListDataInner method; + final bool isSelected; + final VoidCallback onTap; + final Color? primaryColor; + + @override + Widget build(BuildContext context) { + final textTheme = Theme.of(context).textTheme; + final effectivePrimary = + primaryColor ?? Theme.of(context).colorScheme.primary; + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6), + child: TweenAnimationBuilder( + tween: Tween(end: isSelected ? 1 : 0), + duration: const Duration(milliseconds: 180), + curve: Curves.easeOutCubic, + builder: (context, value, _) { + return Stack( + clipBehavior: Clip.none, + children: [ + Positioned.fill( + top: -2, + right: -2, + bottom: -2, + left: -2, + child: IgnorePointer( + child: Transform.scale( + scale: 0.98 + (0.02 * value), + child: Opacity( + opacity: value, + child: DecoratedBox( + decoration: BoxDecoration( + border: Border.all( + color: effectivePrimary, + width: 2, + ), + borderRadius: BorderRadius.circular(16), + ), + ), + ), + ), + ), + ), + Transform.scale( + scale: 1 - (0.0005 * value), + child: Material( + color: Colors.white, + borderRadius: BorderRadius.circular(16), + child: InkWell( + splashColor: Colors.transparent, + onTap: onTap, + borderRadius: BorderRadius.circular(16), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 12, + ), + decoration: BoxDecoration( + border: Border.all(color: Color(0xFFEDF3FF)), + borderRadius: BorderRadius.circular(16), + ), + child: Row( + children: [ + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: const Color(0xFFF7F8FB), + border: Border.all( + color: const Color(0xFFEDF3FF), + ), + borderRadius: BorderRadius.circular(6), + ), + clipBehavior: Clip.antiAlias, + child: Center( + child: PaymentMethodTypes.fromString(method.type) + .icon + .apply(size: 40), + ), + ), + const SizedBox(width: 10), + Expanded( + child: Align( + alignment: AlignmentDirectional.centerStart, + child: Text( + PaymentMethodTypes.fromString(method.type) + .title(context), + style: textTheme.titleMedium?.copyWith( + color: const Color(0xFF111111), + fontSize: 17, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + const SizedBox(width: 12), + Container( + width: 22, + height: 22, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: effectivePrimary, + width: 1.5, + ), + ), + child: Center( + child: Transform.scale( + scale: 0.4 + (0.6 * value), + child: Opacity( + opacity: value, + child: Container( + width: 12, + height: 12, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: effectivePrimary, + ), + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ), + ], + ); + }, + ), + ); + } +} diff --git a/lib/src/pages/payment_methods_view.dart b/lib/src/pages/payment_methods_view.dart index 2ed852e..6e69881 100644 --- a/lib/src/pages/payment_methods_view.dart +++ b/lib/src/pages/payment_methods_view.dart @@ -18,536 +18,11 @@ import 'package:moosyl_flutter/src/widgets/container.dart'; import 'package:moosyl_flutter/src/widgets/error_widget.dart'; import 'package:moosyl_flutter/src/widgets/feedback.dart'; import 'package:provider/provider.dart'; +import 'package:shimmer/shimmer.dart'; -/// Data passed to [MoosylPaymentMethodBuilder] for each payment method row. -class MoosylPaymentMethodRenderProps { - /// Creates render props for a payment method row. - const MoosylPaymentMethodRenderProps({ - required this.method, - required this.type, - required this.title, - required this.isSelected, - required this.selectedMethodId, - required this.isRTL, - required this.onSelect, - }); - - /// Raw method from the Moosyl Dart SDK. - final ConfigurationListDataInner method; - - /// Parsed payment method type. - final PaymentMethodTypes type; - - /// Localized method title. - final String title; - - /// Whether this method is selected. - final bool isSelected; - - /// Currently selected method id, if any. - final String? selectedMethodId; - - /// Whether the surrounding directionality is RTL. - final bool isRTL; - - /// Selects this method. - final VoidCallback onSelect; -} - -/// Builds a custom payment method row. -typedef MoosylPaymentMethodBuilder = Widget Function( - BuildContext context, - MoosylPaymentMethodRenderProps props, -); - -/// Data passed to [MoosylPaymentMethodsLoadingBuilder]. -class MoosylPaymentMethodsLoadingProps { - /// Creates render props for the payment methods loading state. - const MoosylPaymentMethodsLoadingProps({ - required this.primaryColor, - required this.locale, - required this.isRTL, - }); - - /// Accent color used by the default UI. - final Color primaryColor; - - /// Active locale from the surrounding localization. - final Locale locale; - - /// Whether the surrounding directionality is RTL. - final bool isRTL; -} - -/// Builds custom loading content for [MoosylPaymentMethods]. -typedef MoosylPaymentMethodsLoadingBuilder = Widget Function( - BuildContext context, - MoosylPaymentMethodsLoadingProps props, -); - -/// Controller for [MoosylPaymentMethods]. -class MoosylPaymentMethodsController extends ChangeNotifier { - _MoosylPaymentMethodsContentState? _state; - - void _attach(_MoosylPaymentMethodsContentState state) { - _state = state; - } - - void _detach(_MoosylPaymentMethodsContentState state) { - if (_state == state) { - _state = null; - } - } - - /// Continues with the currently selected payment method. - Future continuePayment() async { - await _state?._continuePayment(); - } - - /// Returns the currently selected method, if mounted and selected. - ConfigurationListDataInner? get selectedMethod => _state?._selectedMethod; - - void _selectionDidChange() { - notifyListeners(); - } -} - -/// Standalone payment method picker that can be embedded in custom checkout UI. -/// -/// Use [controller] to trigger [MoosylPaymentMethodsController.continuePayment] -/// from a button owned by your screen. -class MoosylPaymentMethods extends StatelessWidget { - /// Creates a reusable payment method picker. - const MoosylPaymentMethods({ - super.key, - required this.publishableApiKey, - this.transactionId, - this.amountToPay = 0.0, - this.tax = 0.0, - this.totalAmount, - this.selectedMethodId, - this.onSelectMethod, - this.onPaymentSuccess, - this.onPaymentError, - this.onContinueLoadingChange, - this.controller, - this.primaryColor, - this.renderMethod, - this.loadingComponent, - this.loadingBuilder, - this.showDefaultTitle = true, - this.isMasriviInBottomSheet = true, - this.masriviPresentation = MasriviWebViewPresentation.fullPage, - this.masriviPhoneNumber, - this.masriviBottomSheetHeight = 0.88, - }); - - /// Publishable API key used to load payment methods. - final String publishableApiKey; - - /// Transaction id used by [MoosylPaymentMethodsController.continuePayment]. - final String? transactionId; - - /// Amount to pay, used for validation when continuing. - final double amountToPay; - - /// Tax amount, used with [amountToPay] when [totalAmount] is not supplied. - final double tax; - - /// Total expected amount. Defaults to [amountToPay] + [tax]. - final double? totalAmount; - - /// Controlled selected method id. - final String? selectedMethodId; - - /// Called whenever a method is selected. - final ValueChanged? onSelectMethod; - - /// Called when payment succeeds. - final FutureOr Function(bool isSuccess)? onPaymentSuccess; - - /// Called when continuing fails. - final ValueChanged? onPaymentError; - - /// Called when continuePayment starts or finishes. - final ValueChanged? onContinueLoadingChange; - - /// Controller used by host UI to continue payment. - final MoosylPaymentMethodsController? controller; - - /// Accent color for the default rows and dialogs. - final Color? primaryColor; - - /// Custom row builder. Call `props.onSelect()` inside the returned widget. - final MoosylPaymentMethodBuilder? renderMethod; - - /// Custom loading widget shown while payment methods are loading. - final Widget? loadingComponent; - - /// Custom loading builder shown while payment methods are loading. - final MoosylPaymentMethodsLoadingBuilder? loadingBuilder; - - /// Whether the default UI should include the section title. - final bool showDefaultTitle; - - /// When true, Masrivi opens inside a bottom sheet from custom platform UIs. - final bool isMasriviInBottomSheet; - - /// How Masrivi should be presented when this picker opens the WebView. - final MasriviWebViewPresentation masriviPresentation; - - /// Optional phone number to prefill when the selected method opens Masrivi. - final String? masriviPhoneNumber; - - /// Height factor used when Masrivi is rendered as bottom-sheet content. - final double masriviBottomSheetHeight; - - @override - Widget build(BuildContext context) { - try { - context.read(); - return _MoosylPaymentMethodsContent( - selectedMethodId: selectedMethodId, - onSelectMethod: onSelectMethod, - onPaymentSuccess: onPaymentSuccess, - onPaymentError: onPaymentError, - onContinueLoadingChange: onContinueLoadingChange, - controller: controller, - primaryColor: primaryColor, - renderMethod: renderMethod, - loadingComponent: loadingComponent, - loadingBuilder: loadingBuilder, - showDefaultTitle: showDefaultTitle, - isMasriviInBottomSheet: isMasriviInBottomSheet, - masriviPresentation: masriviPresentation, - masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, - ownsProvider: false, - ); - } on ProviderNotFoundException catch (_) { - return ChangeNotifierProvider( - create: (_) => GetPaymentMethodsProvider( - publishableApiKey: publishableApiKey, - transactionId: transactionId ?? '', - totalAmount: totalAmount ?? amountToPay + tax, - ), - child: _MoosylPaymentMethodsContent( - selectedMethodId: selectedMethodId, - onSelectMethod: onSelectMethod, - onPaymentSuccess: onPaymentSuccess, - onPaymentError: onPaymentError, - onContinueLoadingChange: onContinueLoadingChange, - controller: controller, - primaryColor: primaryColor, - renderMethod: renderMethod, - loadingComponent: loadingComponent, - loadingBuilder: loadingBuilder, - showDefaultTitle: showDefaultTitle, - isMasriviInBottomSheet: isMasriviInBottomSheet, - masriviPresentation: masriviPresentation, - masriviPhoneNumber: masriviPhoneNumber, - masriviBottomSheetHeight: masriviBottomSheetHeight, - ownsProvider: true, - ), - ); - } - } -} - -class _MoosylPaymentMethodsContent extends StatefulWidget { - const _MoosylPaymentMethodsContent({ - required this.selectedMethodId, - required this.onSelectMethod, - required this.onPaymentSuccess, - required this.onPaymentError, - required this.onContinueLoadingChange, - required this.controller, - required this.primaryColor, - required this.renderMethod, - required this.loadingComponent, - required this.loadingBuilder, - required this.showDefaultTitle, - required this.isMasriviInBottomSheet, - required this.masriviPresentation, - required this.masriviPhoneNumber, - required this.masriviBottomSheetHeight, - required this.ownsProvider, - }); - - final String? selectedMethodId; - final ValueChanged? onSelectMethod; - final FutureOr Function(bool isSuccess)? onPaymentSuccess; - final ValueChanged? onPaymentError; - final ValueChanged? onContinueLoadingChange; - final MoosylPaymentMethodsController? controller; - final Color? primaryColor; - final MoosylPaymentMethodBuilder? renderMethod; - final Widget? loadingComponent; - final MoosylPaymentMethodsLoadingBuilder? loadingBuilder; - final bool showDefaultTitle; - final bool isMasriviInBottomSheet; - final MasriviWebViewPresentation masriviPresentation; - final String? masriviPhoneNumber; - final double masriviBottomSheetHeight; - final bool ownsProvider; - - @override - State<_MoosylPaymentMethodsContent> createState() => - _MoosylPaymentMethodsContentState(); -} - -class _MoosylPaymentMethodsContentState - extends State<_MoosylPaymentMethodsContent> { - String? _continueError; - - @override - void initState() { - super.initState(); - widget.controller?._attach(this); - } - - @override - void didUpdateWidget(covariant _MoosylPaymentMethodsContent oldWidget) { - super.didUpdateWidget(oldWidget); - if (oldWidget.controller != widget.controller) { - oldWidget.controller?._detach(this); - widget.controller?._attach(this); - } - } - - @override - void dispose() { - widget.controller?._detach(this); - super.dispose(); - } - - ConfigurationListDataInner? get _selectedMethod { - final provider = context.read(); - final selectedId = widget.selectedMethodId ?? provider.pendingSelection?.id; - for (final method in provider.methods) { - if (method.id == selectedId) { - return method; - } - } - return null; - } - - Future _continuePayment() async { - final provider = context.read(); - final pendingSelection = _selectedMethod; - final transactionId = provider.transactionId; - - if (pendingSelection == null) { - return; - } - - if (transactionId.isEmpty) { - setState(() { - _continueError = 'Transaction ID is required to continue payment.'; - }); - return; - } - - setState(() { - _continueError = null; - }); - widget.onContinueLoadingChange?.call(true); - - try { - final methodToShow = - await provider.setPaymentMethodWithValidation(pendingSelection); - if (!mounted) return; - - if (methodToShow == null) { - final selected = provider.selected; - if (selected == null) { - return; - } - - final masriviPresentation = widget.isMasriviInBottomSheet - ? MasriviWebViewPresentation.bottomSheet - : widget.masriviPresentation; - - final masriviView = MasriviView( - publishableApiKey: provider.publishableApiKey, - transactionId: provider.transactionId, - configurationId: selected.id, - onPaymentSuccess: widget.onPaymentSuccess, - onBackPress: () => Navigator.of(context).pop(), - presentation: masriviPresentation, - bottomSheetHeight: widget.masriviBottomSheetHeight, - phoneNumber: - widget.masriviPhoneNumber ?? provider.paymentRequest?.phoneNumber, - ); - - if (masriviPresentation == MasriviWebViewPresentation.bottomSheet) { - await showModalBottomSheet( - context: context, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (_) => masriviView, - ); - } else { - await Navigator.of(context).push( - MaterialPageRoute(builder: (_) => masriviView), - ); - } - - if (mounted) { - provider.setPaymentMethod(null); - } - return; - } - - final primaryColor = - widget.primaryColor ?? Theme.of(context).colorScheme.primary; - await _showPaymentDialogForMethod( - context, - publishableApiKey: provider.publishableApiKey, - transactionId: provider.transactionId, - method: methodToShow, - primaryColor: primaryColor, - onPaymentSuccess: widget.onPaymentSuccess, - ); - } catch (error) { - widget.onPaymentError?.call(error); - if (mounted) { - setState(() { - _continueError = error.toString(); - }); - } - } finally { - widget.onContinueLoadingChange?.call(false); - } - } - - @override - Widget build(BuildContext context) { - final provider = context.watch(); - final localizationHelper = MoosylLocalization.of(context)!; - final textTheme = Theme.of(context).textTheme; - final primaryColor = - widget.primaryColor ?? Theme.of(context).colorScheme.primary; - final isRTL = Directionality.of(context) == TextDirection.rtl; - - if (provider.isLoading) { - final loadingProps = MoosylPaymentMethodsLoadingProps( - primaryColor: primaryColor, - locale: Localizations.localeOf(context), - isRTL: isRTL, - ); - final loadingContent = widget.loadingBuilder?.call( - context, - loadingProps, - ) ?? - widget.loadingComponent ?? - _PaymentMethodsLoadingSkeleton(isRTL: isRTL); - - if (widget.renderMethod != null) { - return loadingContent; - } - - return AppContainer(child: loadingContent); - } - - if (provider.error != null) { - final error = provider.error!; - WidgetsBinding.instance.addPostFrameCallback((_) { - widget.onPaymentError?.call(error); - }); - return AppErrorWidget( - message: ExceptionMapper.getErrorMessage(error, context), - onRetry: provider.getMethods, - ); - } - - if (provider.methods.isEmpty) { - return AppContainer( - padding: const EdgeInsets.all(24), - border: widget.renderMethod == null - ? Border.all(color: Colors.grey.shade300) - : null, - borderRadius: BorderRadius.circular(8), - child: Text( - localizationHelper.paymentMethod, - textAlign: TextAlign.center, - ), - ); - } - - final selectedId = widget.selectedMethodId ?? provider.pendingSelection?.id; - final selectionErrorMessage = provider.selectionError != null - ? SelectionErrorType.fromStr(provider.selectionError!) - .message(localizationHelper) - : null; - - final content = Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.min, - children: [ - if (widget.renderMethod == null && widget.showDefaultTitle) ...[ - Text( - localizationHelper.chooseHowYouWouldLikeToPay, - style: textTheme.titleMedium - ?.copyWith(fontWeight: FontWeight.w600, fontSize: 18), - ), - const SizedBox( - height: 10, - ) - ], - ...provider.methods.map((method) { - final type = PaymentMethodTypes.fromString(method.type); - final isSelected = selectedId == method.id; - final props = MoosylPaymentMethodRenderProps( - method: method, - type: type, - title: type.title(context), - isSelected: isSelected, - selectedMethodId: selectedId, - isRTL: isRTL, - onSelect: () { - if (widget.selectedMethodId == null) { - provider.setPendingSelection(method); - } - widget.onSelectMethod?.call(method); - widget.controller?._selectionDidChange(); - }, - ); - - if (widget.renderMethod != null) { - return widget.renderMethod!(context, props); - } - - return _MethodRow( - method: method, - isSelected: isSelected, - onTap: props.onSelect, - primaryColor: primaryColor, - ); - }), - if (selectionErrorMessage != null || _continueError != null) - Padding( - padding: const EdgeInsets.only(top: 4), - child: Text( - selectionErrorMessage ?? _continueError!, - style: textTheme.bodyMedium?.copyWith(color: Colors.red), - ), - ), - ], - ); - - if (widget.renderMethod != null) { - return content; - } - - return AppContainer( - // padding: const EdgeInsets.all(16), - // border: Border.all(color: Colors.grey.shade300), - // borderRadius: BorderRadius.circular(8), - child: content, - ); - } -} +part 'payment_dialogs.dart'; +part 'payment_methods.dart'; +part 'payment_summary.dart'; /// A widget that displays the available payment methods for selection. /// @@ -559,8 +34,6 @@ class SelectPaymentMethodPage extends StatelessWidget { const SelectPaymentMethodPage({ super.key, this.onBackPress, - this.amountToPay = 0.0, - this.tax = 0.0, this.items, this.totalAmount = 0.0, required this.transactionId, @@ -574,16 +47,10 @@ class SelectPaymentMethodPage extends StatelessWidget { /// Callback when the back arrow is pressed. final VoidCallback? onBackPress; - /// The amount to pay (displayed in summary). - final double amountToPay; - - /// The tax amount (displayed in summary). - final double tax; - /// Summary rows displayed under the payment methods. final List? items; - /// The total amount including tax (displayed on the pay button). + /// The expected total amount from [items]. final double totalAmount; /// The transaction ID (displayed in the payment request). @@ -596,8 +63,6 @@ class SelectPaymentMethodPage extends StatelessWidget { Widget build(BuildContext context) { return _SelectPaymentMethodContent( onBackPress: onBackPress, - amountToPay: amountToPay, - tax: tax, items: items, totalAmount: totalAmount, transactionId: transactionId, @@ -607,12 +72,9 @@ class SelectPaymentMethodPage extends StatelessWidget { } } -/// Full page or bottom sheet content for payment method selection. class _SelectPaymentMethodContent extends StatelessWidget { const _SelectPaymentMethodContent({ required this.onBackPress, - required this.amountToPay, - required this.tax, required this.items, required this.totalAmount, required this.transactionId, @@ -621,8 +83,6 @@ class _SelectPaymentMethodContent extends StatelessWidget { }); final VoidCallback? onBackPress; - final double amountToPay; - final double tax; final List? items; final double totalAmount; final String transactionId; @@ -636,16 +96,6 @@ class _SelectPaymentMethodContent extends StatelessWidget { final localizationHelper = MoosylLocalization.of(context)!; final textTheme = Theme.of(context).textTheme; - if (provider.isLoading) { - final loading = const Center(child: CircularProgressIndicator()); - return isFullPage - ? loading - : ColoredBox( - color: Colors.white, - child: loading, - ); - } - if (provider.error != null) { final errorView = AppErrorWidget( message: ExceptionMapper.getErrorMessage(provider.error, context), @@ -663,22 +113,9 @@ class _SelectPaymentMethodContent extends StatelessWidget { ? SelectionErrorType.fromStr(provider.selectionError!) .message(localizationHelper) : null; - final pendingSelection = provider.pendingSelection; - final summaryItems = items ?? - [ - if (amountToPay > 0) - MoosylPaymentSummaryItem( - label: 'amountToPay', - amount: amountToPay, - ), - if (tax > 0) - MoosylPaymentSummaryItem( - label: 'tax', - amount: tax, - ), - ]; - final shouldShowSummary = items != null || summaryItems.isNotEmpty; + final summaryItems = items ?? const []; + final shouldShowSummary = items != null; final displayTotal = provider.paymentRequest?.amount ?? (totalAmount > 0 ? totalAmount : _calculateSummaryTotal(summaryItems)); final displayTotalText = '${_formatAmount(displayTotal)} MRU'; @@ -698,49 +135,51 @@ class _SelectPaymentMethodContent extends StatelessWidget { MoosylPaymentMethods( publishableApiKey: provider.publishableApiKey, transactionId: provider.transactionId, - amountToPay: amountToPay, - tax: tax, totalAmount: totalAmount, + showDefaultTitle: !isFullPage, ), ], ), ), ), - SafeArea( - top: false, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (selectionErrorMessage != null) - Text(selectionErrorMessage, - style: textTheme.bodyMedium?.copyWith(color: Colors.red)), - const SizedBox(height: 16), - if (shouldShowSummary) - _PaymentSummary( - items: summaryItems, - totalText: displayTotalText, - localization: localizationHelper, + if (!provider.isLoading) + SafeArea( + top: false, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (selectionErrorMessage != null) + Text( + selectionErrorMessage, + style: textTheme.bodyMedium?.copyWith(color: Colors.red), + ), + const SizedBox(height: 16), + if (shouldShowSummary) + _PaymentSummary( + items: summaryItems, + totalText: displayTotalText, + localization: localizationHelper, + ), + AppButton( + minHeight: 60, + borderRadius: BorderRadius.circular(18), + labelText: provider.isValidating + ? localizationHelper.sending + : localizationHelper.pay, + suffixLabelText: displayTotalText, + onPressed: pendingSelection == null || provider.isValidating + ? null + : () => _onPayPressed( + context, + provider, + pendingSelection, + effectivePrimary, + ), ), - AppButton( - minHeight: 60, - borderRadius: BorderRadius.circular(18), - labelText: provider.isValidating - ? localizationHelper.sending - : localizationHelper.pay, - suffixLabelText: displayTotalText, - onPressed: pendingSelection == null || provider.isValidating - ? null - : () => _onPayPressed( - context, - provider, - pendingSelection, - effectivePrimary, - ), - ), - ], + ], + ), ), - ), ], ), ); @@ -756,7 +195,7 @@ class _SelectPaymentMethodContent extends StatelessWidget { leadingWidth: onBackPress != null ? 48 : 0, titleSpacing: onBackPress != null ? 0 : 16, title: Text( - localizationHelper.choosePaymentMethods, + localizationHelper.chooseHowYouWouldLikeToPay, style: textTheme.titleMedium?.copyWith( fontSize: 20, fontWeight: FontWeight.w600, @@ -790,775 +229,17 @@ class _SelectPaymentMethodContent extends StatelessWidget { final methodToShow = await provider.setPaymentMethodWithValidation( pendingSelection, ); - if (!context.mounted) return; - - if (methodToShow == null) { - // Masrivi etc: provider.selected is set, MoosylView will show the method's view. - return; - } - - final publishableApiKey = provider.publishableApiKey; - final transactionId = provider.transactionId; - - if (PaymentMethodTypes.fromString(methodToShow.type) == - PaymentMethodTypes.bankily) { - _showBankilyDialog( - context, - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: methodToShow, - ); - } else if (PaymentMethodTypes.fromString(methodToShow.type) == - PaymentMethodTypes.sedad || - PaymentMethodTypes.fromString(methodToShow.type) == - PaymentMethodTypes.bimBank) { - await _showSedadDialog( - context, - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: methodToShow, - primaryColor: effectivePrimary, - ); - } - } - - Future _showSedadDialog( - BuildContext context, { - required String publishableApiKey, - required String transactionId, - required ConfigurationListDataInner method, - required Color primaryColor, - }) async { - final payProvider = PayProvider( - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: method, - onPaymentSuccess: (payment) async => - await onPaymentSuccess?.call(payment), - ); - final getPaymentMethodsProvider = context.read(); - - // Show loading while fetching payment code. - showDialog( - context: context, - barrierDismissible: false, - builder: (ctx) => const Center( - child: CircularProgressIndicator(), - ), - ); - - // Call pay() to get the payment code before showing the Sedad dialog. - final paymentCode = await payProvider.getPaymentCodeForSedad(); - - if (context.mounted) { - Navigator.of(context).pop(); // Dismiss loading dialog - } - if (!context.mounted) return; - if (paymentCode == null || paymentCode.isEmpty) { - if (context.mounted && payProvider.error != null) { - Feedbacks.flushBar( - context: context, - message: ExceptionMapper.getErrorMessage(payProvider.error, context), - error: true, - ); - } + if (!context.mounted || methodToShow == null) { return; } - showDialog( - context: context, - barrierDismissible: false, - builder: (dialogContext) { - payProvider.onBeforePaymentSuccess = () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }; - return ChangeNotifierProvider.value( - value: payProvider, - child: _DialogWithPayProvider( - payProvider: payProvider, - builder: (paymentRequest) => SedadView( - paymentCodeDisplay: paymentCode, - paymentRequest: paymentRequest, - onClose: () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }, - ), - ), - ); - }, - ).then((_) { - getPaymentMethodsProvider.setPaymentMethod(null); - }); - } - - void _showBankilyDialog( - BuildContext context, { - required String publishableApiKey, - required String transactionId, - required ConfigurationListDataInner method, - }) { - final payProvider = PayProvider( - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: method, - onPaymentSuccess: (payment) async => - await onPaymentSuccess?.call(payment), - ); - final getPaymentMethodsProvider = context.read(); - - showDialog( - context: context, - barrierDismissible: false, - builder: (dialogContext) { - payProvider.onBeforePaymentSuccess = () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }; - return ChangeNotifierProvider.value( - value: payProvider, - child: _DialogWithPayProvider( - payProvider: payProvider, - builder: (_) => BankilyView( - method: method, - publishableApiKey: publishableApiKey, - transactionId: transactionId, - paymentCodeDisplay: payProvider.paymentCode, - onClose: () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }, - ), - ), - ); - }, - ).then((_) { - getPaymentMethodsProvider.setPaymentMethod(null); - }); - } -} - -class _PaymentSummary extends StatelessWidget { - const _PaymentSummary({ - required this.items, - required this.totalText, - required this.localization, - }); - - final List items; - final String totalText; - final MoosylLocalization localization; - - @override - Widget build(BuildContext context) { - final textTheme = Theme.of(context).textTheme; - final labelStyle = textTheme.bodyLarge?.copyWith( - color: Colors.grey.shade700, - ); - final valueStyle = textTheme.bodyLarge?.copyWith( - color: const Color(0xFF111111), - ); - final totalStyle = textTheme.bodyLarge?.copyWith( - color: const Color(0xFF111111), - fontWeight: FontWeight.w600, - ); - - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 12), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ...items.map( - (item) => Padding( - padding: const EdgeInsets.only(bottom: 8), - child: _PaymentSummaryRow( - label: _localizedSummaryLabel(item.label, localization), - value: '${_formatAmount(item.amount)} MRU', - labelStyle: labelStyle, - valueStyle: valueStyle, - ), - ), - ), - if (items.isNotEmpty) - Divider( - height: 18, - thickness: 2, - color: Colors.grey.shade300, - ), - _PaymentSummaryRow( - label: localization.totalAmount, - value: totalText, - labelStyle: totalStyle, - valueStyle: totalStyle, - ), - ], - ), - ); - } -} - -class _PaymentSummaryRow extends StatelessWidget { - const _PaymentSummaryRow({ - required this.label, - required this.value, - required this.labelStyle, - required this.valueStyle, - }); - - final String label; - final String value; - final TextStyle? labelStyle; - final TextStyle? valueStyle; - - @override - Widget build(BuildContext context) { - return Row( - children: [ - Expanded( - child: Text( - label, - style: labelStyle, - ), - ), - const SizedBox(width: 8), - Text( - value, - style: valueStyle, - ), - ], - ); - } -} - -double _calculateSummaryTotal(List items) { - return items.fold( - 0, - (total, item) => total + item.amount, - ); -} - -String _formatAmount(num value) { - return NumberFormat.decimalPattern('fr_FR').format(value.round()); -} - -String _localizedSummaryLabel( - String label, - MoosylLocalization localization, -) { - switch (label) { - case 'amountToPay': - return localization.amountToPay; - case 'tax': - return localization.tax; - case 'total': - case 'totalAmount': - return localization.totalAmount; - default: - return label; - } -} - -Future _showPaymentDialogForMethod( - BuildContext context, { - required String publishableApiKey, - required String transactionId, - required ConfigurationListDataInner method, - required Color primaryColor, - required FutureOr Function(bool isSuccess)? onPaymentSuccess, -}) async { - if (PaymentMethodTypes.fromString(method.type) == - PaymentMethodTypes.bankily) { - _showBankilyPaymentDialog( + await _showPaymentDialogForMethod( context, - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: method, + publishableApiKey: provider.publishableApiKey, + transactionId: provider.transactionId, + method: methodToShow, + primaryColor: effectivePrimary, onPaymentSuccess: onPaymentSuccess, ); - } else if (PaymentMethodTypes.fromString(method.type) == - PaymentMethodTypes.sedad || - PaymentMethodTypes.fromString(method.type) == - PaymentMethodTypes.bimBank) { - await _showSedadPaymentDialog( - context, - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: method, - primaryColor: primaryColor, - onPaymentSuccess: onPaymentSuccess, - ); - } -} - -Future _showSedadPaymentDialog( - BuildContext context, { - required String publishableApiKey, - required String transactionId, - required ConfigurationListDataInner method, - required Color primaryColor, - required FutureOr Function(bool isSuccess)? onPaymentSuccess, -}) async { - final payProvider = PayProvider( - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: method, - onPaymentSuccess: (payment) async => await onPaymentSuccess?.call(payment), - ); - final getPaymentMethodsProvider = context.read(); - - showDialog( - context: context, - barrierDismissible: false, - builder: (ctx) => const Center( - child: CircularProgressIndicator(), - ), - ); - - final paymentCode = await payProvider.getPaymentCodeForSedad(); - - if (context.mounted) { - Navigator.of(context).pop(); - } - if (!context.mounted) return; - if (paymentCode == null || paymentCode.isEmpty) { - if (context.mounted && payProvider.error != null) { - Feedbacks.flushBar( - context: context, - message: ExceptionMapper.getErrorMessage(payProvider.error, context), - error: true, - ); - } - return; - } - - showDialog( - context: context, - barrierDismissible: false, - builder: (dialogContext) { - payProvider.onBeforePaymentSuccess = () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }; - return ChangeNotifierProvider.value( - value: payProvider, - child: _DialogWithPayProvider( - payProvider: payProvider, - builder: (paymentRequest) => SedadView( - paymentCodeDisplay: paymentCode, - paymentRequest: paymentRequest, - onClose: () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }, - ), - ), - ); - }, - ).then((_) { - getPaymentMethodsProvider.setPaymentMethod(null); - }); -} - -void _showBankilyPaymentDialog( - BuildContext context, { - required String publishableApiKey, - required String transactionId, - required ConfigurationListDataInner method, - required FutureOr Function(bool isSuccess)? onPaymentSuccess, -}) { - final payProvider = PayProvider( - publishableApiKey: publishableApiKey, - transactionId: transactionId, - method: method, - onPaymentSuccess: (payment) async => await onPaymentSuccess?.call(payment), - ); - final getPaymentMethodsProvider = context.read(); - - showDialog( - context: context, - barrierDismissible: false, - builder: (dialogContext) { - payProvider.onBeforePaymentSuccess = () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }; - return ChangeNotifierProvider.value( - value: payProvider, - child: _DialogWithPayProvider( - payProvider: payProvider, - builder: (_) => BankilyView( - method: method, - publishableApiKey: publishableApiKey, - transactionId: transactionId, - paymentCodeDisplay: payProvider.paymentCode, - onClose: () { - Navigator.of(dialogContext).pop(); - getPaymentMethodsProvider.setPaymentMethod(null); - }, - ), - ), - ); - }, - ).then((_) { - getPaymentMethodsProvider.setPaymentMethod(null); - }); -} - -/// Shows loading until [PayProvider] has payment request, then builds content. -class _DialogWithPayProvider extends StatelessWidget { - const _DialogWithPayProvider({ - required this.payProvider, - required this.builder, - }); - - final PayProvider payProvider; - final Widget Function(dynamic paymentRequest) builder; - - @override - Widget build(BuildContext context) { - return Builder( - builder: (context) { - final provider = context.watch(); - - if (provider.paymentRequest == null) { - if (provider.isLoading) { - return Dialog( - child: Padding( - padding: const EdgeInsets.all(24), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const CircularProgressIndicator(), - const SizedBox(height: 16), - Text(MoosylLocalization.of(context)?.sending ?? ''), - ], - ), - ), - ); - } - if (provider.error != null) { - return Dialog( - child: Padding( - padding: const EdgeInsets.all(24), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(provider.error.toString()), - const SizedBox(height: 16), - TextButton( - onPressed: provider.getPaymentRequest, - child: Text( - MoosylLocalization.of(context)?.retry ?? 'Retry'), - ), - ], - ), - ), - ); - } - } - - return provider.paymentRequest != null - ? builder(provider.paymentRequest!) - : const SizedBox.shrink(); - }, - ); - } -} - -class _PaymentMethodsLoadingSkeleton extends StatefulWidget { - const _PaymentMethodsLoadingSkeleton({required this.isRTL}); - - final bool isRTL; - - @override - State<_PaymentMethodsLoadingSkeleton> createState() => - _PaymentMethodsLoadingSkeletonState(); -} - -class _PaymentMethodsLoadingSkeletonState - extends State<_PaymentMethodsLoadingSkeleton> - with SingleTickerProviderStateMixin { - late final AnimationController _controller; - late final Animation _shimmerAnimation; - - @override - void initState() { - super.initState(); - _controller = AnimationController( - vsync: this, - duration: const Duration(milliseconds: 1100), - )..repeat(); - _shimmerAnimation = Tween(begin: -80, end: 80).animate( - CurvedAnimation(parent: _controller, curve: Curves.linear), - ); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Directionality( - textDirection: widget.isRTL ? TextDirection.rtl : TextDirection.ltr, - child: Column( - mainAxisSize: MainAxisSize.min, - children: List.generate( - 3, - (index) => _PaymentMethodsLoadingSkeletonRow( - shimmerAnimation: _shimmerAnimation, - ), - ), - ), - ); - } -} - -class _PaymentMethodsLoadingSkeletonRow extends StatelessWidget { - const _PaymentMethodsLoadingSkeletonRow({ - required this.shimmerAnimation, - }); - - final Animation shimmerAnimation; - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 4), - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 12), - child: Row( - children: [ - _LoadingShimmerBlock( - width: 46, - height: 46, - borderRadius: BorderRadius.circular(8), - shimmerAnimation: shimmerAnimation, - ), - const SizedBox(width: 12), - Expanded( - child: Align( - alignment: AlignmentDirectional.centerStart, - child: FractionallySizedBox( - widthFactor: 0.68, - alignment: AlignmentDirectional.centerStart, - child: _LoadingShimmerBlock( - height: 15, - borderRadius: BorderRadius.circular(8), - shimmerAnimation: shimmerAnimation, - ), - ), - ), - ), - const SizedBox(width: 12), - _LoadingShimmerBlock( - width: 18, - height: 18, - borderRadius: BorderRadius.circular(9), - shimmerAnimation: shimmerAnimation, - ), - ], - ), - ), - ); - } -} - -class _LoadingShimmerBlock extends StatelessWidget { - const _LoadingShimmerBlock({ - required this.height, - required this.borderRadius, - required this.shimmerAnimation, - this.width, - }); - - final double? width; - final double height; - final BorderRadius borderRadius; - final Animation shimmerAnimation; - - @override - Widget build(BuildContext context) { - return ClipRRect( - borderRadius: borderRadius, - child: ColoredBox( - color: const Color(0xFFECEFF1), - child: SizedBox( - width: width, - height: height, - child: AnimatedBuilder( - animation: shimmerAnimation, - builder: (context, child) { - return Transform.translate( - offset: Offset(shimmerAnimation.value, 0), - child: child, - ); - }, - child: FractionallySizedBox( - widthFactor: 0.55, - alignment: Alignment.centerLeft, - child: DecoratedBox( - decoration: BoxDecoration( - color: Color.fromRGBO(255, 255, 255, 0.55), - ), - ), - ), - ), - ), - ), - ); - } -} - -class _MethodRow extends StatelessWidget { - const _MethodRow({ - required this.method, - required this.isSelected, - required this.onTap, - this.primaryColor, - }); - - final ConfigurationListDataInner method; - final bool isSelected; - - final VoidCallback onTap; - final Color? primaryColor; - - @override - Widget build(BuildContext context) { - final textTheme = Theme.of(context).textTheme; - final effectivePrimary = - primaryColor ?? Theme.of(context).colorScheme.primary; - - return Padding( - padding: const EdgeInsets.symmetric(vertical: 6), - child: TweenAnimationBuilder( - tween: Tween(end: isSelected ? 1 : 0), - duration: const Duration(milliseconds: 180), - curve: Curves.easeOutCubic, - builder: (context, value, _) { - return Stack( - clipBehavior: Clip.none, - children: [ - Positioned.fill( - top: -2, - right: -2, - bottom: -2, - left: -2, - child: IgnorePointer( - child: Transform.scale( - scale: 0.98 + (0.02 * value), - child: Opacity( - opacity: value, - child: DecoratedBox( - decoration: BoxDecoration( - border: Border.all( - color: effectivePrimary, - width: 2, - ), - borderRadius: BorderRadius.circular(18), - ), - ), - ), - ), - ), - ), - Transform.scale( - scale: 1 - (0.005 * value), - child: Material( - color: Colors.white, - borderRadius: BorderRadius.circular(16), - child: InkWell( - splashColor: Colors.transparent, - onTap: onTap, - borderRadius: BorderRadius.circular(16), - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 12, - ), - decoration: BoxDecoration( - border: Border.all( - color: const Color(0xFFEDF3FF), - ), - borderRadius: BorderRadius.circular(16), - ), - child: Row( - children: [ - Container( - width: 48, - height: 48, - decoration: BoxDecoration( - color: const Color(0xFFF7F8FB), - border: Border.all( - color: const Color(0xFFEDF3FF), - ), - borderRadius: BorderRadius.circular(6), - ), - clipBehavior: Clip.antiAlias, - child: Center( - child: PaymentMethodTypes.fromString(method.type) - .icon - .apply(size: 40), - ), - ), - const SizedBox(width: 10), - Expanded( - child: Align( - alignment: AlignmentDirectional.centerStart, - child: Text( - PaymentMethodTypes.fromString(method.type) - .title(context), - style: textTheme.titleMedium?.copyWith( - color: const Color(0xFF111111), - fontSize: 17, - fontWeight: FontWeight.w600, - ), - ), - ), - ), - const SizedBox(width: 12), - Container( - width: 22, - height: 22, - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all( - color: effectivePrimary, - width: 1.5, - ), - ), - child: Center( - child: Transform.scale( - scale: 0.4 + (0.6 * value), - child: Opacity( - opacity: value, - child: Container( - width: 12, - height: 12, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: effectivePrimary, - ), - ), - ), - ), - ), - ), - ], - ), - ), - ), - ), - ), - ], - ); - }, - ), - ); } } diff --git a/lib/src/pages/payment_summary.dart b/lib/src/pages/payment_summary.dart new file mode 100644 index 0000000..93db367 --- /dev/null +++ b/lib/src/pages/payment_summary.dart @@ -0,0 +1,116 @@ +part of 'payment_methods_view.dart'; + +class _PaymentSummary extends StatelessWidget { + const _PaymentSummary({ + required this.items, + required this.totalText, + required this.localization, + }); + + final List items; + final String totalText; + final MoosylLocalization localization; + + @override + Widget build(BuildContext context) { + final textTheme = Theme.of(context).textTheme; + final labelStyle = textTheme.bodyLarge?.copyWith( + color: Colors.grey.shade700, + ); + final valueStyle = textTheme.bodyLarge?.copyWith( + color: const Color(0xFF111111), + ); + final totalStyle = textTheme.bodyLarge?.copyWith( + color: const Color(0xFF111111), + fontWeight: FontWeight.w600, + ); + + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 12), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ...items.map( + (item) => Padding( + padding: const EdgeInsets.only(bottom: 8), + child: _PaymentSummaryRow( + label: _localizedSummaryLabel(item.label, localization), + value: '${_formatAmount(item.amount)} MRU', + labelStyle: labelStyle, + valueStyle: valueStyle, + ), + ), + ), + if (items.isNotEmpty) + Divider( + height: 18, + thickness: 2, + color: Colors.grey.shade300, + ), + _PaymentSummaryRow( + label: localization.totalAmount, + value: totalText, + labelStyle: totalStyle, + valueStyle: totalStyle, + ), + ], + ), + ); + } +} + +class _PaymentSummaryRow extends StatelessWidget { + const _PaymentSummaryRow({ + required this.label, + required this.value, + required this.labelStyle, + required this.valueStyle, + }); + + final String label; + final String value; + final TextStyle? labelStyle; + final TextStyle? valueStyle; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: Text(label, style: labelStyle), + ), + const SizedBox(width: 8), + Text(value, style: valueStyle), + ], + ); + } +} + +double _calculateSummaryTotal(List items) { + return items.fold( + 0, + (total, item) => total + item.amount, + ); +} + +String _formatAmount(num value) { + return NumberFormat.decimalPattern('fr_FR').format(value.round()); +} + +String _localizedSummaryLabel( + String label, + MoosylLocalization localization, +) { + switch (label) { + case 'amountToPay': + return localization.amountToPay; + case 'tax': + return localization.tax; + case 'total': + case 'totalAmount': + return localization.totalAmount; + default: + return label; + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 5b12951..3d3714e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: intl: ^0.20.2 http: ^1.2.2 provider: ^6.1.2 + shimmer: ^3.0.0 modal_bottom_sheet: ^3.0.0 file_picker: ^8.1.2 mime: ^2.0.0 From 3478d0c94f86f1bc1abb5f2c4f3bd59832110c2d Mon Sep 17 00:00:00 2001 From: eminos-sd Date: Mon, 11 May 2026 17:51:18 +0000 Subject: [PATCH 8/8] Update README to reflect changes in payment flow, including localization registration and new options for `MoosylFlutter.show()`. Introduce `EmbeddedPaymentScreen` and custom payment method UI examples for enhanced integration. Improve clarity on parameters and options for payment methods. --- README.md | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 169 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index bbdc80e..3fd906a 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ curl -X POST https://api.moosyl.com/payment-request \ --- -### Step 2: Display the Payment View +### Step 2: Register Localization Before displaying the payment UI, make sure your `MaterialApp` registers the Moosyl localization delegates and supported locales: @@ -70,19 +70,26 @@ Before displaying the payment UI, make sure your `MaterialApp` registers the Moo return MaterialApp( localizationsDelegates: MoosylLocalization.localizationsDelegates, supportedLocales: MoosylLocalization.supportedLocales, + locale: const Locale('en'), // Optional: use the device locale by default. home: const PaymentScreen(), ); ``` -Use `MoosylFlutter.show()` to open the payment flow. It returns `isSuccess?` — non-null on success, `null` when the user closes without paying. +--- + +### Step 3: Open the Full Payment View + +Use `MoosylFlutter.show()` when you want Moosyl to own the checkout payment UI. It returns `bool?`: a non-null value when the payment flow finishes, or `null` when the user closes the view without completing payment. -**Note:** `isSuccess` provides status of the payment — `status` — for use in your success handling. +Set `isFullPage` to `true` for a pushed route or `false` for a bottom sheet. ```dart import 'package:flutter/material.dart'; import 'package:moosyl_flutter/moosyl.dart'; class PaymentScreen extends StatelessWidget { + const PaymentScreen({super.key}); + @override Widget build(BuildContext context) { return ElevatedButton( @@ -91,11 +98,17 @@ class PaymentScreen extends StatelessWidget { context, publishableApiKey: 'YOUR_PUBLISHABLE_API_KEY', transactionId: 'TRANSACTION_ID', // From your backend - isFullPage: true, // false for bottom sheet + isFullPage: true, // false for bottom sheet + items: const [ + MoosylPaymentSummaryItem(amount: 5000, label: 'amountToPay'), + MoosylPaymentSummaryItem(amount: 0, label: 'tax'), + ], + isMasriviInBottomSheet: false, + masriviPhoneNumber: '+22212345678', ); + if (isSuccess != null) { - // status - print('Payment was successful! isSuccess=$isSuccess '); + print('Payment finished. isSuccess=$isSuccess'); } }, child: const Text('Pay'), @@ -104,7 +117,156 @@ class PaymentScreen extends StatelessWidget { } ``` -**Parameters:** `publishableApiKey`, `transactionId`, `isFullPage` (true = full page, false = bottom sheet), `amountToPay`, `tax`. +#### `MoosylFlutter.show()` Options + +| Option | Type | Required | Description | +| --- | --- | --- | --- | +| `publishableApiKey` | `String` | Yes | Your Moosyl publishable API key. | +| `transactionId` | `String` | Yes | The transaction ID returned by your backend payment request. | +| `items` | `List?` | No | Summary rows shown in the payment view. When supplied, their total is validated against the payment request amount. Known localized labels include `amountToPay`, `tax`, `total`, and `totalAmount`; custom labels are shown as provided. | +| `isFullPage` | `bool` | No | Defaults to `true`. Use `false` to show the flow in a bottom sheet. | +| `isMasriviInBottomSheet` | `bool` | No | Controls whether Masrivi opens as bottom-sheet content inside the payment flow. | +| `masriviPhoneNumber` | `String?` | No | Optional phone number used to prefill the Masrivi payment page. | + +--- + +## Embedded Payment Methods + +Use `MoosylPaymentMethods` when your app owns the checkout screen and you only want Moosyl to load, display, select, and continue with payment methods. + +```dart +class EmbeddedPaymentScreen extends StatefulWidget { + const EmbeddedPaymentScreen({super.key}); + + @override + State createState() => _EmbeddedPaymentScreenState(); +} + +class _EmbeddedPaymentScreenState extends State { + final _controller = MoosylPaymentMethodsController(); + ConfigurationListDataInner? _selectedMethod; + bool _continueLoading = false; + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final selectedTitle = _selectedMethod == null + ? 'platform' + : PaymentMethodTypes.fromString(_selectedMethod!.type).title(context); + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + MoosylPaymentMethods( + controller: _controller, + publishableApiKey: 'YOUR_PUBLISHABLE_API_KEY', + transactionId: 'TRANSACTION_ID', + selectedMethodId: _selectedMethod?.id, + onSelectMethod: (method) { + setState(() => _selectedMethod = method); + }, + onContinueLoadingChange: (loading) { + setState(() => _continueLoading = loading); + }, + onPaymentSuccess: (isSuccess) async { + print('Payment finished. isSuccess=$isSuccess'); + }, + primaryColor: const Color(0xFFF55E1E), + ), + const SizedBox(height: 20), + FilledButton( + onPressed: _selectedMethod == null || _continueLoading + ? null + : _controller.continuePayment, + child: Text( + _continueLoading ? 'Loading...' : 'Continue with $selectedTitle', + ), + ), + ], + ); + } +} +``` + +--- + +## Custom Payment Method UI + +Pass `renderMethod` to draw each payment method row with your own widgets. Call `props.onSelect()` from your custom row so Moosyl can track the selected method. + +```dart +MoosylPaymentMethods( + controller: _controller, + publishableApiKey: 'YOUR_PUBLISHABLE_API_KEY', + transactionId: 'TRANSACTION_ID', + selectedMethodId: selectedMethod?.id, + onSelectMethod: (method) { + setState(() => selectedMethod = method); + }, + onContinueLoadingChange: (loading) { + setState(() => continueLoading = loading); + }, + onPaymentSuccess: (isSuccess) async { + print('Payment finished. isSuccess=$isSuccess'); + }, + primaryColor: const Color(0xFFF55E1E), + renderMethod: (context, props) { + return ListTile( + onTap: props.onSelect, + leading: props.type.icon.apply(size: 36), + title: Text(props.title), + subtitle: Text(props.method.type), + trailing: props.isSelected ? const Icon(Icons.check_circle) : null, + ); + }, +) +``` + +`MoosylPaymentMethodRenderProps` gives your row everything it needs: + +| Property | Description | +| --- | --- | +| `method` | Raw `ConfigurationListDataInner` payment method data from Moosyl. | +| `type` | Parsed `PaymentMethodTypes` value. | +| `title` | Localized payment method title. | +| `isSelected` | Whether this row is currently selected. | +| `selectedMethodId` | Currently selected method ID, if any. | +| `isRTL` | Whether the surrounding layout direction is RTL. | +| `onSelect` | Callback your custom UI should call when the row is selected. | + +--- + +## `MoosylPaymentMethods` Options + +| Option | Type | Description | +| --- | --- | --- | +| `publishableApiKey` | `String` | Required. Your Moosyl publishable API key. | +| `transactionId` | `String?` | Transaction ID used by `controller.continuePayment()`. | +| `amountToPay` | `double` | Amount used for validation when continuing. Defaults to `0.0`. | +| `tax` | `double` | Tax amount used with `amountToPay` when `totalAmount` is not supplied. Defaults to `0.0`. | +| `totalAmount` | `double?` | Total expected amount. Defaults to `amountToPay + tax`. | +| `selectedMethodId` | `String?` | Controlled selected method ID. | +| `onSelectMethod` | `ValueChanged?` | Called whenever a method is selected. | +| `onPaymentSuccess` | `FutureOr Function(bool)?` | Called when payment succeeds or reports a final success status. | +| `onPaymentError` | `ValueChanged?` | Called when loading or continuing payment fails. | +| `onContinueLoadingChange` | `ValueChanged?` | Called when `continuePayment()` starts and finishes. | +| `controller` | `MoosylPaymentMethodsController?` | Lets your screen call `continuePayment()` and read `selectedMethod`. Dispose it from your state object. | +| `primaryColor` | `Color?` | Accent color for default rows and dialogs. Defaults to the theme primary color. | +| `renderMethod` | `MoosylPaymentMethodBuilder?` | Custom builder for each payment method row. | +| `loadingComponent` | `Widget?` | Custom widget shown while payment methods are loading. | +| `loadingBuilder` | `MoosylPaymentMethodsLoadingBuilder?` | Builder for custom loading content with locale, color, and RTL props. | +| `showDefaultTitle` | `bool` | Whether the default UI includes its section title. Defaults to `true`. | +| `isMasriviInBottomSheet` | `bool` | Whether Masrivi opens in a bottom sheet from custom platform UIs. Defaults to `true`. | +| `masriviPresentation` | `MasriviWebViewPresentation` | Presentation used when `isMasriviInBottomSheet` is `false`. Defaults to `MasriviWebViewPresentation.fullPage`. | +| `masriviPhoneNumber` | `String?` | Optional phone number used to prefill Masrivi. | +| `masriviBottomSheetHeight` | `double` | Height factor for Masrivi bottom-sheet content. Defaults to `0.88`. | + +For a complete working demo with the full payment view, embedded platforms, and custom payment method rows, see [`example/lib/main.dart`](example/lib/main.dart). For detailed API documentation, visit the [Moosyl Flutter API Documentation](https://pub.dev/documentation/moosyl_flutter/latest/moosyl_flutter/moosyl_flutter-library.html).