From 2fd91839175050f6b82706573bca60676e127190 Mon Sep 17 00:00:00 2001 From: Jonas Bark Date: Tue, 29 Aug 2023 13:06:59 +0200 Subject: [PATCH] fix deferred configuration, implement missing methods on iOS --- .../payment_sheet_deffered_screen.dart | 2 +- .../stripe_ios/ios/Classes/StripePlugin.swift | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/example/lib/screens/payment_sheet/payment_sheet_deffered_screen.dart b/example/lib/screens/payment_sheet/payment_sheet_deffered_screen.dart index 18d13bbed..f40bcaf18 100644 --- a/example/lib/screens/payment_sheet/payment_sheet_deffered_screen.dart +++ b/example/lib/screens/payment_sheet/payment_sheet_deffered_screen.dart @@ -96,7 +96,7 @@ class _PaymentSheetScreenState extends State { merchantDisplayName: 'Flutter Stripe Store Demo', intentConfiguration: IntentConfiguration( mode: IntentMode( - currencyCode: 'EUR', + currencyCode: 'USD', amount: 1500, ), confirmHandler: (method, saveFuture) { diff --git a/packages/stripe_ios/ios/Classes/StripePlugin.swift b/packages/stripe_ios/ios/Classes/StripePlugin.swift index bb839efcc..b81e1f28d 100644 --- a/packages/stripe_ios/ios/Classes/StripePlugin.swift +++ b/packages/stripe_ios/ios/Classes/StripePlugin.swift @@ -111,6 +111,12 @@ class StripePlugin: StripeSdk, FlutterPlugin, ViewManagerDelegate { return confirmPlatformPay(call, result: result) case "configureOrderTracking": return configureOrderTracking(call, result: result) + case "addListener": + return addListener(call, result: result) + case "removeListener": + return removeListener(call, result: result) + case "intentCreationCallback": + return intentCreationCallback(call, result: result) default: result(FlutterMethodNotImplemented) } @@ -526,6 +532,25 @@ extension StripePlugin { ) } + func addListener(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + startObserving() + } + + func removeListener(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + stopObserving() + } + + func intentCreationCallback(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + guard let arguments = call.arguments as? FlutterMap, + let params = arguments["params"] as? NSDictionary + else { + result(FlutterError.invalidParams) + return + } + + intentCreationCallback(result: params, resolver: resolver(for: result), rejecter: rejecter(for: result)) + } + func dangerouslyUpdateCardDetails(_ call: FlutterMethodCall, result: @escaping FlutterResult) { guard let arguments = call.arguments as? FlutterMap, let params = arguments["params"] as? NSDictionary else {