Skip to content

Commit

Permalink
Instant Debits: added link_context to some payment sheet logs.
Browse files Browse the repository at this point in the history
  • Loading branch information
kgaidis-stripe committed May 24, 2024
1 parent 669393c commit c866ad4
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ extension STPAnalyticsClient {
deferredIntentConfirmationType: DeferredIntentConfirmationType?,
paymentMethodTypeAnalyticsValue: String? = nil,
error: Error? = nil,
linkContext: String? = nil,
apiClient: STPAPIClient
) {
var success = false
Expand Down Expand Up @@ -64,6 +65,7 @@ extension STPAnalyticsClient {
error: error,
deferredIntentConfirmationType: deferredIntentConfirmationType,
paymentMethodTypeAnalyticsValue: paymentMethodTypeAnalyticsValue,
linkContext: linkContext,
apiClient: apiClient
)
}
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -300,6 +309,7 @@ extension STPAnalyticsClient {
error: Error? = nil,
deferredIntentConfirmationType: DeferredIntentConfirmationType? = nil,
paymentMethodTypeAnalyticsValue: String? = nil,
linkContext: String? = nil,
params: [String: Any] = [:],
apiClient: STPAPIClient = .shared
) {
Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down Expand Up @@ -481,6 +484,7 @@ class PaymentSheetViewController: UIViewController, PaymentSheetViewControllerPr
deferredIntentConfirmationType: deferredIntentConfirmationType,
paymentMethodTypeAnalyticsValue: paymentOption.paymentMethodTypeAnalyticsValue,
error: result.error,
linkContext: paymentOption.linkContext,
apiClient: self.configuration.apiClient
)

Expand Down

0 comments on commit c866ad4

Please sign in to comment.