From c866ad46a4cc30ddfac8b7871f924ffdb3a576d4 Mon Sep 17 00:00:00 2001 From: Krisjanis Gaidis Date: Thu, 23 May 2024 15:21:41 -0700 Subject: [PATCH] Instant Debits: added link_context to some payment sheet logs. --- .../PaymentSheetFlowController.swift | 16 ++++++++++++++++ .../STPAnalyticsClient+PaymentSheet.swift | 15 +++++++++++++-- .../PaymentSheetViewController.swift | 6 +++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/PaymentSheetFlowController.swift b/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/PaymentSheetFlowController.swift index 17b98a87d9c..c90d34ae56b 100644 --- a/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/PaymentSheetFlowController.swift +++ b/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/PaymentSheetFlowController.swift @@ -48,6 +48,22 @@ extension PaymentSheet { return paymentMethod } } + + // Both "Link" and "Instant Debits" use the same payment method type + // of "link." To differentiate between the two in metrics, we sometimes + // need a "link_context." + var linkContext: String? { + if case .link = self { + return "wallet" + } else if + case .new(let confirmParams) = self, + confirmParams.instantDebitsLinkedBank != nil + { + return "instant_debits" + } else { + return nil + } + } } /// A class that presents the individual steps of a payment flow diff --git a/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/STPAnalyticsClient+PaymentSheet.swift b/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/STPAnalyticsClient+PaymentSheet.swift index d48ee074f02..7af6a05b758 100644 --- a/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/STPAnalyticsClient+PaymentSheet.swift +++ b/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/STPAnalyticsClient+PaymentSheet.swift @@ -36,6 +36,7 @@ extension STPAnalyticsClient { deferredIntentConfirmationType: DeferredIntentConfirmationType?, paymentMethodTypeAnalyticsValue: String? = nil, error: Error? = nil, + linkContext: String? = nil, apiClient: STPAPIClient ) { var success = false @@ -64,6 +65,7 @@ extension STPAnalyticsClient { error: error, deferredIntentConfirmationType: deferredIntentConfirmationType, paymentMethodTypeAnalyticsValue: paymentMethodTypeAnalyticsValue, + linkContext: linkContext, apiClient: apiClient ) } @@ -143,9 +145,16 @@ extension STPAnalyticsClient { } } - func logPaymentSheetConfirmButtonTapped(paymentMethodTypeIdentifier: String) { + func logPaymentSheetConfirmButtonTapped( + paymentMethodTypeIdentifier: String, + linkContext: String? = nil + ) { let duration = AnalyticsHelper.shared.getDuration(for: .formShown) - logPaymentSheetEvent(event: .paymentSheetConfirmButtonTapped, duration: duration, paymentMethodTypeAnalyticsValue: paymentMethodTypeIdentifier) + logPaymentSheetEvent( + event: .paymentSheetConfirmButtonTapped, + duration: duration, paymentMethodTypeAnalyticsValue: paymentMethodTypeIdentifier, + linkContext: linkContext + ) } enum DeferredIntentConfirmationType: String { @@ -300,6 +309,7 @@ extension STPAnalyticsClient { error: Error? = nil, deferredIntentConfirmationType: DeferredIntentConfirmationType? = nil, paymentMethodTypeAnalyticsValue: String? = nil, + linkContext: String? = nil, params: [String: Any] = [:], apiClient: STPAPIClient = .shared ) { @@ -316,6 +326,7 @@ extension STPAnalyticsClient { additionalParams["is_decoupled"] = intentConfig != nil additionalParams["deferred_intent_confirmation_type"] = deferredIntentConfirmationType?.rawValue additionalParams["selected_lpm"] = paymentMethodTypeAnalyticsValue + additionalParams["link_context"] = linkContext if let error { additionalParams.mergeAssertingOnOverwrites(error.serializeForV1Analytics()) diff --git a/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/ViewControllers/PaymentSheetViewController.swift b/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/ViewControllers/PaymentSheetViewController.swift index ba58e8af3ce..9fc5a17ab18 100644 --- a/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/ViewControllers/PaymentSheetViewController.swift +++ b/StripePaymentSheet/StripePaymentSheet/Source/PaymentSheet/ViewControllers/PaymentSheetViewController.swift @@ -450,7 +450,10 @@ class PaymentSheetViewController: UIViewController, PaymentSheetViewControllerPr } paymentOption = selectedPaymentOption } - STPAnalyticsClient.sharedClient.logPaymentSheetConfirmButtonTapped(paymentMethodTypeIdentifier: paymentOption.paymentMethodTypeAnalyticsValue) + STPAnalyticsClient.sharedClient.logPaymentSheetConfirmButtonTapped( + paymentMethodTypeIdentifier: paymentOption.paymentMethodTypeAnalyticsValue, + linkContext: paymentOption.linkContext + ) pay(with: paymentOption, animateBuyButton: true) } @@ -481,6 +484,7 @@ class PaymentSheetViewController: UIViewController, PaymentSheetViewControllerPr deferredIntentConfirmationType: deferredIntentConfirmationType, paymentMethodTypeAnalyticsValue: paymentOption.paymentMethodTypeAnalyticsValue, error: result.error, + linkContext: paymentOption.linkContext, apiClient: self.configuration.apiClient )