Skip to content

Commit 3cde4ba

Browse files
committed
Track third party error event for Google Pay
COAND-1009
1 parent 861c680 commit 3cde4ba

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

googlepay/src/main/java/com/adyen/checkout/googlepay/internal/ui/DefaultGooglePayDelegate.kt

+13
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.adyen.checkout.components.core.PaymentMethodTypes
1919
import com.adyen.checkout.components.core.internal.PaymentComponentEvent
2020
import com.adyen.checkout.components.core.internal.PaymentObserverRepository
2121
import com.adyen.checkout.components.core.internal.analytics.AnalyticsManager
22+
import com.adyen.checkout.components.core.internal.analytics.ErrorEvent
2223
import com.adyen.checkout.components.core.internal.analytics.GenericEvents
2324
import com.adyen.checkout.components.core.internal.util.bufferedChannel
2425
import com.adyen.checkout.core.AdyenLogLevel
@@ -149,6 +150,7 @@ internal class DefaultGooglePayDelegate(
149150
when (resultCode) {
150151
Activity.RESULT_OK -> {
151152
if (data == null) {
153+
trackThirdPartyErrorEvent()
152154
exceptionChannel.trySend(ComponentException("Result data is null"))
153155
return
154156
}
@@ -157,10 +159,13 @@ internal class DefaultGooglePayDelegate(
157159
}
158160

159161
Activity.RESULT_CANCELED -> {
162+
trackThirdPartyErrorEvent()
160163
exceptionChannel.trySend(ComponentException("Payment canceled."))
161164
}
162165

163166
AutoResolveHelper.RESULT_ERROR -> {
167+
trackThirdPartyErrorEvent()
168+
164169
val status = AutoResolveHelper.getStatusFromIntent(data)
165170
val statusMessage: String = status?.let { ": ${it.statusMessage}" }.orEmpty()
166171
exceptionChannel.trySend(ComponentException("GooglePay returned an error$statusMessage"))
@@ -170,6 +175,14 @@ internal class DefaultGooglePayDelegate(
170175
}
171176
}
172177

178+
private fun trackThirdPartyErrorEvent() {
179+
val event = GenericEvents.error(
180+
component = getPaymentMethodType(),
181+
event = ErrorEvent.THIRD_PARTY,
182+
)
183+
analyticsManager.trackEvent(event)
184+
}
185+
173186
override fun getGooglePayButtonParameters(): GooglePayButtonParameters {
174187
val allowedPaymentMethodsList = GooglePayUtils.getAllowedPaymentMethods(componentParams)
175188
val allowedPaymentMethods = ModelUtils.serializeOptList(

googlepay/src/test/java/com/adyen/checkout/googlepay/internal/ui/DefaultGooglePayDelegateTest.kt

+24
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88

99
package com.adyen.checkout.googlepay.internal.ui
1010

11+
import android.app.Activity
1112
import app.cash.turbine.test
1213
import com.adyen.checkout.components.core.Amount
1314
import com.adyen.checkout.components.core.CheckoutConfiguration
1415
import com.adyen.checkout.components.core.Configuration
1516
import com.adyen.checkout.components.core.OrderRequest
1617
import com.adyen.checkout.components.core.PaymentMethod
1718
import com.adyen.checkout.components.core.internal.PaymentObserverRepository
19+
import com.adyen.checkout.components.core.internal.analytics.ErrorEvent
1820
import com.adyen.checkout.components.core.internal.analytics.GenericEvents
1921
import com.adyen.checkout.components.core.internal.analytics.TestAnalyticsManager
2022
import com.adyen.checkout.components.core.internal.ui.model.CommonComponentParamsMapper
@@ -185,6 +187,28 @@ internal class DefaultGooglePayDelegateTest {
185187

186188
analyticsManager.assertIsCleared()
187189
}
190+
191+
@Test
192+
fun `when activity result is OK and data is null, then error event is tracked`() {
193+
delegate.handleActivityResult(Activity.RESULT_OK, data = null)
194+
195+
val expectedEvent = GenericEvents.error(
196+
component = TEST_PAYMENT_METHOD_TYPE,
197+
event = ErrorEvent.THIRD_PARTY,
198+
)
199+
analyticsManager.assertLastEventEquals(expectedEvent)
200+
}
201+
202+
@Test
203+
fun `when activity result is CANCELLED, then error event is tracked`() {
204+
delegate.handleActivityResult(Activity.RESULT_CANCELED, data = null)
205+
206+
val expectedEvent = GenericEvents.error(
207+
component = TEST_PAYMENT_METHOD_TYPE,
208+
event = ErrorEvent.THIRD_PARTY,
209+
)
210+
analyticsManager.assertLastEventEquals(expectedEvent)
211+
}
188212
}
189213

190214
private fun createCheckoutConfiguration(

0 commit comments

Comments
 (0)