stripe / stripe-android

Stripe Android SDK
https://stripe.com/docs/mobile/android
MIT License
1.23k stars 628 forks source link

Fix payment method options support for deferred intents. #8697

Closed jaynewstrom-stripe closed 3 days ago

jaynewstrom-stripe commented 4 days ago

Summary

Fixes an issue where deferred intent with client side confirmation wasn't correctly sending payment_method_options for cards or LPMs.

Motivation

ir-bundle-accommodate

github-actions[bot] commented 4 days ago

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 MiB │     4 MiB │ -493 B │   8.7 MiB │   8.7 MiB │ -32 B 
     arsc │   2.3 MiB │   2.3 MiB │    0 B │   2.3 MiB │   2.3 MiB │   0 B 
 manifest │   5.1 KiB │   5.1 KiB │    0 B │  25.6 KiB │  25.6 KiB │   0 B 
      res │ 918.5 KiB │ 918.5 KiB │    0 B │   1.5 MiB │   1.5 MiB │   0 B 
   native │   2.6 MiB │   2.6 MiB │    0 B │     6 MiB │     6 MiB │   0 B 
    asset │   2.9 MiB │   2.9 MiB │   +8 B │   2.9 MiB │   2.9 MiB │  +8 B 
    other │   195 KiB │   195 KiB │   -8 B │ 428.4 KiB │ 428.4 KiB │   0 B 
──────────┼───────────┼───────────┼────────┼───────────┼───────────┼───────
    total │  12.8 MiB │  12.8 MiB │ -493 B │  21.8 MiB │  21.8 MiB │ -24 B 

 DEX     │ old   │ new   │ diff             
─────────┼───────┼───────┼──────────────────
   files │     1 │     1 │  0               
 strings │ 43559 │ 43560 │ +1 (+36 -35)     
   types │ 14975 │ 14975 │  0 (+32 -32)     
 classes │ 12658 │ 12657 │ -1 (+2 -3)       
 methods │ 61982 │ 61988 │ +6 (+1331 -1325) 
  fields │ 40920 │ 40921 │ +1 (+769 -768)   

 ARSC    │ old  │ new  │ diff 
─────────┼──────┼──────┼──────
 configs │  242 │  242 │  0   
 entries │ 6043 │ 6043 │  0
APK ``` compressed │ uncompressed │ ──────────┬────────┼───────────┬───────┤ size │ diff │ size │ diff │ path ──────────┼────────┼───────────┼───────┼─────────────────────────────────────────── 4 MiB │ -493 B │ 8.7 MiB │ -32 B │ ∆ classes.dex 7.4 KiB │ +9 B │ 7.2 KiB │ +9 B │ ∆ assets/dexopt/baseline.prof 52.9 KiB │ -7 B │ 117.2 KiB │ 0 B │ ∆ META-INF/CERT.SF 49.6 KiB │ -2 B │ 117.1 KiB │ 0 B │ ∆ META-INF/MANIFEST.MF 272 B │ +1 B │ 120 B │ 0 B │ ∆ META-INF/version-control-info.textproto 885 B │ -1 B │ 753 B │ -1 B │ ∆ assets/dexopt/baseline.profm ──────────┼────────┼───────────┼───────┼─────────────────────────────────────────── 4.1 MiB │ -493 B │ 9 MiB │ -24 B │ (total) ```
DEX ``` STRINGS: old │ new │ diff ───────┼───────┼────────────── 43559 │ 43560 │ +1 (+36 -35) + LB7/s0; + LLLLLZLL + Lq6/W2; + Q2 + WeChatPay(appId= + [LB7/b; + [LB7/s0; + [LC7/b; + [LC7/g; + [LE7/y; + [LG6/q1; + [LG6/u; + [La8/D0; + [Li7/w; + [Lp8/Q; + [Lp8/U; + [Lq6/C2; + [Lq6/F1; + [Lq6/H2; + [Lq6/I1; + [Lq6/L1; + [Lq6/M2; + [Lq6/R2; + [Lq6/W2; + [Lq6/n2; + [Ls6/h; + [Lu8/C; + [Lz4/D; + [Lz4/F; + [Lz4/H; + [Lz4/P; + [Lz4/T; + [Lz4/Z; + [Lz4/n; + [Lz4/v; + ~~R8{backend:dex,compilation-mode:release,has-checksums:false,min-api:21,pg-map-id:6fa21ce,r8-mode:full,version:8.3.37} - , recollectedCvc= - , requiresSaveOnConfirmation= - LE7/L; - Lu8/D; - Lz4/k0; - [LB7/a; - [LB7/r0; - [LC7/f; - [LC7/i; - [LE7/z; - [LG6/p1; - [LG6/t; - [La8/C0; - [Li7/v; - [Lp8/P; - [Lp8/T; - [Lq6/D2; - [Lq6/G1; - [Lq6/I2; - [Lq6/J1; - [Lq6/M1; - [Lq6/P2; - [Lq6/S2; - [Lq6/o2; - [Ls6/f; - [Lu8/D; - [Lz4/E; - [Lz4/G; - [Lz4/L; - [Lz4/S; - [Lz4/U; - [Lz4/a0; - [Lz4/u; - [Lz4/x; - ~~R8{backend:dex,compilation-mode:release,has-checksums:false,min-api:21,pg-map-id:91ba297,r8-mode:full,version:8.3.37} TYPES: old │ new │ diff ───────┼───────┼───────────── 14975 │ 14975 │ 0 (+32 -32) + LB7/s0; + Lq6/W2; + [LB7/b; + [LB7/s0; + [LC7/b; + [LC7/g; + [LE7/y; + [LG6/q1; + [LG6/u; + [La8/D0; + [Li7/w; + [Lp8/Q; + [Lp8/U; + [Lq6/C2; + [Lq6/F1; + [Lq6/H2; + [Lq6/I1; + [Lq6/L1; + [Lq6/M2; + [Lq6/R2; + [Lq6/W2; + [Lq6/n2; + [Ls6/h; + [Lu8/C; + [Lz4/D; + [Lz4/F; + [Lz4/H; + [Lz4/P; + [Lz4/T; + [Lz4/Z; + [Lz4/n; + [Lz4/v; - LE7/L; - Lu8/D; - Lz4/k0; - [LB7/a; - [LB7/r0; - [LC7/f; - [LC7/i; - [LE7/z; - [LG6/p1; - [LG6/t; - [La8/C0; - [Li7/v; - [Lp8/P; - [Lp8/T; - [Lq6/D2; - [Lq6/G1; - [Lq6/I2; - [Lq6/J1; - [Lq6/M1; - [Lq6/P2; - [Lq6/S2; - [Lq6/o2; - [Ls6/f; - [Lu8/D; - [Lz4/E; - [Lz4/G; - [Lz4/L; - [Lz4/S; - [Lz4/U; - [Lz4/a0; - [Lz4/u; - [Lz4/x; METHODS: old │ new │ diff ───────┼───────┼────────────────── 61982 │ 61988 │ +6 (+1331 -1325) + B6.a b(O2) → d + B6.j (l, A, X1, String, e) + B6.k (l, A, X1, m, e) + B6.p (r, A, O2, int, String, String, String, String, boolean, boolean, String, boolean, e) + B6.r e(A, O2, m, e) → Object + B7.C (h, l, Y) + B7.H a(JSONObject) → b + B7.M a(d0, p) → b + B7.Q (int, S, b) + B7.W (y) + B7.a (int) + B7.a createFromParcel(Parcel) → Object + B7.a newArray(int) → Object[] + B7.b () + B7.b (String, ECPublicKey, ECPublicKey) + B7.b describeContents() → int + B7.b equals(Object) → boolean + B7.b hashCode() → int + B7.b toString() → String + B7.b writeToParcel(Parcel, int) + B7.g0 (h0, b, e) + B7.h0 b(b, e) → Object + B7.k0 a(h) + B7.l0 A(w1, String) → String + B7.l0 B(A) → a + B7.l0 C(String) → h + B7.l0 D(String) → List + B7.l0 E(String) → ArrayList + B7.l0 F(O2) → int + B7.l0 G(Application, String) + B7.l0 H(String) → boolean + B7.l0 I(String) → boolean + B7.l0 J(int) → boolean + B7.l0 K(String) → String + B7.l0 L(View, int, int) + B7.l0 M(A, float) + B7.l0 N(WindowManager, View, WindowManager_LayoutParams) + B7.l0 O(U0, Integer) → M0 + B7.l0 P(Integer, List) → M0 + B7.l0 e(b) → x + B7.l0 f(EventReporter_Mode, String) → String + B7.l0 g(List, List) + B7.l0 h(LinkedHashMap, b) → Map + B7.l0 i(Map, List, String) + B7.l0 j(Bitmap, Rect, Rect) → l + B7.l0 k(String) → q0 + B7.l0 l(w1, String) → o + B7.l0 m(l0, l1, N0) → w1 + B7.l0 n(H1, Set) → I1 + B7.l0 o(JSONObject) → w1 + B7.l0 p(String, String, boolean, boolean, int) → h0 + B7.l0 q(w1, String, m, G1, int) → n + B7.l0 r(String, int, int, e) → Object + B7.l0 s(BitmapFactory_Options, String, c) → Object + B7.l0 t(String) → v0 + B7.l0 u(String) → h + B7.l0 v(String) → i + B7.l0 w(String) → Z0 + B7.l0 x(String) → T2 + B7.l0 y(String) → StripeIntent_Status + B7.l0 z(String) → StripeIntent_Usage + B7.n (b, f, e0, c) + B7.n a(n, b, e) → Object + B7.r0 (int) + B7.r0 (int, int) + B7.r0 a(String) → f + B7.r0 b(String) → f + B7.r0 c(JSONObject) → h + B7.r0 d(l) → e + B7.r0 e(String, ...✂ ```
jaynewstrom-stripe commented 4 days ago

Still need to add tests and do a little cleanup.