Skip to content

Conversation

@toluo-stripe
Copy link
Contributor

@toluo-stripe toluo-stripe commented Nov 24, 2025

Summary

Introduce Intent Confirmation Challenge Analytics Events

Motivation

https://docs.google.com/document/d/1VDwjpPnKxxZo9liOC4k9ccrO-fLgFaplNAuplYm2HDY/edit?pli=1&tab=t.s80nzngmb0s6#heading=h.phnr7hdfqecy

We'd have to rely on the stripe js analytics events to know if the user canceled because transforms that action to a generic error on cancellation

Testing

  • Added tests
  • Modified tests
  • Manually verified

Changelog

@github-actions
Copy link
Contributor

github-actions bot commented Nov 24, 2025

Diffuse output:

OLD: paymentsheet-example-release-master.apk (signature: V1, V2)
NEW: paymentsheet-example-release-pr.apk (signature: V1, V2)

          │            compressed            │          uncompressed          
          ├───────────┬───────────┬──────────┼──────────┬──────────┬──────────
 APK      │ old       │ new       │ diff     │ old      │ new      │ diff     
──────────┼───────────┼───────────┼──────────┼──────────┼──────────┼──────────
      dex │   4.6 MiB │   4.6 MiB │ +1.3 KiB │ 10.2 MiB │ 10.2 MiB │ -6.9 KiB 
     arsc │   2.7 MiB │   2.7 MiB │      0 B │  2.7 MiB │  2.7 MiB │      0 B 
 manifest │   5.5 KiB │   5.5 KiB │      0 B │ 29.2 KiB │ 29.2 KiB │      0 B 
      res │ 928.5 KiB │ 928.5 KiB │      0 B │  1.5 MiB │  1.5 MiB │      0 B 
   native │ 949.9 KiB │ 949.9 KiB │      0 B │  2.5 MiB │  2.5 MiB │      0 B 
    asset │    25 KiB │    25 KiB │    -22 B │ 45.2 KiB │ 45.2 KiB │    -21 B 
    other │ 193.9 KiB │ 193.9 KiB │     +4 B │  366 KiB │  366 KiB │      0 B 
──────────┼───────────┼───────────┼──────────┼──────────┼──────────┼──────────
    total │   9.4 MiB │   9.4 MiB │ +1.3 KiB │ 17.4 MiB │ 17.4 MiB │ -6.9 KiB 

         │         raw          │               unique                
         ├───────┬───────┬──────┼───────┬───────┬─────────────────────
 DEX     │ old   │ new   │ diff │ old   │ new   │ diff                
─────────┼───────┼───────┼──────┼───────┼───────┼─────────────────────
   files │     2 │     2 │    0 │       │       │                     
 strings │ 51340 │ 51091 │ -249 │ 47980 │ 47981 │  +1 (+4671 -4670)   
   types │ 18664 │ 18606 │  -58 │ 16964 │ 16970 │  +6 (+4663 -4657)   
 classes │ 14314 │ 14320 │   +6 │ 14314 │ 14320 │  +6 (+3734 -3728)   
 methods │ 71913 │ 71767 │ -146 │ 69520 │ 69550 │ +30 (+26819 -26789) 
  fields │ 48016 │ 47734 │ -282 │ 46725 │ 46743 │ +18 (+21298 -21280) 

 ARSC    │ old  │ new  │ diff 
─────────┼──────┼──────┼──────
 configs │  242 │  242 │  0   
 entries │ 6245 │ 6245 │  0
APK
      compressed       │     uncompressed      │                                           
───────────┬───────────┼───────────┬───────────┤                                           
 size      │ diff      │ size      │ diff      │ path                                      
───────────┼───────────┼───────────┼───────────┼───────────────────────────────────────────
   4.3 MiB │ +10.5 KiB │   9.5 MiB │  +7.6 KiB │ ∆ classes.dex                             
 312.6 KiB │  -9.2 KiB │ 746.8 KiB │ -14.5 KiB │ ∆ classes2.dex                            
     127 B │    +127 B │       5 B │      +5 B │ + META-INF/services/X9.x                  
     127 B │    +127 B │       5 B │      +5 B │ + META-INF/services/Y9.a                  
           │    -127 B │           │      -5 B │ - META-INF/services/W9.x                  
           │    -127 B │           │      -5 B │ - META-INF/services/X9.a                  
   8.9 KiB │     -31 B │   8.8 KiB │     -31 B │ ∆ assets/dexopt/baseline.prof             
   1.1 KiB │     +10 B │     971 B │     +10 B │ ∆ assets/dexopt/baseline.profm            
  50.4 KiB │      +3 B │ 118.5 KiB │       0 B │ ∆ META-INF/MANIFEST.MF                    
     272 B │      +1 B │     120 B │       0 B │ ∆ META-INF/version-control-info.textproto 
     240 B │      -1 B │     101 B │       0 B │ ∆ assets/sentry-debug-meta.properties     
  53.6 KiB │      -1 B │ 118.6 KiB │       0 B │ ∆ META-INF/CERT.SF                        
   1.2 KiB │      +1 B │   1.2 KiB │       0 B │ ∆ META-INF/CERT.RSA                       
───────────┼───────────┼───────────┼───────────┼───────────────────────────────────────────
   4.7 MiB │  +1.3 KiB │  10.5 MiB │  -6.9 KiB │ (total)
DEX
STRINGS:

   old   │ new   │ diff             
  ───────┼───────┼──────────────────
   47980 │ 47981 │ +1 (+4671 -4670) 
  
  + IntentConfirmationChallengeWebViewLoaded
  + LA5/A0;
  + LA5/A;
  + LA5/B0;
  + LA5/B;
  + LA5/C0;
  + LA5/C;
  + LA5/D0;
  + LA5/D;
  + LA5/E0;
  + LA5/E;
  + LA5/F0;
  + LA5/F;
  + LA5/G0;
  + LA5/G;
  + LA5/H0;
  + LA5/H;
  + LA5/I0;
  + LA5/I;
  + LA5/J0;
  + LA5/J;
  + LA5/K0;
  + LA5/K;
  + LA5/L0;
  + LA5/L;
  + LA5/M0;
  + LA5/M;
  + LA5/N0;
  + LA5/N;
  + LA5/O0;
  + LA5/O;
  + LA5/P0;
  + LA5/P;
  + LA5/Q0;
  + LA5/Q;
  + LA5/R0;
  + LA5/S;
  + LA5/T;
  + LA5/U;
  + LA5/V;
  + LA5/W;
  + LA5/X;
  + LA5/Y;
  + LA5/Z;
  + LA5/a0;
  + LA5/b0;
  + LA5/c0;
  + LA5/d0;
  + LA5/e0;
  + LA5/f0;
  + LA5/g0;
  + LA5/h0;
  + LA5/i0;
  + LA5/j0;
  + LA5/k0;
  + LA5/l0;
  + LA5/l;
  + LA5/m0;
  + LA5/m;
  + LA5/n0;
  + LA5/n;
  + LA5/o0;
  + LA5/o;
  + LA5/p0;
  + LA5/p;
  + LA5/q0;
  + LA5/q;
  + LA5/r0;
  + LA5/r;
  + LA5/s0;
  + LA5/s;
  + LA5/t0;
  + LA5/t;
  + LA5/u0;
  + LA5/u;
  + LA5/v0;
  + LA5/v;
  + LA5/w0;
  + LA5/w;
  + LA5/x0;
  + LA5/x;
  + LA5/y0;
  + LA5/y;
  + LA5/z0;
  + LA5/z;
  + LA9/b;
  + LA9/c;
  + LA9/d;
  + LA9/e;
  + LA9/f;
  + LA9/g;
  + LA9/h;
  + LA9/i;
  + LB6/a;
  + LB6/b;
  + LB6/c;
  + LB6/d;
  + LB6/e;
  + LB6/f;
  + LB6/g;
  + LB6/h;
  + LB6/i;
  + LB6/j;
  + LB6/k;
  + LB6/l;
  + LB6/m;
  + LB6/n;
  + LB8/A0;
  + LB8/A;
  + LB8/B0;
  + LB8/B;
  + LB8/C0;
  + LB8/C;
  + LB8/D0;
  + LB8/D;
  + LB8/E0;
  + LB8/E;
  + LB8/F0;
  + LB8/F;
  + LB8/G0;
  + LB8/G;
  + LB8/H0;
  + LB8/H;
  + LB8/I0;
  + LB8/I;
  + LB8/J0;
  + LB8/J;
  + LB8/K0;
  + LB8/K;
  + LB8/L0;
  + LB8/L;
  + LB8/M0;
  + LB8/M;
  + LB8/N0;
  + LB8/N;
  + LB8/O0;
  + LB8/O;
  + LB8/P0;
  + LB8/P;
  + LB8/Q0;
  + LB8/Q;
  + LB8/R0;
  + LB8/S0;
  + LB8/S;
  + LB8/T0;
  + LB8/T;
  + LB8/U0;
  + LB8/U;
  + LB8/V0;
  + LB8/V;
  + LB8/W0;
  + LB8/W;
  + LB8/X0;
  + LB8/X;
  + LB8/Y;
  + LB8/Z;
  + LB8/a0;
  + LB8/b0;
  + LB8/c0;
  + LB8/d0;
  + LB8/e0;
  + LB8/f0;
  + LB8/g0;
  + LB8/h0;
  + LB8/h;
  + LB8/i0;
  + LB8/i;
  + LB8/j0;
  + LB8/j;
  + LB8/k0;
  + LB8/k;
  + LB8/l0;
  + LB8/l;
  + LB8/m0;
  + LB8/m;
  + LB8/n0;
  + LB8/n;
  + LB8/o0;
  + LB8/o;
  + LB8/p0;
  + LB8/p;
  + LB8/q0;
  + LB8/q;
  + LB8/r0;
  + LB8/r;
  + LB8/s0;
  + LB8/s;
  + LB8/t0;
  + LB8/t;
  + LB8/u0;
  + LB8/u;
  + LB8/v0;
  + LB8/v;
  + LB8/w0;
  + LB8/w;
  + LB8/x0;
  + LB8/x;
  + LB8/y0;
  + LB8/y;
  + LB8/z0;
  + LB8/z;
  + LC5/A;
  + LC5/B;
  + LC5/C;
  + LC5/D;
  + LC5/E;
  + LC5/F;
  + LC5/G;
  + LC5/H;
  + LC5/I;
  + LC5/J;
  + LC5/K;
  + LC5/L;
  + LC5/M;
  + LC5/N;
  + LC5/i;
  + LC5/j;
  + LC5/k;
  + LC5/l;
  + LC5/m;
  + LC5/n;
  + LC5/o;
  + LC5/p;
  + LC5/q;
  + LC5/r;
  + LC5/s;
  + LC5/t;
  + LC5/u;
  + LC5/v;
  + LC5/w;
  + LC5/x;
  + LC5/y;
  + LC5/z;
  + LC7/o;
  + LC7/p;
  + LC7/q;
  + LD7/h;
  + LD7/i;
  + LD7/j;
  + LD7/k;
  + LD7/l;
  + LD7/m;
  + LD7/n;
  + LD9/b;
  + LD9/c;
  + LD9/d;
  + LD9/f;
  + LD9/g;
  + LD9/i;
  + LD9/j;
  + LD9/k;
  + LE6/m;
  + LE6/n;
  + LE6/o;
  + LE6/p;
  + LE6/q;
  + LF5/A;
  + LF5/B;
  + LF5/C;
  + LF5/D;
  + LF5/E;
  + LF5/F;
  + LF5/G;
  + LF5/H;
  + LF5/I;
  + LF5/J;
  + LF5/K;
  + LF5/L;
  + LF5/M;
  + LF5/N;
  + LF5/O;
  + LF5/P;
  + LF5/Q;
  + LF5/S;
  + LF5/T;
  + LF5/x;
  + LF5/y;
  + LF5/z;
  + LG5/j;
  + LG5/k;
  + LG5/l;
  + LG5/m;
  + LG5/n;
  + LG5/o;
  + LG5/p;
  + LG5/q;
  + LG5/r;
  + LG5/s;
  + LG5/t;
  + LG5/u;
  + LG5/v;
  + LG6/A;
  + LG6/B;
  + LG6/C;
  + LG6/D;
  + LG6/E;
  + LG6/F;
  + LG6/G;
  + LG6/H;
  + LG6/I;
  + LG6/J;
  + LG6/q;
  + LG6/r;
  + LG6/s;
  + LG6/t;
  + LG6/u;
  + LG6/v;
  + LG6/w;
  + LG6/x;
  + LG6/y;
  + LG6/z;
  + LG7/g;
  + LG7/h;
  + LG7/i;
  + LG7/j;
  + LG7/k;
  + LG7/l;
  + LG7/m;
  + LG7/n;
  + LG7/o;
  + LG7/p;
  + LG7/q;
  + LG7/r;
  + LG7/s;
  + LG7/t;
  + LG7/u;
  + LG7/v;
  + LG7/w;
  + LG8/A;
  + LG8/B;
  + LG8/C;
  + LG8/D;
  + LG8/E;
  + LG8/F;
  + LG8/G;
  + LG8/H;
  + LG8/I;
  + LG8/J;
  + LG8/e;
  + LG8/f;
  + LG8/g;
  + LG8/h;
  + LG8/i;
  + LG8/j;
  + LG8/k;
  + LG8/l;
  + LG8/m;
  + LG8/n;
  + LG8/o;
  + LG8/p;
  + LG8/q;
  + LG8/r;
  + LG8/s;
  + LG8/t;
  + LG8/u;
  + LG8/v;
  + LG8/w;
  + LG8/x;
  + LG8/y;
  + LG8/z;
  + LG9/a;
  + LG9/b;
  + LH6/k;
  + LH6/l;
  + LH6/m;
  + LH6/n;
  + LH6/o;
  + LH6/p;
  + LH7/c;
  + LH7/d;
  + LH7/e;
  + LI8/d;
  + LJ5/d;
  + LJ5/e;
  + LJ5/f;
  + LJ5/g;
  + LJ5/h;
  + LJ5/i;
  + LJ5/j;
  + LJ5/k;
  + LJ6/A;
  + LJ6/B;
  + LJ6/C;
  + LJ6/D;
  + LJ6/E;
  + LJ6/F;
  
...✂

@toluo-stripe toluo-stripe force-pushed the tolu/conf_challenge/analytics branch from d124ee8 to 3a1d41f Compare November 24, 2025 17:26
@toluo-stripe toluo-stripe changed the title Tolu/conf challenge/analytics Introduce Intent Confirmation Challenge Analytics Events Nov 24, 2025
@toluo-stripe toluo-stripe force-pushed the tolu/conf_challenge/analytics branch from 3a1d41f to 36b73cc Compare November 25, 2025 17:35
@toluo-stripe toluo-stripe force-pushed the tolu/conf_challenge/analytics branch from 36b73cc to 7f5864d Compare November 25, 2025 22:12
@toluo-stripe toluo-stripe force-pushed the tolu/conf_challenge/analytics branch from eea93d5 to 88bdac7 Compare November 25, 2025 22:39
Comment on lines +20 to +34
class Error(
val duration: Float,
val errorType: String?,
val errorCode: String?,
val fromBridge: Boolean
) : IntentConfirmationChallengeAnalyticsEvent {
override val params: Map<String, Any?>
get() = mapOf(
FIELD_DURATION to duration,
FIELD_ERROR_TYPE to errorType,
FIELD_ERROR_CODE to errorCode,
FIELD_FROM_BRIDGE to fromBridge
)
override val eventName = "elements.intent_confirmation_challenge.error"
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to log the error message as well, but there's PII concerns

@toluo-stripe toluo-stripe marked this pull request as ready for review November 25, 2025 23:32
@toluo-stripe toluo-stripe requested review from a team as code owners November 25, 2025 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants