From 6c06858e0266af86745f94e748018f90fa454b06 Mon Sep 17 00:00:00 2001 From: Vishnu KS Date: Sun, 29 Aug 2021 13:33:29 +0000 Subject: [PATCH] billing: Migrate to Stripe hosted checkout page. --- corporate/lib/stripe.py | 129 +- corporate/lib/stripe_event_handler.py | 176 ++ .../0015_event_paymentintent_session.py | 85 + corporate/models.py | 139 +- ...ch_discount_to_realm--Charge.create.1.json | 117 -- ...ch_discount_to_realm--Charge.create.2.json | 117 -- ...tach_discount_to_realm--Charge.list.1.json | 60 +- ...tach_discount_to_realm--Charge.list.2.json | 120 +- ..._discount_to_realm--Customer.create.1.json | 2 +- ...discount_to_realm--Customer.modify.1.json} | 2 +- ..._discount_to_realm--Customer.modify.2.json | 30 + ...discount_to_realm--Customer.modify.3.json} | 4 +- ...iscount_to_realm--Customer.retrieve.1.json | 63 +- ...iscount_to_realm--Customer.retrieve.2.json | 30 + ...ttach_discount_to_realm--Event.list.1.json | 196 +++ ...ttach_discount_to_realm--Event.list.2.json | 702 ++++++++ ...ttach_discount_to_realm--Event.list.3.json | 1261 ++++++++++++++ ...ttach_discount_to_realm--Event.list.4.json | 6 + ...ttach_discount_to_realm--Event.list.5.json | 196 +++ ...ttach_discount_to_realm--Event.list.6.json | 657 ++++++++ ...ttach_discount_to_realm--Event.list.7.json | 1213 ++++++++++++++ ...ttach_discount_to_realm--Event.list.8.json | 6 + ...h_discount_to_realm--Invoice.create.1.json | 26 +- ...h_discount_to_realm--Invoice.create.2.json | 26 +- ...h_discount_to_realm--Invoice.create.3.json | 17 +- ..._to_realm--Invoice.finalize_invoice.1.json | 32 +- ..._to_realm--Invoice.finalize_invoice.2.json | 30 +- ..._to_realm--Invoice.finalize_invoice.3.json | 25 +- ...ach_discount_to_realm--Invoice.list.1.json | 175 +- ...ach_discount_to_realm--Invoice.list.2.json | 196 +-- ...ach_discount_to_realm--Invoice.list.3.json | 476 +----- ...ach_discount_to_realm--Invoice.list.4.json | 355 ++++ ...ach_discount_to_realm--Invoice.list.5.json | 485 ++++++ ...scount_to_realm--InvoiceItem.create.1.json | 7 +- ...scount_to_realm--InvoiceItem.create.2.json | 7 +- ...scount_to_realm--InvoiceItem.create.3.json | 7 +- ...scount_to_realm--InvoiceItem.create.4.json | 7 +- ...scount_to_realm--InvoiceItem.create.5.json | 7 +- ...unt_to_realm--PaymentIntent.confirm.1.json | 166 ++ ...unt_to_realm--PaymentIntent.confirm.2.json | 166 ++ ...ount_to_realm--PaymentIntent.create.1.json | 62 + ...ount_to_realm--PaymentIntent.create.2.json | 62 + ...ount_to_realm--PaymentMethod.create.1.json | 47 + ...ount_to_realm--PaymentMethod.create.2.json | 47 + ...scount_to_realm--SetupIntent.create.1.json | 39 + ...scount_to_realm--SetupIntent.create.2.json | 39 + ...discount_to_realm--SetupIntent.list.1.json | 46 + ...discount_to_realm--SetupIntent.list.2.json | 46 + ...ount_to_realm--SetupIntent.retrieve.1.json | 39 + ...ount_to_realm--SetupIntent.retrieve.2.json | 39 + ...ach_discount_to_realm--Token.create.1.json | 33 - ...ach_discount_to_realm--Token.create.2.json | 33 - ...t_to_realm--checkout.Session.create.1.json | 46 + ...t_to_realm--checkout.Session.create.2.json | 46 + ...unt_to_realm--checkout.Session.list.1.json | 53 + ...unt_to_realm--checkout.Session.list.2.json | 53 + ...ing_page_permissions--Charge.create.1.json | 117 -- ...g_page_permissions--Customer.create.1.json | 2 +- ..._page_permissions--Customer.modify.1.json} | 2 +- ...g_page_permissions--Customer.modify.2.json | 30 + ...page_permissions--Customer.retrieve.1.json | 63 +- ...page_permissions--Customer.retrieve.2.json | 107 +- ...page_permissions--Customer.retrieve.3.json | 76 + ...illing_page_permissions--Event.list.1.json | 240 +++ ...illing_page_permissions--Event.list.2.json | 702 ++++++++ ...illing_page_permissions--Event.list.3.json | 1261 ++++++++++++++ ...illing_page_permissions--Event.list.4.json | 6 + ...ng_page_permissions--Invoice.create.1.json | 26 +- ...rmissions--Invoice.finalize_invoice.1.json | 32 +- ...ing_page_permissions--Invoice.list.1.json} | 0 ...age_permissions--InvoiceItem.create.1.json | 7 +- ...age_permissions--InvoiceItem.create.2.json | 7 +- ..._permissions--PaymentIntent.confirm.1.json | 166 ++ ...e_permissions--PaymentIntent.create.1.json | 62 + ...e_permissions--PaymentMethod.create.1.json | 47 + ...age_permissions--SetupIntent.create.1.json | 39 + ..._page_permissions--SetupIntent.list.1.json | 46 + ...e_permissions--SetupIntent.retrieve.1.json | 39 + ...ling_page_permissions--Token.create.1.json | 33 - ...ermissions--checkout.Session.create.1.json | 46 + ..._permissions--checkout.Session.list.1.json | 53 + ...uncaught_exception--Customer.create.1.json | 30 + ...uncaught_exception--Customer.modify.1.json | 30 + ...caught_exception--Customer.retrieve.1.json | 30 + ...with_uncaught_exception--Event.list.1.json | 152 ++ ...with_uncaught_exception--Event.list.2.json | 353 ++++ ...with_uncaught_exception--Event.list.3.json | 6 + ...ght_exception--PaymentIntent.create.1.json | 62 + ...ght_exception--PaymentMethod.create.1.json | 47 + ...aught_exception--SetupIntent.create.1.json | 39 + ...ncaught_exception--SetupIntent.list.1.json | 46 + ...ght_exception--SetupIntent.retrieve.1.json | 39 + ..._exception--checkout.Session.create.1.json | 46 + ...ht_exception--checkout.Session.list.1.json | 53 + ...ult_payment_method--Customer.create.1.json | 30 + ...ult_payment_method--Customer.create.2.json | 30 + ...ult_payment_method--Customer.modify.1.json | 30 + ...ult_payment_method--Customer.modify.2.json | 30 + ...t_payment_method--Customer.retrieve.1.json | 30 + ...t_payment_method--Customer.retrieve.2.json | 76 + ...ayment_method--PaymentMethod.create.1.json | 47 + ...payments_as_needed--Customer.create.1.json | 6 +- ...payments_as_needed--Customer.create.2.json | 6 +- ...payments_as_needed--Customer.create.3.json | 6 +- ...payments_as_needed--Customer.create.4.json | 6 +- ...payments_as_needed--Customer.create.5.json | 6 +- ...payments_as_needed--Customer.create.6.json | 6 +- ...payments_as_needed--Customer.create.7.json | 6 +- ...payments_as_needed--Customer.modify.1.json | 30 + ...payments_as_needed--Customer.modify.2.json | 30 + ...payments_as_needed--Customer.modify.3.json | 30 + ...payments_as_needed--Customer.modify.4.json | 30 + ...payments_as_needed--Customer.modify.5.json | 30 + ...payments_as_needed--Customer.modify.6.json | 30 + ...payments_as_needed--Customer.modify.7.json | 30 + ..._payments_as_needed--Invoice.create.1.json | 7 +- ..._payments_as_needed--Invoice.create.2.json | 7 +- ..._payments_as_needed--Invoice.create.3.json | 7 +- ..._payments_as_needed--Invoice.create.4.json | 7 +- ..._payments_as_needed--Invoice.create.5.json | 7 +- ..._payments_as_needed--Invoice.create.6.json | 7 +- ..._payments_as_needed--Invoice.create.7.json | 7 +- ..._payments_as_needed--Invoice.create.8.json | 7 +- ...as_needed--Invoice.finalize_invoice.1.json | 9 +- ...as_needed--Invoice.finalize_invoice.2.json | 11 +- ...as_needed--Invoice.finalize_invoice.3.json | 11 +- ...as_needed--Invoice.finalize_invoice.4.json | 9 +- ...as_needed--Invoice.finalize_invoice.5.json | 9 +- ...as_needed--Invoice.finalize_invoice.6.json | 9 +- ...as_needed--Invoice.finalize_invoice.7.json | 11 +- ...as_needed--Invoice.finalize_invoice.8.json | 9 +- ...on_payments_as_needed--Invoice.list.2.json | 9 +- ...on_payments_as_needed--Invoice.list.4.json | 9 +- ...on_payments_as_needed--Invoice.list.5.json | 18 +- ...on_payments_as_needed--Invoice.list.6.json | 18 +- ..._on_payments_as_needed--Invoice.pay.1.json | 9 +- ..._on_payments_as_needed--Invoice.pay.2.json | 9 +- ...ments_as_needed--InvoiceItem.create.1.json | 1 + ...ments_as_needed--InvoiceItem.create.2.json | 1 + ...ments_as_needed--InvoiceItem.create.3.json | 1 + ...ments_as_needed--InvoiceItem.create.4.json | 1 + ...ments_as_needed--InvoiceItem.create.5.json | 1 + ...ments_as_needed--InvoiceItem.create.6.json | 1 + ...ments_as_needed--InvoiceItem.create.7.json | 1 + ...ments_as_needed--InvoiceItem.create.8.json | 1 + .../fixed_price_plans--Customer.modify.1.json | 30 + .../fixed_price_plans--Event.list.1.json | 66 + .../fixed_price_plans--Invoice.create.1.json | 5 +- .../fixed_price_plans--Invoice.create.2.json | 5 +- ...ice_plans--Invoice.finalize_invoice.1.json | 9 +- ...ice_plans--Invoice.finalize_invoice.2.json | 9 +- .../fixed_price_plans--Invoice.list.1.json | 14 +- ...xed_price_plans--InvoiceItem.create.1.json | 1 + ...xed_price_plans--InvoiceItem.create.2.json | 1 + ...al_upgrade_by_card--Customer.create.1.json | 2 +- ...al_upgrade_by_card--Customer.modify.1.json | 30 + ...al_upgrade_by_card--Customer.modify.2.json | 30 + ..._upgrade_by_card--Customer.retrieve.1.json | 59 +- ..._upgrade_by_card--Customer.retrieve.2.json | 107 +- ..._upgrade_by_card--Customer.retrieve.3.json | 107 +- ..._upgrade_by_card--Customer.retrieve.4.json | 76 + ...e_trial_upgrade_by_card--Event.list.1.json | 61 + ...e_trial_upgrade_by_card--Event.list.2.json | 326 ++++ ...e_trial_upgrade_by_card--Event.list.3.json | 6 + ...ial_upgrade_by_card--Invoice.create.1.json | 9 +- ...ial_upgrade_by_card--Invoice.create.2.json | 9 +- ...ial_upgrade_by_card--Invoice.create.3.json | 9 +- ...e_by_card--Invoice.finalize_invoice.1.json | 13 +- ...e_by_card--Invoice.finalize_invoice.2.json | 13 +- ...e_by_card--Invoice.finalize_invoice.3.json | 13 +- ...trial_upgrade_by_card--Invoice.list.3.json | 132 +- ...trial_upgrade_by_card--Invoice.list.4.json | 13 +- ...trial_upgrade_by_card--Invoice.list.5.json | 142 +- ...trial_upgrade_by_card--Invoice.list.6.json | 153 +- ...trial_upgrade_by_card--Invoice.list.7.json | 397 +++++ ...upgrade_by_card--InvoiceItem.create.1.json | 3 +- ...upgrade_by_card--InvoiceItem.create.2.json | 3 +- ...upgrade_by_card--InvoiceItem.create.3.json | 3 +- ...grade_by_card--PaymentMethod.create.1.json | 47 + ...upgrade_by_card--SetupIntent.create.1.json | 39 + ...l_upgrade_by_card--SetupIntent.list.1.json | 46 + ...grade_by_card--SetupIntent.retrieve.1.json | 39 + ...trial_upgrade_by_card--Token.create.1.json | 33 - ...de_by_card--checkout.Session.create.1.json | 46 + ...rade_by_card--checkout.Session.list.1.json | 53 + ...d_from_onboarding_page--Charge.list.1.json | 6 + ...om_onboarding_page--Customer.create.1.json | 30 + ...om_onboarding_page--Customer.modify.1.json | 30 + ...om_onboarding_page--Customer.modify.2.json | 30 + ..._onboarding_page--Customer.retrieve.1.json | 30 + ..._onboarding_page--Customer.retrieve.2.json | 76 + ...rd_from_onboarding_page--Event.list.1.json | 152 ++ ...rd_from_onboarding_page--Event.list.2.json | 326 ++++ ...rd_from_onboarding_page--Event.list.3.json | 6 + ..._from_onboarding_page--Invoice.list.1.json | 6 + ..._from_onboarding_page--Invoice.list.2.json | 6 + ...boarding_page--PaymentMethod.create.1.json | 47 + ...onboarding_page--SetupIntent.create.1.json | 39 + ...m_onboarding_page--SetupIntent.list.1.json | 46 + ...boarding_page--SetupIntent.retrieve.1.json | 39 + ...rding_page--checkout.Session.create.1.json | 46 + ...oarding_page--checkout.Session.list.1.json | 53 + ...upgrade_by_invoice--Customer.modify.1.json | 30 + ...grade_by_invoice--Customer.retrieve.1.json | 7 - ...grade_by_invoice--Customer.retrieve.2.json | 7 - ...rial_upgrade_by_invoice--Event.list.1.json | 57 + ..._upgrade_by_invoice--Invoice.create.1.json | 9 +- ..._upgrade_by_invoice--Invoice.create.2.json | 9 +- ...y_invoice--Invoice.finalize_invoice.1.json | 11 +- ...y_invoice--Invoice.finalize_invoice.2.json | 13 +- ...al_upgrade_by_invoice--Invoice.list.2.json | 11 +- ...al_upgrade_by_invoice--Invoice.list.3.json | 11 +- ...al_upgrade_by_invoice--Invoice.list.4.json | 11 +- ...al_upgrade_by_invoice--Invoice.list.5.json | 22 +- ...rade_by_invoice--InvoiceItem.create.1.json | 3 +- ...rade_by_invoice--InvoiceItem.create.2.json | 3 +- .../invoice_plan--Charge.create.1.json | 117 -- .../invoice_plan--Customer.create.1.json | 2 +- .../invoice_plan--Customer.modify.1.json | 30 + .../invoice_plan--Customer.modify.2.json | 30 + .../invoice_plan--Customer.retrieve.1.json | 30 + .../invoice_plan--Event.list.1.json | 196 +++ .../invoice_plan--Event.list.2.json | 702 ++++++++ .../invoice_plan--Event.list.3.json | 1261 ++++++++++++++ .../invoice_plan--Event.list.4.json | 6 + .../invoice_plan--Invoice.create.1.json | 26 +- .../invoice_plan--Invoice.create.2.json | 35 +- ...oice_plan--Invoice.finalize_invoice.1.json | 32 +- ...oice_plan--Invoice.finalize_invoice.2.json | 43 +- .../invoice_plan--Invoice.list.1.json | 390 +---- .../invoice_plan--Invoice.list.2.json | 399 +++++ .../invoice_plan--InvoiceItem.create.1.json | 7 +- .../invoice_plan--InvoiceItem.create.2.json | 7 +- .../invoice_plan--InvoiceItem.create.3.json | 7 +- .../invoice_plan--InvoiceItem.create.4.json | 7 +- .../invoice_plan--InvoiceItem.create.5.json | 7 +- ...invoice_plan--PaymentIntent.confirm.1.json | 166 ++ .../invoice_plan--PaymentIntent.create.1.json | 62 + .../invoice_plan--PaymentMethod.create.1.json | 47 + .../invoice_plan--SetupIntent.create.1.json | 39 + .../invoice_plan--SetupIntent.list.1.json | 46 + .../invoice_plan--SetupIntent.retrieve.1.json | 39 + .../invoice_plan--Token.create.1.json | 33 - ...voice_plan--checkout.Session.create.1.json | 46 + ...invoice_plan--checkout.Session.list.1.json | 53 + ...uncaught_exception--Customer.create.1.json | 30 + ...uncaught_exception--Customer.modify.1.json | 30 + ...uncaught_exception--Customer.modify.2.json | 30 + ...caught_exception--Customer.retrieve.1.json | 30 + ...with_uncaught_exception--Event.list.1.json | 57 + ...with_uncaught_exception--Event.list.2.json | 702 ++++++++ ...with_uncaught_exception--Event.list.3.json | 115 ++ ...with_uncaught_exception--Event.list.4.json | 6 + ...th_uncaught_exception--Invoice.list.1.json | 6 + ...aught_exception--InvoiceItem.create.1.json | 45 + ...ht_exception--PaymentIntent.confirm.1.json | 166 ++ ...ght_exception--PaymentIntent.create.1.json | 62 + ...ght_exception--PaymentMethod.create.1.json | 47 + ...aught_exception--SetupIntent.create.1.json | 39 + ...ncaught_exception--SetupIntent.list.1.json | 46 + ...ght_exception--SetupIntent.retrieve.1.json | 39 + ..._exception--checkout.Session.create.1.json | 46 + ...ht_exception--checkout.Session.list.1.json | 53 + ...ace_payment_method--Customer.create.1.json | 30 + ...ace_payment_method--Customer.modify.1.json | 30 + ...ace_payment_method--Customer.modify.2.json | 30 + ...ace_payment_method--Customer.modify.3.json | 30 + ...ace_payment_method--Customer.modify.4.json | 30 + ...e_payment_method--Customer.retrieve.1.json | 30 + ...e_payment_method--Customer.retrieve.2.json | 30 + ...e_payment_method--Customer.retrieve.3.json | 76 + ..._payment_method--Customer.retrieve.4.json} | 2 +- ..._payment_method--Customer.retrieve.5.json} | 4 +- ...e_payment_method--Customer.retrieve.6.json | 76 + .../replace_payment_method--Event.list.1.json | 67 + .../replace_payment_method--Event.list.2.json | 702 ++++++++ .../replace_payment_method--Event.list.3.json | 1261 ++++++++++++++ .../replace_payment_method--Event.list.4.json | 6 + ...lace_payment_method--Invoice.create.1.json | 174 ++ ...lace_payment_method--Invoice.create.2.json | 130 ++ ...nt_method--Invoice.finalize_invoice.1.json | 174 ++ ...nt_method--Invoice.finalize_invoice.2.json | 130 ++ ...eplace_payment_method--Invoice.list.1.json | 6 + ...eplace_payment_method--Invoice.list.2.json | 137 ++ ...eplace_payment_method--Invoice.list.3.json | 137 ++ ...eplace_payment_method--Invoice.list.4.json | 311 ++++ ...replace_payment_method--Invoice.pay.1.json | 537 ++++++ ...replace_payment_method--Invoice.pay.2.json | 130 ++ ..._payment_method--InvoiceItem.create.1.json | 45 + ..._payment_method--InvoiceItem.create.2.json | 45 + ..._payment_method--InvoiceItem.create.3.json | 45 + ...yment_method--PaymentIntent.confirm.1.json | 166 ++ ...ayment_method--PaymentIntent.create.1.json | 62 + ...ayment_method--PaymentMethod.create.1.json | 47 + ...ayment_method--PaymentMethod.create.2.json | 47 + ...ayment_method--PaymentMethod.create.3.json | 47 + ...ayment_method--PaymentMethod.create.4.json | 47 + ...ayment_method--PaymentMethod.detach.1.json | 47 + ...ayment_method--PaymentMethod.detach.2.json | 47 + ..._payment_method--PaymentMethod.list.1.json | 101 ++ ..._payment_method--PaymentMethod.list.2.json | 54 + ..._payment_method--SetupIntent.create.1.json | 39 + ..._payment_method--SetupIntent.create.2.json | 306 ++++ ..._payment_method--SetupIntent.create.3.json | 29 + ..._payment_method--SetupIntent.create.4.json | 29 + ...ce_payment_method--SetupIntent.list.1.json | 46 + ...ce_payment_method--SetupIntent.list.2.json | 36 + ...ce_payment_method--SetupIntent.list.3.json | 36 + ...ce_payment_method--SetupIntent.list.4.json | 36 + ...ayment_method--SetupIntent.retrieve.1.json | 39 + ...ayment_method--SetupIntent.retrieve.2.json | 29 + ...ayment_method--SetupIntent.retrieve.3.json | 29 + ...ent_method--checkout.Session.create.1.json | 46 + ...ent_method--checkout.Session.create.2.json | 38 + ...ent_method--checkout.Session.create.3.json | 38 + ...ent_method--checkout.Session.create.4.json | 38 + ...yment_method--checkout.Session.list.1.json | 53 + ...yment_method--checkout.Session.list.2.json | 45 + ...yment_method--checkout.Session.list.3.json | 45 + ...place_payment_source--Charge.create.1.json | 117 -- ...ace_payment_source--Customer.create.1.json | 2 +- ...ace_payment_source--Customer.modify.1.json | 30 + ...ace_payment_source--Customer.modify.2.json | 30 + ...ace_payment_source--Customer.modify.3.json | 30 + ...ace_payment_source--Customer.modify.4.json | 30 + ...e_payment_source--Customer.retrieve.1.json | 63 +- ...e_payment_source--Customer.retrieve.2.json | 61 +- ...e_payment_source--Customer.retrieve.3.json | 109 +- ...e_payment_source--Customer.retrieve.4.json | 61 +- ...e_payment_source--Customer.retrieve.5.json | 109 +- ...e_payment_source--Customer.retrieve.6.json | 87 - ...place_payment_source--Customer.save.1.json | 51 - .../replace_payment_source--Event.list.1.json | 152 ++ .../replace_payment_source--Event.list.2.json | 702 ++++++++ .../replace_payment_source--Event.list.3.json | 1261 ++++++++++++++ .../replace_payment_source--Event.list.4.json | 6 + ...lace_payment_source--Invoice.create.1.json | 96 +- ...lace_payment_source--Invoice.create.2.json | 17 +- ...nt_source--Invoice.finalize_invoice.1.json | 102 +- ...nt_source--Invoice.finalize_invoice.2.json | 23 +- ...eplace_payment_source--Invoice.list.1.json | 132 +- ...eplace_payment_source--Invoice.list.2.json | 29 +- ...eplace_payment_source--Invoice.list.3.json | 23 +- ...eplace_payment_source--Invoice.list.4.json | 123 +- ...replace_payment_source--Invoice.pay.1.json | 392 +++-- ...replace_payment_source--Invoice.pay.2.json | 23 +- ..._payment_source--InvoiceItem.create.1.json | 7 +- ..._payment_source--InvoiceItem.create.2.json | 7 +- ..._payment_source--InvoiceItem.create.3.json | 7 +- ...yment_source--PaymentIntent.confirm.1.json | 166 ++ ...ayment_source--PaymentIntent.create.1.json | 62 + ...ayment_source--PaymentMethod.create.1.json | 47 + ...ayment_source--PaymentMethod.create.2.json | 47 + ...ayment_source--PaymentMethod.create.3.json | 47 + ..._payment_source--PaymentMethod.list.1.json | 101 ++ ..._payment_source--PaymentMethod.list.2.json | 148 ++ ..._payment_source--SetupIntent.create.1.json | 39 + ..._payment_source--SetupIntent.create.2.json | 29 + ..._payment_source--SetupIntent.create.3.json | 29 + ...ce_payment_source--SetupIntent.list.1.json | 46 + ...ce_payment_source--SetupIntent.list.2.json | 36 + ...ce_payment_source--SetupIntent.list.3.json | 36 + ...ayment_source--SetupIntent.retrieve.1.json | 39 + ...ayment_source--SetupIntent.retrieve.2.json | 29 + ...ayment_source--SetupIntent.retrieve.3.json | 29 + ...eplace_payment_source--Token.create.1.json | 33 - ...eplace_payment_source--Token.create.2.json | 33 - ...eplace_payment_source--Token.create.3.json | 33 - ...eplace_payment_source--Token.create.4.json | 33 - ...ent_source--checkout.Session.create.1.json | 46 + ...ent_source--checkout.Session.create.2.json | 38 + ...ent_source--checkout.Session.create.3.json | 38 + ...yment_source--checkout.Session.list.1.json | 53 + ...yment_source--checkout.Session.list.2.json | 45 + ...yment_source--checkout.Session.list.3.json | 45 + ...ent_session_errors--Customer.create.1.json | 30 + ...ent_session_errors--Customer.modify.1.json | 30 + ...ession_errors--PaymentIntent.create.1.json | 62 + ...ion_errors--checkout.Session.create.1.json | 46 + ...c_license_management--Charge.create.1.json | 117 -- ...license_management--Customer.create.1.json | 2 +- ...license_management--Customer.modify.1.json | 30 + ...license_management--Customer.modify.2.json | 30 + ...cense_management--Customer.retrieve.1.json | 63 +- ...cense_management--Customer.retrieve.2.json | 76 + ...atic_license_management--Event.list.1.json | 162 ++ ...atic_license_management--Event.list.2.json | 702 ++++++++ ...atic_license_management--Event.list.3.json | 1261 ++++++++++++++ ...atic_license_management--Event.list.4.json | 6 + ..._license_management--Invoice.create.1.json | 26 +- ..._license_management--Invoice.create.2.json | 17 +- ..._license_management--Invoice.create.3.json | 96 +- ..._license_management--Invoice.create.4.json | 17 +- ..._license_management--Invoice.create.5.json | 17 +- ...anagement--Invoice.finalize_invoice.1.json | 32 +- ...anagement--Invoice.finalize_invoice.2.json | 25 +- ...anagement--Invoice.finalize_invoice.3.json | 104 +- ...anagement--Invoice.finalize_invoice.4.json | 25 +- ...anagement--Invoice.finalize_invoice.5.json | 25 +- ...ic_license_management--Invoice.list.1.json | 476 +----- ...ic_license_management--Invoice.list.2.json | 288 +--- ...ic_license_management--Invoice.list.3.json | 311 ++-- ...ic_license_management--Invoice.list.4.json | 745 +++++++++ ...ense_management--InvoiceItem.create.1.json | 7 +- ...ense_management--InvoiceItem.create.2.json | 7 +- ...ense_management--InvoiceItem.create.3.json | 7 +- ...ense_management--InvoiceItem.create.4.json | 7 +- ...ense_management--InvoiceItem.create.5.json | 7 +- ...ense_management--InvoiceItem.create.6.json | 7 +- ...ense_management--InvoiceItem.create.7.json | 7 +- ...e_management--PaymentIntent.confirm.1.json | 166 ++ ...se_management--PaymentIntent.create.1.json | 62 + ...se_management--PaymentMethod.create.1.json | 47 + ...ense_management--SetupIntent.create.1.json | 39 + ...icense_management--SetupIntent.list.1.json | 46 + ...se_management--SetupIntent.retrieve.1.json | 39 + ...ic_license_management--Token.create.1.json | 33 - ...management--checkout.Session.create.1.json | 46 + ...e_management--checkout.Session.list.1.json | 53 + ...l_license_management--Charge.create.1.json | 117 -- ...license_management--Customer.create.1.json | 2 +- ...license_management--Customer.modify.1.json | 30 + ...license_management--Customer.modify.2.json | 30 + ...cense_management--Customer.retrieve.1.json | 63 +- ...cense_management--Customer.retrieve.2.json | 76 + ...nual_license_management--Event.list.1.json | 152 ++ ...nual_license_management--Event.list.2.json | 702 ++++++++ ...nual_license_management--Event.list.3.json | 1261 ++++++++++++++ ...nual_license_management--Event.list.4.json | 6 + ..._license_management--Invoice.create.1.json | 26 +- ..._license_management--Invoice.create.2.json | 17 +- ..._license_management--Invoice.create.3.json | 17 +- ...anagement--Invoice.finalize_invoice.1.json | 30 +- ...anagement--Invoice.finalize_invoice.2.json | 25 +- ...anagement--Invoice.finalize_invoice.3.json | 25 +- ...al_license_management--Invoice.list.1.json | 304 +--- ...al_license_management--Invoice.list.2.json | 176 +- ...al_license_management--Invoice.list.3.json | 441 +++++ ...ense_management--InvoiceItem.create.1.json | 7 +- ...ense_management--InvoiceItem.create.2.json | 7 +- ...ense_management--InvoiceItem.create.3.json | 7 +- ...ense_management--InvoiceItem.create.4.json | 7 +- ...e_management--PaymentIntent.confirm.1.json | 166 ++ ...se_management--PaymentIntent.create.1.json | 62 + ...se_management--PaymentMethod.create.1.json | 47 + ...ense_management--SetupIntent.create.1.json | 39 + ...icense_management--SetupIntent.list.1.json | 46 + ...se_management--SetupIntent.retrieve.1.json | 39 + ...al_license_management--Token.create.1.json | 33 - ...management--checkout.Session.create.1.json | 46 + ...e_management--checkout.Session.list.1.json | 53 + ..._from_billing_page--Customer.modify.1.json | 30 + ...rom_billing_page--Customer.retrieve.1.json | 97 +- ...rom_billing_page--Customer.retrieve.2.json | 97 +- ..._plan_from_billing_page--Event.list.1.json | 152 ++ ...n_from_billing_page--Invoice.create.1.json | 17 +- ...n_from_billing_page--Invoice.create.2.json | 26 +- ...n_from_billing_page--Invoice.create.3.json | 17 +- ...ling_page--Invoice.finalize_invoice.1.json | 25 +- ...ling_page--Invoice.finalize_invoice.2.json | 32 +- ...ling_page--Invoice.finalize_invoice.3.json | 25 +- ...lan_from_billing_page--Invoice.list.1.json | 55 +- ...lan_from_billing_page--Invoice.list.2.json | 78 +- ...om_billing_page--InvoiceItem.create.1.json | 7 +- ...om_billing_page--InvoiceItem.create.2.json | 7 +- ...om_billing_page--InvoiceItem.create.3.json | 7 +- ...om_billing_page--InvoiceItem.create.4.json | 7 +- .../upgrade_by_card--Charge.create.1.json | 117 -- .../upgrade_by_card--Charge.list.1.json | 60 +- .../upgrade_by_card--Customer.create.1.json | 2 +- .../upgrade_by_card--Customer.modify.1.json | 30 + .../upgrade_by_card--Customer.modify.2.json | 30 + .../upgrade_by_card--Customer.retrieve.1.json | 63 +- .../upgrade_by_card--Customer.retrieve.2.json | 107 +- .../upgrade_by_card--Customer.retrieve.3.json | 76 + .../upgrade_by_card--Event.list.1.json | 152 ++ .../upgrade_by_card--Event.list.2.json | 702 ++++++++ .../upgrade_by_card--Event.list.3.json | 1261 ++++++++++++++ .../upgrade_by_card--Event.list.4.json | 6 + .../upgrade_by_card--Invoice.create.1.json | 32 +- ...e_by_card--Invoice.finalize_invoice.1.json | 38 +- .../upgrade_by_card--Invoice.list.1.json | 175 +- .../upgrade_by_card--Invoice.list.2.json | 181 ++ ...upgrade_by_card--InvoiceItem.create.1.json | 9 +- ...upgrade_by_card--InvoiceItem.create.2.json | 9 +- ...rade_by_card--PaymentIntent.confirm.1.json | 166 ++ ...grade_by_card--PaymentIntent.create.1.json | 62 + ...grade_by_card--PaymentMethod.create.1.json | 47 + ...upgrade_by_card--SetupIntent.create.1.json | 39 + .../upgrade_by_card--SetupIntent.list.1.json | 46 + ...grade_by_card--SetupIntent.retrieve.1.json | 39 + .../upgrade_by_card--Token.create.1.json | 33 - ...de_by_card--checkout.Session.create.1.json | 46 + ...rade_by_card--checkout.Session.list.1.json | 53 + ..._outdated_seat_count--Charge.create.1.json | 117 -- ...th_outdated_seat_count--Charge.list.1.json | 60 +- ...utdated_seat_count--Customer.create.1.json | 2 +- ...utdated_seat_count--Customer.modify.1.json | 30 + ...utdated_seat_count--Customer.modify.2.json | 30 + ...dated_seat_count--Customer.retrieve.1.json | 30 + ...ith_outdated_seat_count--Event.list.1.json | 196 +++ ...ith_outdated_seat_count--Event.list.2.json | 702 ++++++++ ...ith_outdated_seat_count--Event.list.3.json | 946 +++++++++++ ...ith_outdated_seat_count--Event.list.4.json | 6 + ...outdated_seat_count--Invoice.create.1.json | 32 +- ...eat_count--Invoice.finalize_invoice.1.json | 40 +- ...h_outdated_seat_count--Invoice.list.1.json | 175 +- ...h_outdated_seat_count--Invoice.list.2.json | 181 ++ ...ated_seat_count--InvoiceItem.create.1.json | 9 +- ...ated_seat_count--InvoiceItem.create.2.json | 9 +- ...d_seat_count--PaymentIntent.confirm.1.json | 166 ++ ...ed_seat_count--PaymentIntent.create.1.json | 62 + ...ed_seat_count--PaymentMethod.create.1.json | 47 + ...ated_seat_count--SetupIntent.create.1.json | 39 + ...tdated_seat_count--SetupIntent.list.1.json | 46 + ...ed_seat_count--SetupIntent.retrieve.1.json | 39 + ...h_outdated_seat_count--Token.create.1.json | 33 - ...seat_count--checkout.Session.create.1.json | 46 + ...d_seat_count--checkout.Session.list.1.json | 53 + ...upgrade_by_invoice--Customer.modify.1.json | 30 + ...grade_by_invoice--Customer.retrieve.1.json | 97 +- ...grade_by_invoice--Customer.retrieve.2.json | 97 +- .../upgrade_by_invoice--Event.list.1.json | 196 +++ .../upgrade_by_invoice--Invoice.create.1.json | 21 +- ...y_invoice--Invoice.finalize_invoice.1.json | 27 +- .../upgrade_by_invoice--Invoice.list.1.json | 27 +- ...rade_by_invoice--InvoiceItem.create.1.json | 9 +- ...restart_from_begining--Charge.list.1.json} | 62 +- ...restart_from_begining--Charge.list.2.json} | 124 +- ...tart_from_begining--Customer.create.1.json | 30 + ...tart_from_begining--Customer.modify.1.json | 30 + ...tart_from_begining--Customer.modify.2.json | 30 + ...tart_from_begining--Customer.modify.3.json | 30 + ...rt_from_begining--Customer.retrieve.1.json | 30 + ...rt_from_begining--Customer.retrieve.2.json | 76 + ...rt_from_begining--Customer.retrieve.3.json | 30 + ...d_restart_from_begining--Event.list.1.json | 61 + ...d_restart_from_begining--Event.list.2.json | 756 +++++++++ ...d_restart_from_begining--Event.list.3.json | 6 + ...d_restart_from_begining--Event.list.4.json | 242 +++ ...d_restart_from_begining--Event.list.5.json | 657 ++++++++ ...d_restart_from_begining--Event.list.6.json | 1261 ++++++++++++++ ...d_restart_from_begining--Event.list.7.json | 6 + ...tart_from_begining--Invoice.create.1.json} | 6 +- ...begining--Invoice.finalize_invoice.1.json} | 12 +- ...restart_from_begining--Invoice.list.1.json | 6 + ...restart_from_begining--Invoice.list.2.json | 6 + ...restart_from_begining--Invoice.list.3.json | 6 + ...estart_from_begining--Invoice.list.4.json} | 12 +- ..._from_begining--InvoiceItem.create.1.json} | 1 + ..._from_begining--InvoiceItem.create.2.json} | 1 + ...rt_from_begining--InvoiceItem.list.1.json} | 0 ...rom_begining--PaymentIntent.confirm.1.json | 577 +++++++ ...rom_begining--PaymentIntent.confirm.2.json | 166 ++ ...from_begining--PaymentIntent.create.1.json | 62 + ...from_begining--PaymentIntent.create.2.json | 62 + ...from_begining--PaymentMethod.create.1.json | 47 + ...from_begining--PaymentMethod.create.2.json | 47 + ...t_from_begining--SetupIntent.create.1.json | 39 + ...t_from_begining--SetupIntent.create.2.json | 39 + ...art_from_begining--SetupIntent.list.1.json | 46 + ...art_from_begining--SetupIntent.list.2.json | 46 + ...from_begining--SetupIntent.retrieve.1.json | 39 + ...from_begining--SetupIntent.retrieve.2.json | 39 + ...m_begining--checkout.Session.create.1.json | 46 + ...m_begining--checkout.Session.create.2.json | 46 + ...rom_begining--checkout.Session.list.1.json | 53 + ...rom_begining--checkout.Session.list.2.json | 53 + ...starting_from_begining--Charge.list.1.json | 110 ++ ...starting_from_begining--Charge.list.2.json | 213 +++ ...ting_from_begining--Customer.create.1.json | 30 + ...ting_from_begining--Customer.modify.1.json | 30 + ...ting_from_begining--Customer.modify.2.json | 30 + ...ting_from_begining--Customer.modify.3.json | 30 + ...ng_from_begining--Customer.retrieve.1.json | 30 + ...ng_from_begining--Customer.retrieve.2.json | 76 + ...ng_from_begining--Customer.retrieve.3.json | 30 + ..._starting_from_begining--Event.list.1.json | 196 +++ ..._starting_from_begining--Event.list.2.json | 756 +++++++++ ..._starting_from_begining--Event.list.3.json | 6 + ..._starting_from_begining--Event.list.4.json | 242 +++ ..._starting_from_begining--Event.list.5.json | 580 +++++++ ..._starting_from_begining--Event.list.6.json | 1261 ++++++++++++++ ..._starting_from_begining--Event.list.7.json | 6 + ...rting_from_begining--Invoice.create.1.json | 174 ++ ..._begining--Invoice.finalize_invoice.1.json | 174 ++ ...tarting_from_begining--Invoice.list.1.json | 6 + ...tarting_from_begining--Invoice.list.2.json | 6 + ...tarting_from_begining--Invoice.list.3.json | 6 + ...tarting_from_begining--Invoice.list.4.json | 181 ++ ...g_from_begining--InvoiceItem.create.1.json | 45 + ...g_from_begining--InvoiceItem.create.2.json | 45 + ...ing_from_begining--InvoiceItem.list.1.json | 6 + ...rom_begining--PaymentIntent.confirm.1.json | 577 +++++++ ...rom_begining--PaymentIntent.confirm.2.json | 166 ++ ...from_begining--PaymentIntent.create.1.json | 62 + ...om_begining--PaymentIntent.retrieve.1.json | 220 +++ ...om_begining--PaymentIntent.retrieve.2.json | 166 ++ ...from_begining--PaymentMethod.create.1.json | 47 + ...from_begining--PaymentMethod.create.2.json | 47 + ...g_from_begining--SetupIntent.create.1.json | 39 + ...g_from_begining--SetupIntent.create.2.json | 39 + ...ing_from_begining--SetupIntent.list.1.json | 46 + ...ing_from_begining--SetupIntent.list.2.json | 46 + ...from_begining--SetupIntent.retrieve.1.json | 39 + ...from_begining--SetupIntent.retrieve.2.json | 39 + ...m_begining--checkout.Session.create.1.json | 46 + ...m_begining--checkout.Session.create.2.json | 46 + ...rom_begining--checkout.Session.list.1.json | 53 + ...rom_begining--checkout.Session.list.2.json | 53 + ...uring_card_upgrade--Customer.create.1.json | 30 + ...uring_card_upgrade--Customer.modify.1.json | 30 + ...uring_card_upgrade--Customer.modify.2.json | 30 + ...ing_card_upgrade--Customer.retrieve.1.json | 30 + ...ing_card_upgrade--Customer.retrieve.2.json | 30 + ...ing_card_upgrade--Customer.retrieve.3.json | 30 + ...ion_during_card_upgrade--Event.list.1.json | 61 + ...ion_during_card_upgrade--Event.list.2.json | 657 ++++++++ ...ion_during_card_upgrade--Event.list.3.json | 1261 ++++++++++++++ ...ion_during_card_upgrade--Event.list.4.json | 6 + ...ion_during_card_upgrade--Event.list.5.json | 188 +++ ...during_card_upgrade--Invoice.create.1.json | 174 ++ ...during_card_upgrade--Invoice.create.2.json | 130 ++ ...d_upgrade--Invoice.finalize_invoice.1.json | 174 ++ ...d_upgrade--Invoice.finalize_invoice.2.json | 130 ++ ...n_during_card_upgrade--Invoice.list.1.json | 6 + ...n_during_card_upgrade--Invoice.list.2.json | 311 ++++ ...ng_card_upgrade--InvoiceItem.create.1.json | 45 + ...ng_card_upgrade--InvoiceItem.create.2.json | 45 + ...ng_card_upgrade--InvoiceItem.create.3.json | 45 + ...card_upgrade--PaymentIntent.confirm.1.json | 166 ++ ...card_upgrade--PaymentIntent.confirm.2.json | 166 ++ ..._card_upgrade--PaymentIntent.create.1.json | 62 + ..._card_upgrade--PaymentIntent.create.2.json | 62 + ...ng_card_upgrade--PaymentIntent.list.1.json | 69 + ..._card_upgrade--PaymentMethod.create.1.json | 47 + ..._card_upgrade--PaymentMethod.create.2.json | 47 + ...ng_card_upgrade--SetupIntent.create.1.json | 39 + ...ng_card_upgrade--SetupIntent.create.2.json | 39 + ...ring_card_upgrade--SetupIntent.list.1.json | 46 + ...ring_card_upgrade--SetupIntent.list.2.json | 46 + ..._card_upgrade--SetupIntent.retrieve.1.json | 39 + ..._card_upgrade--SetupIntent.retrieve.2.json | 39 + ...rd_upgrade--checkout.Session.create.1.json | 46 + ...rd_upgrade--checkout.Session.create.2.json | 46 + ...card_upgrade--checkout.Session.list.1.json | 53 + ...card_upgrade--checkout.Session.list.2.json | 53 + ...ere_first_card_fails--Charge.create.1.json | 51 - ...ere_first_card_fails--Charge.create.2.json | 117 -- ...first_card_fails--Customer.retrieve.1.json | 87 - ...first_card_fails--Customer.retrieve.2.json | 87 - ...here_first_card_fails--Token.create.1.json | 33 - ...here_first_card_fails--Token.create.2.json | 33 - ..._all_open_invoices--Customer.modify.1.json | 30 + ..._all_open_invoices--Customer.modify.2.json | 30 + ...d_all_open_invoices--Invoice.create.1.json | 5 +- ...d_all_open_invoices--Invoice.create.2.json | 5 +- ..._invoices--Invoice.finalize_invoice.1.json | 7 +- ..._invoices--Invoice.finalize_invoice.2.json | 9 +- ...oid_all_open_invoices--Invoice.list.1.json | 7 +- ...oid_all_open_invoices--Invoice.list.3.json | 7 +- ...oid_all_open_invoices--Invoice.list.4.json | 7 +- ...oid_all_open_invoices--Invoice.list.6.json | 7 +- ...open_invoices--Invoice.void_invoice.1.json | 7 +- ...open_invoices--Invoice.void_invoice.2.json | 7 +- ...l_open_invoices--InvoiceItem.create.1.json | 1 + ...l_open_invoices--InvoiceItem.create.2.json | 1 + corporate/tests/test_stripe.py | 1457 ++++++++++++++--- corporate/urls.py | 19 +- corporate/views/billing_page.py | 31 +- corporate/views/event_status.py | 63 + corporate/views/session.py | 95 ++ corporate/views/upgrade.py | 159 +- corporate/views/webhook.py | 98 ++ docs/subsystems/billing.md | 64 +- frontend_tests/node_tests/billing.js | 109 +- frontend_tests/node_tests/billing_helpers.js | 23 +- frontend_tests/node_tests/event_status.js | 345 ++++ frontend_tests/node_tests/upgrade.js | 43 +- static/js/billing/billing.js | 48 +- static/js/billing/event_status.js | 165 ++ static/js/billing/helpers.js | 4 - static/js/billing/upgrade.js | 48 +- static/styles/portico/billing.css | 18 +- stubs/stripe/__init__.pyi | 142 +- stubs/stripe/checkout/__init__.pyi | 22 + stubs/stripe/error/__init__.pyi | 2 + templates/corporate/billing.html | 9 +- templates/corporate/event_status.html | 52 + templates/corporate/upgrade.html | 12 +- tools/linter_lib/custom_check.py | 1 + tools/test-js-with-node | 1 + tools/webpack.assets.json | 7 + 693 files changed, 60248 insertions(+), 9126 deletions(-) create mode 100644 corporate/lib/stripe_event_handler.py create mode 100644 corporate/migrations/0015_event_paymentintent_session.py delete mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.1.json delete mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.2.json rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Customer.save.1.json => attach_discount_to_realm--Customer.modify.1.json} (92%) create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.2.json rename corporate/tests/stripe_fixtures/{attach_discount_to_realm--Customer.save.1.json => attach_discount_to_realm--Customer.modify.3.json} (86%) create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.5.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.6.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.7.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.8.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.4.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.5.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.2.json delete mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.1.json delete mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.2.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.2.json delete mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Charge.create.1.json rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Customer.create.1.json => billing_page_permissions--Customer.modify.1.json} (92%) create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.3.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.4.json rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Invoice.list.1.json => billing_page_permissions--Invoice.list.1.json} (100%) create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.2.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.3.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.4.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.5.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.6.json create mode 100644 corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.7.json create mode 100644 corporate/tests/stripe_fixtures/fixed_price_plans--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/fixed_price_plans--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.4.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.7.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Charge.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Event.list.1.json delete mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Charge.create.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/invoice_plan--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Invoice.list.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--InvoiceItem.create.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.3.json rename corporate/tests/stripe_fixtures/{replace_payment_source--Customer.save.3.json => replace_payment_method--Customer.retrieve.4.json} (92%) rename corporate/tests/stripe_fixtures/{replace_payment_source--Customer.save.2.json => replace_payment_method--Customer.retrieve.5.json} (88%) create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.6.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.3.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Charge.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.4.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.6.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.3.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Token.create.1.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Token.create.2.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Token.create.3.json delete mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--Token.create.4.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.3.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.2.json create mode 100644 corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.3.json create mode 100644 corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--checkout.Session.create.1.json delete mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Charge.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.4.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.list.1.json delete mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Charge.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.3.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Event.list.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Charge.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.list.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Token.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_by_invoice--Event.list.1.json rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Charge.list.1.json => upgrade_first_card_fails_and_restart_from_begining--Charge.list.1.json} (63%) rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Charge.list.2.json => upgrade_first_card_fails_and_restart_from_begining--Charge.list.2.json} (64%) create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.5.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.6.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.7.json rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Invoice.create.1.json => upgrade_first_card_fails_and_restart_from_begining--Invoice.create.1.json} (96%) rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Invoice.finalize_invoice.1.json => upgrade_first_card_fails_and_restart_from_begining--Invoice.finalize_invoice.1.json} (94%) create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.3.json rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--Invoice.list.2.json => upgrade_first_card_fails_and_restart_from_begining--Invoice.list.4.json} (94%) rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--InvoiceItem.create.1.json => upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.1.json} (96%) rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--InvoiceItem.create.2.json => upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.2.json} (96%) rename corporate/tests/stripe_fixtures/{upgrade_where_first_card_fails--InvoiceItem.list.1.json => upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.list.1.json} (100%) create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.5.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.6.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.7.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.finalize_invoice.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.4.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.4.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.5.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.3.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.2.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.1.json create mode 100644 corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.2.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.2.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.2.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.1.json delete mode 100644 corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.2.json create mode 100644 corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.1.json create mode 100644 corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.2.json create mode 100644 corporate/views/event_status.py create mode 100644 corporate/views/session.py create mode 100644 corporate/views/webhook.py create mode 100644 frontend_tests/node_tests/event_status.js create mode 100644 static/js/billing/event_status.js create mode 100644 stubs/stripe/checkout/__init__.pyi create mode 100644 templates/corporate/event_status.html diff --git a/corporate/lib/stripe.py b/corporate/lib/stripe.py index 3402ac5a46..10732b8dff 100644 --- a/corporate/lib/stripe.py +++ b/corporate/lib/stripe.py @@ -34,7 +34,6 @@ from zerver.lib.utils import assert_is_not_none from zerver.models import Realm, RealmAuditLog, UserProfile, get_system_bot from zproject.config import get_secret -STRIPE_PUBLISHABLE_KEY = get_secret("stripe_publishable_key") stripe.api_key = get_secret("stripe_secret_key") BILLING_LOG_PATH = os.path.join( @@ -223,6 +222,14 @@ class StripeConnectionError(BillingError): pass +class UpgradeWithExistingPlanError(BillingError): + def __init__(self) -> None: + super().__init__( + "subscribing with existing subscription", + "The organization is already subscribed to a plan. Please reload the billing page.", + ) + + class InvalidBillingSchedule(Exception): def __init__(self, billing_schedule: int) -> None: self.message = f"Unknown billing_schedule: {billing_schedule}" @@ -238,13 +245,6 @@ class InvalidTier(Exception): def catch_stripe_errors(func: CallableT) -> CallableT: @wraps(func) def wrapped(*args: object, **kwargs: object) -> object: - if settings.DEVELOPMENT and not settings.TEST_SUITE: # nocoverage - if STRIPE_PUBLISHABLE_KEY is None: - raise BillingError( - "missing stripe config", - "Missing Stripe config. " - "See https://zulip.readthedocs.io/en/latest/subsystems/billing.html.", - ) try: return func(*args, **kwargs) # See https://stripe.com/docs/api/python#error_handling, though @@ -283,11 +283,13 @@ def catch_stripe_errors(func: CallableT) -> CallableT: @catch_stripe_errors def stripe_get_customer(stripe_customer_id: str) -> stripe.Customer: - return stripe.Customer.retrieve(stripe_customer_id, expand=["default_source", "sources"]) + return stripe.Customer.retrieve( + stripe_customer_id, expand=["invoice_settings", "invoice_settings.default_payment_method"] + ) @catch_stripe_errors -def do_create_stripe_customer(user: UserProfile, stripe_token: Optional[str] = None) -> Customer: +def do_create_stripe_customer(user: UserProfile, payment_method: Optional[str] = None) -> Customer: realm = user.realm # We could do a better job of handling race conditions here, but if two # people from a realm try to upgrade at exactly the same time, the main @@ -297,7 +299,10 @@ def do_create_stripe_customer(user: UserProfile, stripe_token: Optional[str] = N description=f"{realm.string_id} ({realm.name})", email=user.delivery_email, metadata={"realm_id": realm.id, "realm_str": realm.string_id}, - source=stripe_token, + payment_method=payment_method, + ) + stripe.Customer.modify( + stripe_customer.id, invoice_settings={"default_payment_method": payment_method} ) event_time = timestamp_to_datetime(stripe_customer.created) with transaction.atomic(): @@ -307,7 +312,7 @@ def do_create_stripe_customer(user: UserProfile, stripe_token: Optional[str] = N event_type=RealmAuditLog.STRIPE_CUSTOMER_CREATED, event_time=event_time, ) - if stripe_token is not None: + if payment_method is not None: RealmAuditLog.objects.create( realm=user.realm, acting_user=user, @@ -324,17 +329,17 @@ def do_create_stripe_customer(user: UserProfile, stripe_token: Optional[str] = N @catch_stripe_errors -def do_replace_payment_source( - user: UserProfile, stripe_token: str, pay_invoices: bool = False -) -> stripe.Customer: +def do_replace_payment_method( + user: UserProfile, payment_method: str, pay_invoices: bool = False +) -> None: customer = get_customer_by_realm(user.realm) assert customer is not None # for mypy assert customer.stripe_customer_id is not None # for mypy - stripe_customer = stripe_get_customer(customer.stripe_customer_id) - stripe_customer.source = stripe_token - # Deletes existing card: https://stripe.com/docs/api#update_customer-source - updated_stripe_customer = stripe.Customer.save(stripe_customer) + stripe.Customer.modify( + customer.stripe_customer_id, invoice_settings={"default_payment_method": payment_method} + ) + RealmAuditLog.objects.create( realm=user.realm, acting_user=user, @@ -343,27 +348,30 @@ def do_replace_payment_source( ) if pay_invoices: for stripe_invoice in stripe.Invoice.list( - collection_method="charge_automatically", customer=stripe_customer.id, status="open" + collection_method="charge_automatically", + customer=customer.stripe_customer_id, + status="open", ): # The user will get either a receipt or a "failed payment" email, but the in-app # messaging could be clearer here (e.g. it could explicitly tell the user that there # were payment(s) and that they succeeded or failed). # Worth fixing if we notice that a lot of cards end up failing at this step. stripe.Invoice.pay(stripe_invoice) - return updated_stripe_customer -def stripe_customer_has_credit_card_as_default_source(stripe_customer: stripe.Customer) -> bool: - if not stripe_customer.default_source: +def stripe_customer_has_credit_card_as_default_payment_method( + stripe_customer: stripe.Customer, +) -> bool: + if not stripe_customer.invoice_settings.default_payment_method: return False - return stripe_customer.default_source.object == "card" + return stripe_customer.invoice_settings.default_payment_method.type == "card" -def customer_has_credit_card_as_default_source(customer: Customer) -> bool: +def customer_has_credit_card_as_default_payment_method(customer: Customer) -> bool: if not customer.stripe_customer_id: return False stripe_customer = stripe_get_customer(customer.stripe_customer_id) - return stripe_customer_has_credit_card_as_default_source(stripe_customer) + return stripe_customer_has_credit_card_as_default_payment_method(stripe_customer) # event_time should roughly be timezone_now(). Not designed to handle @@ -508,15 +516,16 @@ def make_end_of_cycle_updates_if_needed( # Returns Customer instead of stripe_customer so that we don't make a Stripe # API call if there's nothing to update +@catch_stripe_errors def update_or_create_stripe_customer( - user: UserProfile, stripe_token: Optional[str] = None + user: UserProfile, payment_method: Optional[str] = None ) -> Customer: realm = user.realm customer = get_customer_by_realm(realm) if customer is None or customer.stripe_customer_id is None: - return do_create_stripe_customer(user, stripe_token=stripe_token) - if stripe_token is not None: - do_replace_payment_source(user, stripe_token) + return do_create_stripe_customer(user, payment_method=payment_method) + if payment_method is not None: + do_replace_payment_method(user, payment_method, True) return customer @@ -595,6 +604,18 @@ def is_free_trial_offer_enabled() -> bool: return settings.FREE_TRIAL_DAYS not in (None, 0) +def ensure_realm_does_not_have_active_plan(realm: Customer) -> None: + if get_current_plan_by_realm(realm) is not None: + # Unlikely race condition from two people upgrading (clicking "Make payment") + # at exactly the same time. Doesn't fully resolve the race condition, but having + # a check here reduces the likelihood. + billing_logger.warning( + "Upgrade of %s failed because of existing active plan.", + realm.string_id, + ) + raise UpgradeWithExistingPlanError() + + # Only used for cloud signups @catch_stripe_errors def process_initial_upgrade( @@ -602,27 +623,13 @@ def process_initial_upgrade( licenses: int, automanage_licenses: bool, billing_schedule: int, - stripe_token: Optional[str], + charge_automatically: bool, + free_trial: bool, ) -> None: realm = user.realm - customer = update_or_create_stripe_customer(user, stripe_token=stripe_token) + customer = update_or_create_stripe_customer(user) assert customer.stripe_customer_id is not None # for mypy - - charge_automatically = stripe_token is not None - free_trial = is_free_trial_offer_enabled() - - if get_current_plan_by_customer(customer) is not None: - # Unlikely race condition from two people upgrading (clicking "Make payment") - # at exactly the same time. Doesn't fully resolve the race condition, but having - # a check here reduces the likelihood. - billing_logger.warning( - "Customer %s trying to upgrade, but has an active subscription", - customer, - ) - raise BillingError( - "subscribing with existing subscription", str(BillingError.TRY_RELOADING) - ) - + ensure_realm_does_not_have_active_plan(customer.realm) ( billing_cycle_anchor, next_invoice_date, @@ -635,32 +642,6 @@ def process_initial_upgrade( customer.default_discount, free_trial, ) - # The main design constraint in this function is that if you upgrade with a credit card, and the - # charge fails, everything should be rolled back as if nothing had happened. This is because we - # expect frequent card failures on initial signup. - # Hence, if we're going to charge a card, do it at the beginning, even if we later may have to - # adjust the number of licenses. - if charge_automatically: - if not free_trial: - stripe_charge = stripe.Charge.create( - amount=price_per_license * licenses, - currency="usd", - customer=customer.stripe_customer_id, - description=f"Upgrade to Zulip Standard, ${price_per_license/100} x {licenses}", - receipt_email=user.delivery_email, - statement_descriptor="Zulip Standard", - ) - # Not setting a period start and end, but maybe we should? Unclear what will make things - # most similar to the renewal case from an accounting perspective. - assert isinstance(stripe_charge.source, stripe.Card) - description = f"Payment (Card ending in {stripe_charge.source.last4})" - stripe.InvoiceItem.create( - amount=price_per_license * licenses * -1, - currency="usd", - customer=customer.stripe_customer_id, - description=description, - discountable=False, - ) # TODO: The correctness of this relies on user creation, deactivation, etc being # in a transaction.atomic() with the relevant RealmAuditLog entries diff --git a/corporate/lib/stripe_event_handler.py b/corporate/lib/stripe_event_handler.py new file mode 100644 index 0000000000..d9e5668afc --- /dev/null +++ b/corporate/lib/stripe_event_handler.py @@ -0,0 +1,176 @@ +import logging +from typing import Any, Callable, Union + +import stripe +from django.conf import settings + +from corporate.lib.stripe import ( + BillingError, + UpgradeWithExistingPlanError, + ensure_realm_does_not_have_active_plan, + process_initial_upgrade, + update_or_create_stripe_customer, +) +from corporate.models import Event, PaymentIntent, Session +from zerver.models import get_user_by_delivery_email + +billing_logger = logging.getLogger("corporate.stripe") + + +def error_handler( + func: Callable[[Any, Any], None], +) -> Callable[[Union[stripe.checkout.Session, stripe.PaymentIntent], Event], None]: + def wrapper( + stripe_object: Union[stripe.checkout.Session, stripe.PaymentIntent], event: Event + ) -> None: + event.status = Event.EVENT_HANDLER_STARTED + event.save(update_fields=["status"]) + + try: + func(stripe_object, event.content_object) + except BillingError as e: + billing_logger.warning( + "BillingError in %s event handler: %s. stripe_object_id=%s, customer_id=%s metadata=%s", + event.type, + e.error_description, + stripe_object.id, + stripe_object.customer, + stripe_object.metadata, + ) + event.status = Event.EVENT_HANDLER_FAILED + event.handler_error = { + "message": e.msg, + "description": e.error_description, + } + event.save(update_fields=["status", "handler_error"]) + except Exception: + billing_logger.exception( + "Uncaught exception in %s event handler:", + event.type, + stack_info=True, + ) + event.status = Event.EVENT_HANDLER_FAILED + event.handler_error = { + "description": f"uncaught exception in {event.type} event handler", + "message": BillingError.CONTACT_SUPPORT.format(email=settings.ZULIP_ADMINISTRATOR), + } + event.save(update_fields=["status", "handler_error"]) + else: + event.status = Event.EVENT_HANDLER_SUCCEEDED + event.save() + + return wrapper + + +@error_handler +def handle_checkout_session_completed_event( + stripe_session: stripe.checkout.Session, session: Session +) -> None: + session.status = Session.COMPLETED + session.save() + + stripe_setup_intent = stripe.SetupIntent.retrieve(stripe_session.setup_intent) + stripe_customer = stripe.Customer.retrieve(stripe_setup_intent.customer) + user = get_user_by_delivery_email(stripe_customer.email, session.customer.realm) + payment_method = stripe_setup_intent.payment_method + + if session.type in [ + Session.UPGRADE_FROM_BILLING_PAGE, + Session.RETRY_UPGRADE_WITH_ANOTHER_PAYMENT_METHOD, + ]: + ensure_realm_does_not_have_active_plan(user.realm) + update_or_create_stripe_customer(user, payment_method) + session.payment_intent.status = PaymentIntent.PROCESSING + session.payment_intent.last_payment_error = () + session.payment_intent.save(update_fields=["status", "last_payment_error"]) + try: + stripe.PaymentIntent.confirm( + session.payment_intent.stripe_payment_intent_id, + payment_method=payment_method, + off_session=True, + ) + except stripe.error.CardError: + pass + elif session.type in [ + Session.FREE_TRIAL_UPGRADE_FROM_BILLING_PAGE, + Session.FREE_TRIAL_UPGRADE_FROM_ONBOARDING_PAGE, + ]: + ensure_realm_does_not_have_active_plan(user.realm) + update_or_create_stripe_customer(user, payment_method) + process_initial_upgrade( + user, + int(stripe_setup_intent.metadata["licenses"]), + stripe_setup_intent.metadata["license_management"] == "automatic", + int(stripe_setup_intent.metadata["billing_schedule"]), + charge_automatically=True, + free_trial=True, + ) + elif session.type in [Session.CARD_UPDATE_FROM_BILLING_PAGE]: + update_or_create_stripe_customer(user, payment_method) + + +@error_handler +def handle_payment_intent_succeeded_event( + stripe_payment_intent: stripe.PaymentIntent, payment_intent: PaymentIntent +) -> None: + payment_intent.status = PaymentIntent.SUCCEEDED + payment_intent.save() + metadata = stripe_payment_intent.metadata + user = get_user_by_delivery_email(metadata["user_email"], payment_intent.customer.realm) + + description = "" + for charge in stripe_payment_intent.charges: + description = f"Payment (Card ending in {charge.payment_method_details.card.last4})" + break + + stripe.InvoiceItem.create( + amount=stripe_payment_intent.amount * -1, + currency="usd", + customer=stripe_payment_intent.customer, + description=description, + discountable=False, + ) + try: + ensure_realm_does_not_have_active_plan(user.realm) + except UpgradeWithExistingPlanError as e: + stripe_invoice = stripe.Invoice.create( + auto_advance=True, + collection_method="charge_automatically", + customer=stripe_payment_intent.customer, + days_until_due=None, + statement_descriptor="Zulip Standard Credit", + ) + stripe.Invoice.finalize_invoice(stripe_invoice) + raise e + + process_initial_upgrade( + user, + int(metadata["licenses"]), + metadata["license_management"] == "automatic", + int(metadata["billing_schedule"]), + True, + False, + ) + + +@error_handler +def handle_payment_intent_payment_failed_event( + stripe_payment_intent: stripe.PaymentIntent, payment_intent: Event +) -> None: + payment_intent.status = PaymentIntent.get_status_integer_from_status_text( + stripe_payment_intent.status + ) + billing_logger.info( + "Stripe payment intent failed: %s %s %s %s", + payment_intent.customer.realm.string_id, + stripe_payment_intent.last_payment_error.get("type"), + stripe_payment_intent.last_payment_error.get("code"), + stripe_payment_intent.last_payment_error.get("param"), + ) + payment_intent.last_payment_error = { + "description": stripe_payment_intent.last_payment_error.get("type"), + } + payment_intent.last_payment_error["message"] = stripe_payment_intent.last_payment_error.get( + "message" + ) + payment_intent.save(update_fields=["status", "last_payment_error"]) diff --git a/corporate/migrations/0015_event_paymentintent_session.py b/corporate/migrations/0015_event_paymentintent_session.py new file mode 100644 index 0000000000..ba0404eba5 --- /dev/null +++ b/corporate/migrations/0015_event_paymentintent_session.py @@ -0,0 +1,85 @@ +# Generated by Django 3.2.9 on 2021-11-04 16:23 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("contenttypes", "0002_remove_content_type_name"), + ("corporate", "0014_customerplan_end_date"), + ] + + operations = [ + migrations.CreateModel( + name="PaymentIntent", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("stripe_payment_intent_id", models.CharField(max_length=255, unique=True)), + ("status", models.SmallIntegerField()), + ("last_payment_error", models.JSONField(default=None, null=True)), + ( + "customer", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="corporate.customer" + ), + ), + ], + ), + migrations.CreateModel( + name="Session", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("stripe_session_id", models.CharField(max_length=255, unique=True)), + ("type", models.SmallIntegerField()), + ("status", models.SmallIntegerField(default=1)), + ( + "customer", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="corporate.customer" + ), + ), + ( + "payment_intent", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="corporate.paymentintent", + ), + ), + ], + ), + migrations.CreateModel( + name="Event", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("stripe_event_id", models.CharField(max_length=255)), + ("type", models.CharField(max_length=255)), + ("status", models.SmallIntegerField(default=1)), + ("object_id", models.PositiveIntegerField(db_index=True)), + ("handler_error", models.JSONField(default=None, null=True)), + ( + "content_type", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="contenttypes.contenttype" + ), + ), + ], + ), + ] diff --git a/corporate/models.py b/corporate/models.py index 06dd0b003d..fa0c20ece4 100644 --- a/corporate/models.py +++ b/corporate/models.py @@ -1,7 +1,9 @@ import datetime from decimal import Decimal -from typing import Optional +from typing import Any, Dict, Optional, Union +from django.contrib.contenttypes.fields import GenericForeignKey +from django.contrib.contenttypes.models import ContentType from django.db import models from django.db.models import CASCADE @@ -36,6 +38,141 @@ def get_customer_by_realm(realm: Realm) -> Optional[Customer]: return Customer.objects.filter(realm=realm).first() +class Event(models.Model): + stripe_event_id = models.CharField(max_length=255) + + type = models.CharField(max_length=255) + + RECEIVED = 1 + EVENT_HANDLER_STARTED = 30 + EVENT_HANDLER_FAILED = 40 + EVENT_HANDLER_SUCCEEDED = 50 + status = models.SmallIntegerField(default=RECEIVED) + + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + object_id = models.PositiveIntegerField(db_index=True) + content_object = GenericForeignKey("content_type", "object_id") + + handler_error = models.JSONField(default=None, null=True) + + def get_event_handler_details_as_dict(self) -> Dict[str, Any]: + details_dict = {} + details_dict["status"] = { + Event.RECEIVED: "not_started", + Event.EVENT_HANDLER_STARTED: "started", + Event.EVENT_HANDLER_FAILED: "failed", + Event.EVENT_HANDLER_SUCCEEDED: "succeeded", + }[self.status] + if self.handler_error: + details_dict["error"] = self.handler_error + return details_dict + + +def get_last_associated_event_by_type( + content_object: Union["PaymentIntent", "Session"], event_type: str +) -> Optional[Event]: + content_type = ContentType.objects.get_for_model(type(content_object)) + return Event.objects.filter( + content_type=content_type, object_id=content_object.id, type=event_type + ).last() + + +class Session(models.Model): + customer: Customer = models.ForeignKey(Customer, on_delete=CASCADE) + stripe_session_id: str = models.CharField(max_length=255, unique=True) + payment_intent = models.ForeignKey("PaymentIntent", null=True, on_delete=CASCADE) + + UPGRADE_FROM_BILLING_PAGE = 1 + RETRY_UPGRADE_WITH_ANOTHER_PAYMENT_METHOD = 10 + FREE_TRIAL_UPGRADE_FROM_BILLING_PAGE = 20 + FREE_TRIAL_UPGRADE_FROM_ONBOARDING_PAGE = 30 + CARD_UPDATE_FROM_BILLING_PAGE = 40 + type: int = models.SmallIntegerField() + + CREATED = 1 + COMPLETED = 10 + status: int = models.SmallIntegerField(default=CREATED) + + def get_status_as_string(self) -> str: + return {Session.CREATED: "created", Session.COMPLETED: "completed"}[self.status] + + def get_type_as_string(self) -> str: + return { + Session.UPGRADE_FROM_BILLING_PAGE: "upgrade_from_billing_page", + Session.RETRY_UPGRADE_WITH_ANOTHER_PAYMENT_METHOD: "retry_upgrade_with_another_payment_method", + Session.FREE_TRIAL_UPGRADE_FROM_BILLING_PAGE: "free_trial_upgrade_from_billing_page", + Session.FREE_TRIAL_UPGRADE_FROM_ONBOARDING_PAGE: "free_trial_upgrade_from_onboarding_page", + Session.CARD_UPDATE_FROM_BILLING_PAGE: "card_update_from_billing_page", + }[self.type] + + def to_dict(self) -> Dict[str, Any]: + session_dict: Dict[str, Any] = {} + + session_dict["status"] = self.get_status_as_string() + session_dict["type"] = self.get_type_as_string() + if self.payment_intent: + session_dict["stripe_payment_intent_id"] = self.payment_intent.stripe_payment_intent_id + event = self.get_last_associated_event() + if event is not None: + session_dict["event_handler"] = event.get_event_handler_details_as_dict() + return session_dict + + def get_last_associated_event(self) -> Optional[Event]: + if self.status == Session.CREATED: + return None + return get_last_associated_event_by_type(self, "checkout.session.completed") + + +class PaymentIntent(models.Model): + customer: Customer = models.ForeignKey(Customer, on_delete=CASCADE) + stripe_payment_intent_id: str = models.CharField(max_length=255, unique=True) + + REQUIRES_PAYMENT_METHOD = 1 + REQUIRES_CONFIRMATION = 20 + REQUIRES_ACTION = 30 + PROCESSING = 40 + REQUIRES_CAPTURE = 50 + CANCELLED = 60 + SUCCEEDED = 70 + + status: int = models.SmallIntegerField() + last_payment_error = models.JSONField(default=None, null=True) + + @classmethod + def get_status_integer_from_status_text(cls, status_text: str) -> int: + return getattr(cls, status_text.upper()) + + def get_status_as_string(self) -> str: + return { + PaymentIntent.REQUIRES_PAYMENT_METHOD: "requires_payment_method", + PaymentIntent.REQUIRES_CONFIRMATION: "requires_confirmation", + PaymentIntent.REQUIRES_ACTION: "requires_action", + PaymentIntent.PROCESSING: "processing", + PaymentIntent.REQUIRES_CAPTURE: "requires_capture", + PaymentIntent.CANCELLED: "cancelled", + PaymentIntent.SUCCEEDED: "succeeded", + }[self.status] + + def get_last_associated_event(self) -> Optional[Event]: + if self.status == PaymentIntent.SUCCEEDED: + event_type = "payment_intent.succeeded" + elif self.status == PaymentIntent.REQUIRES_PAYMENT_METHOD: + event_type = "payment_intent.payment_failed" + else: + return None + return get_last_associated_event_by_type(self, event_type) + + def to_dict(self) -> Dict[str, Any]: + payment_intent_dict: Dict[str, Any] = {} + payment_intent_dict["status"] = self.get_status_as_string() + event = self.get_last_associated_event() + if self.last_payment_error: + payment_intent_dict["last_payment_error"] = self.last_payment_error + if event is not None: + payment_intent_dict["event_handler"] = event.get_event_handler_details_as_dict() + return payment_intent_dict + + class CustomerPlan(models.Model): """ This is for storing most of the fiddly details diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.1.json deleted file mode 100644 index 51636e7b37..0000000000 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 7200, - "amount_captured": 7200, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $12.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.2.json deleted file mode 100644 index 9e78c20915..0000000000 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.create.2.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 36000, - "amount_captured": 36000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000002", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $60.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000002", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000002", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000002", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.1.json index c72832c640..2c9d66c14f 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.1.json @@ -10,18 +10,18 @@ "balance_transaction": "txn_NORMALIZED00000000000001", "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": true, "created": 1000000000, "currency": "usd", @@ -36,7 +36,17 @@ "id": "ch_NORMALIZED00000000000001", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -49,14 +59,14 @@ "type": "authorized" }, "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", @@ -85,34 +95,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.2.json index 33d35851aa..3ea322215a 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.2.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Charge.list.2.json @@ -10,18 +10,18 @@ "balance_transaction": "txn_NORMALIZED00000000000002", "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": true, "created": 1000000000, "currency": "usd", @@ -36,7 +36,17 @@ "id": "ch_NORMALIZED00000000000002", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -49,14 +59,14 @@ "type": "authorized" }, "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", @@ -85,34 +95,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null @@ -127,18 +113,18 @@ "balance_transaction": "txn_NORMALIZED00000000000001", "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": true, "created": 1000000000, "currency": "usd", @@ -153,7 +139,17 @@ "id": "ch_NORMALIZED00000000000001", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -166,14 +162,14 @@ "type": "authorized" }, "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", @@ -202,34 +198,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.create.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.save.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.1.json similarity index 92% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.save.1.json rename to corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.save.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.2.json new file mode 100644 index 0000000000..73f96cddf6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.save.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.3.json similarity index 86% rename from corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.save.1.json rename to corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.3.json index cface3d923..ad7a1fd113 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.save.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.modify.3.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": "card_NORMALIZED00000000000002", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -12,7 +12,7 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", "footer": null }, "livemode": false, diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.1.json index 3d384443cb..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.1.json @@ -2,32 +2,8 @@ "address": null, "balance": 0, "created": 1000000000, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "currency": null, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -45,43 +21,10 @@ "realm_str": "zulip" }, "name": null, - "next_invoice_sequence": 2, + "next_invoice_sequence": 1, "object": "customer", "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.2.json new file mode 100644 index 0000000000..8b331807f3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Customer.retrieve.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.1.json new file mode 100644 index 0000000000..f1c70df92a --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.1.json @@ -0,0 +1,196 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000180j7F", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000180j7F/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6uA4KHR4JzRvHrJlx11S", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "ec9c13e3-3653-4487-9495-bfb3f037ab7f" + }, + "type": "invoice.payment_succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.2.json new file mode 100644 index 0000000000..177b1ed6b3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 7200, + "amount_capturable": 0, + "amount_received": 7200, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 7200, + "amount_captured": 7200, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_9VY1UxiA1u2E4iwWriDWdKWb2", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6zA4KHR4JzRv050KO5J6", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "8e523cb2-1aac-4161-a7bb-aaae35a948a9" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 7200, + "amount_captured": 7200, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6zA4KHR4JzRv0wGvTlkQ", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "8e523cb2-1aac-4161-a7bb-aaae35a948a9" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq74A4KHR4JzRvm93ZKSdv", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "0dd55235-9a02-4ebe-bc91-edbbd3e1681a" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq71A4KHR4JzRvGNPaENVK_secret_K86JwqacIutOEOSjrEfAOZWcYc7BcSI", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq71A4KHR4JzRvGNPaENVK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq71A4KHR4JzRvCn2k1wNg", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq72A4KHR4JzRvNe7mNYyB", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "ab1469b0-b668-4ecc-bde9-bd50661b02c6" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq72A4KHR4JzRv7kD6MOJr", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "ab1469b0-b668-4ecc-bde9-bd50661b02c6" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq71A4KHR4JzRvGNPaENVK_secret_K86JwqacIutOEOSjrEfAOZWcYc7BcSI", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq71A4KHR4JzRvGNPaENVK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq71A4KHR4JzRvCn2k1wNg", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq72A4KHR4JzRvAGYaiiBM", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "ab1469b0-b668-4ecc-bde9-bd50661b02c6" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6zA4KHR4JzRv5oPqvFXV_secret_K86JgWJKzWddYfQ09PLQRh8OEFpsiRe", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6zA4KHR4JzRv5oPqvFXV", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq70A4KHR4JzRvTwfHByZw", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "f8a3352d-0e9a-4d56-b7cc-14b3e8599413" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 7200, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_9VY1UxiA1u2E4iwWriDWdKWb2", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6zA4KHR4JzRv01AviF4k", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "50112eb4-9dca-4a47-8f51-a0585edf8f37" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq6yA4KHR4JzRv4oSDpYVk", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "8c153a11-8f3b-4612-8f31-525678a20fb1" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.3.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.3.json new file mode 100644 index 0000000000..9a85a53020 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7BA4KHR4JzRvNqxiA1Mo", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7166c4bd-ba4f-4bc3-b397-f69459033432" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7AA4KHR4JzRv6mdC8T0H", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7166c4bd-ba4f-4bc3-b397-f69459033432" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7AA4KHR4JzRvVjrzfXxn", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7166c4bd-ba4f-4bc3-b397-f69459033432" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq7AA4KHR4JzRvao4umxNz", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7166c4bd-ba4f-4bc3-b397-f69459033432" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq79A4KHR4JzRve1lcUOLy", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "030b1343-2bb5-471a-b56c-9773571c90dd" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -7200, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq79A4KHR4JzRvSAdO30ED", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "030b1343-2bb5-471a-b56c-9773571c90dd" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 7200, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq79A4KHR4JzRvMnAy98FR", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "030b1343-2bb5-471a-b56c-9773571c90dd" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 7200, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 1200, + "unit_amount_decimal": "1200" + } + }, + "id": "evt_1JTq78A4KHR4JzRv5brnyufc", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "9d7a707a-aa76-44b8-a58a-e7553578ef65" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -7200, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + } + }, + "id": "evt_1JTq78A4KHR4JzRvHPWJF1xt", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "933fd8b5-4678-4856-aa3c-51ade8513b73" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq78A4KHR4JzRvn2lSpmKn", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "933fd8b5-4678-4856-aa3c-51ade8513b73" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.4.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.5.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.5.json new file mode 100644 index 0000000000..5ee9b7f2e1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.5.json @@ -0,0 +1,196 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7BA4KHR4JzRvNqxiA1Mo", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7166c4bd-ba4f-4bc3-b397-f69459033432" + }, + "type": "invoice.payment_succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.6.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.6.json new file mode 100644 index 0000000000..9ad371e8c0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.6.json @@ -0,0 +1,657 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 36000, + "amount_capturable": 0, + "amount_received": 36000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 36000, + "amount_captured": 36000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000002", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000002", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_4AXq7WiHGUXFdtcaeAHpf3UVs", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq7EA4KHR4JzRv0N1QkUG3", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "5b361be1-7a7d-4795-a37a-e9a208672371" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 36000, + "amount_captured": 36000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000002", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000002", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq7EA4KHR4JzRv0IC9Qe9t", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "5b361be1-7a7d-4795-a37a-e9a208672371" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo" + } + } + }, + "id": "evt_1JTq7JA4KHR4JzRvXhpFcEbo", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "f410ad9b-4dde-4f6d-9bcd-1a03198f7b78" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7GA4KHR4JzRv01GUDkwn_secret_K86JHEXUhIQjgeL6YUOYbu78g7K1wgz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7GA4KHR4JzRv01GUDkwn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7GA4KHR4JzRvIxxtRvFQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7HA4KHR4JzRvKiXTFVzJ", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "13cbf013-3957-408b-8a63-d745f64794f5" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq7HA4KHR4JzRvZLUMooxc", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "13cbf013-3957-408b-8a63-d745f64794f5" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7GA4KHR4JzRv01GUDkwn_secret_K86JHEXUhIQjgeL6YUOYbu78g7K1wgz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7GA4KHR4JzRv01GUDkwn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7GA4KHR4JzRvIxxtRvFQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7HA4KHR4JzRvVIjEE36V", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "13cbf013-3957-408b-8a63-d745f64794f5" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7EA4KHR4JzRvnIlHU7L0_secret_K86JTEZqWx10YlEVyd9XMsLPbmFm2Qf", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7EA4KHR4JzRvnIlHU7L0", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq7FA4KHR4JzRvhIWraTUX", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0015", + "idempotency_key": "e88981a2-e582-4a10-946b-9b7b6b71e10f" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 36000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_4AXq7WiHGUXFdtcaeAHpf3UVs", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq7EA4KHR4JzRv0ptaVTHc", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0016", + "idempotency_key": "ff8644c4-4950-4486-b9a0-e686371e72b6" + }, + "type": "payment_intent.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.7.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.7.json new file mode 100644 index 0000000000..743dca0a45 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.7.json @@ -0,0 +1,1213 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq7PA4KHR4JzRvmuu76W2d", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0017", + "idempotency_key": "b50e2646-086a-4424-9223-193ea8f33db4" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq7PA4KHR4JzRv8d3fL9GY", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0017", + "idempotency_key": "b50e2646-086a-4424-9223-193ea8f33db4" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq7PA4KHR4JzRvAfsplsBm", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0017", + "idempotency_key": "b50e2646-086a-4424-9223-193ea8f33db4" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq7PA4KHR4JzRvWXvxIz8A", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0017", + "idempotency_key": "b50e2646-086a-4424-9223-193ea8f33db4" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7PA4KHR4JzRvKB7DAFrB", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0018", + "idempotency_key": "1a588f07-94c2-47c8-9f39-e46263468b56" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -36000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000006", + "invoice": "in_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq7PA4KHR4JzRvgX5HjHU0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0018", + "idempotency_key": "1a588f07-94c2-47c8-9f39-e46263468b56" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 36000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000005", + "invoice": "in_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq7PA4KHR4JzRvuFtzVvXn", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0018", + "idempotency_key": "1a588f07-94c2-47c8-9f39-e46263468b56" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 36000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000005", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 6000, + "unit_amount_decimal": "6000" + } + }, + "id": "evt_1JTq7OA4KHR4JzRvhgroYRb9", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0019", + "idempotency_key": "93d6b173-255b-471c-93ea-6f5f82a41887" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -36000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000006", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + } + }, + "id": "evt_1JTq7NA4KHR4JzRvIacqbQ7n", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0020", + "idempotency_key": "d25594d8-16cf-4b18-9415-574897eb028b" + }, + "type": "invoiceitem.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.8.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.8.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Event.list.8.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.1.json index d6bc3d9008..785dd7b200 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.2.json index 16494f1f45..cccdb6e274 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000002", + "id": "in_NORMALIZED00000000000003", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.3.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.3.json index f559909bc0..7b7dc3be3d 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.3.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.create.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 24000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000003", + "id": "in_NORMALIZED00000000000004", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.1.json index 22bbcb021a..f0b8ff43af 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.2.json index d3ab38b2a5..b94ba940dd 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002690Fc", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002690Fc/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.3.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.3.json index 181f0ab477..300a90d1e8 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.3.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.finalize_invoice.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 24000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Nv3oI", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Nv3oI/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004A1tY0", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004A1tY0/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", + "number": "NORMALI-0005", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.1.json index 70e650aca9..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.1.json @@ -1,178 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 7200, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 1200, - "unit_amount_decimal": "1200" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -7200, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -7200, - "unit_amount_decimal": "-7200" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.2.json index 7606155a4c..716b41acdd 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.2.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -38,14 +38,14 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002690Fc", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002690Fc/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", "last_finalization_error": null, "lines": { "data": [ { - "amount": 36000, + "amount": 7200, "currency": "usd", "description": "Zulip Standard", "discount_amounts": [], @@ -57,8 +57,8 @@ "metadata": {}, "object": "line_item", "period": { - "end": 1357095845, - "start": 1325473445 + "end": 1000000000, + "start": 1000000000 }, "plan": null, "price": { @@ -74,11 +74,12 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", - "unit_amount": 6000, - "unit_amount_decimal": "6000" + "unit_amount": 1200, + "unit_amount_decimal": "1200" }, "proration": false, "quantity": 6, @@ -88,7 +89,7 @@ "type": "invoiceitem" }, { - "amount": -36000, + "amount": -7200, "currency": "usd", "description": "Payment (Card ending in 4242)", "discount_amounts": [], @@ -117,178 +118,7 @@ "object": "price", "product": "prod_NORMALIZED0004", "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -36000, - "unit_amount_decimal": "-36000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 7200, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 1200, - "unit_amount_decimal": "1200" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -7200, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -306,12 +136,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.3.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.3.json index fc65f55b00..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.3.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.3.json @@ -1,479 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 24000, - "amount_paid": 0, - "amount_remaining": 24000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Nv3oI", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Nv3oI/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 24000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1388631845, - "start": 1357095845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000005", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0005", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 4000, - "unit_amount_decimal": "4000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 24000, - "tax": null, - "total": 24000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002690Fc", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002690Fc/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 36000, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1357095845, - "start": 1325473445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 6000, - "unit_amount_decimal": "6000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -36000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -36000, - "unit_amount_decimal": "-36000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001WK1Jr/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 7200, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 1200, - "unit_amount_decimal": "1200" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -7200, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -7200, - "unit_amount_decimal": "-7200" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.4.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.4.json new file mode 100644 index 0000000000..4db31b2b0e --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.4.json @@ -0,0 +1,355 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.5.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.5.json new file mode 100644 index 0000000000..9012bb49e6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Invoice.list.5.json @@ -0,0 +1,485 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 24000, + "amount_paid": 0, + "amount_remaining": 24000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004A1tY0", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004A1tY0/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 24000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1388631845, + "start": 1357095845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000007", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0007", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 4000, + "unit_amount_decimal": "4000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0005", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000003", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 24000, + "tax": null, + "total": 24000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003rB7PI/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 6000, + "unit_amount_decimal": "6000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -36000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -36000, + "unit_amount_decimal": "-36000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000022BN9i/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7200, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1200, + "unit_amount_decimal": "1200" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -7200, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -7200, + "unit_amount_decimal": "-7200" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.1.json index e9ac575f0d..0489936237 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.2.json index 2d5bb1c054..dc436e3386 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.3.json index 82f73b1ae6..95fbf836b4 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.3.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000004", + "id": "ii_NORMALIZED00000000000006", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.4.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.4.json index 15f0a8edc5..51bc64de46 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.4.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.4.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000003", + "id": "ii_NORMALIZED00000000000005", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.5.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.5.json index 77dc7d535d..f827e48c4e 100644 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.5.json +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--InvoiceItem.create.5.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000005", + "id": "ii_NORMALIZED00000000000007", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..12e01a0567 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 7200, + "amount_capturable": 0, + "amount_received": 7200, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 7200, + "amount_captured": 7200, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_9VY1UxiA1u2E4iwWriDWdKWb2", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.2.json new file mode 100644 index 0000000000..adc6326486 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.confirm.2.json @@ -0,0 +1,166 @@ +{ + "amount": 36000, + "amount_capturable": 0, + "amount_received": 36000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 36000, + "amount_captured": 36000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000002", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000002", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_4AXq7WiHGUXFdtcaeAHpf3UVs", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.1.json new file mode 100644 index 0000000000..80df52fe64 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 7200, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_9VY1UxiA1u2E4iwWriDWdKWb2", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $12.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.2.json new file mode 100644 index 0000000000..b43a4e06d9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentIntent.create.2.json @@ -0,0 +1,62 @@ +{ + "amount": 36000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_4AXq7WiHGUXFdtcaeAHpf3UVs", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $60.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.1.json new file mode 100644 index 0000000000..9f073ef568 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.2.json new file mode 100644 index 0000000000..cb04cf60f6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--PaymentMethod.create.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.1.json new file mode 100644 index 0000000000..7d55cff5db --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq71A4KHR4JzRvGNPaENVK_secret_K86JwqacIutOEOSjrEfAOZWcYc7BcSI", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq71A4KHR4JzRvGNPaENVK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq71A4KHR4JzRvCn2k1wNg", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.2.json new file mode 100644 index 0000000000..8199d516ab --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.create.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7GA4KHR4JzRv01GUDkwn_secret_K86JHEXUhIQjgeL6YUOYbu78g7K1wgz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7GA4KHR4JzRv01GUDkwn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7GA4KHR4JzRvIxxtRvFQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.1.json new file mode 100644 index 0000000000..eaccbc4cd0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6zA4KHR4JzRv5oPqvFXV_secret_K86JgWJKzWddYfQ09PLQRh8OEFpsiRe", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6zA4KHR4JzRv5oPqvFXV", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.2.json new file mode 100644 index 0000000000..70167a9125 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.list.2.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7EA4KHR4JzRvnIlHU7L0_secret_K86JTEZqWx10YlEVyd9XMsLPbmFm2Qf", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7EA4KHR4JzRvnIlHU7L0", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..7d55cff5db --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq71A4KHR4JzRvGNPaENVK_secret_K86JwqacIutOEOSjrEfAOZWcYc7BcSI", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq71A4KHR4JzRvGNPaENVK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq71A4KHR4JzRvCn2k1wNg", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq70A4KHR4JzRvJD7AOnGo", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.2.json new file mode 100644 index 0000000000..8199d516ab --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--SetupIntent.retrieve.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7GA4KHR4JzRv01GUDkwn_secret_K86JHEXUhIQjgeL6YUOYbu78g7K1wgz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7GA4KHR4JzRv01GUDkwn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7GA4KHR4JzRvIxxtRvFQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7FA4KHR4JzRvD3uADAGe", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.1.json deleted file mode 100644 index 60d47536e7..0000000000 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.2.json deleted file mode 100644 index bc7b308cf4..0000000000 --- a/corporate/tests/stripe_fixtures/attach_discount_to_realm--Token.create.2.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000002", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.1.json new file mode 100644 index 0000000000..8c10457bee --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01zoLVbq58FwDo05HkLqVDxh05uvFf4JyQbzhy7EsO6UjEnY", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq6zA4KHR4JzRv5oPqvFXV", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01zoLVbq58FwDo05HkLqVDxh05uvFf4JyQbzhy7EsO6UjEnY#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.2.json new file mode 100644 index 0000000000..fa46e9913c --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.create.2.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02LW3lsSGGgkk9iQ4xg6bU2NH4WRGG5IaIhvrxKIhwvQAWP0", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq7EA4KHR4JzRvnIlHU7L0", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02LW3lsSGGgkk9iQ4xg6bU2NH4WRGG5IaIhvrxKIhwvQAWP0#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.1.json new file mode 100644 index 0000000000..f355ece793 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01zoLVbq58FwDo05HkLqVDxh05uvFf4JyQbzhy7EsO6UjEnY", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "1200", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq6zA4KHR4JzRv5oPqvFXV", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01zoLVbq58FwDo05HkLqVDxh05uvFf4JyQbzhy7EsO6UjEnY#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.2.json b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.2.json new file mode 100644 index 0000000000..38026b06a6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/attach_discount_to_realm--checkout.Session.list.2.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02LW3lsSGGgkk9iQ4xg6bU2NH4WRGG5IaIhvrxKIhwvQAWP0", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "6000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq7EA4KHR4JzRvnIlHU7L0", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02LW3lsSGGgkk9iQ4xg6bU2NH4WRGG5IaIhvrxKIhwvQAWP0#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Charge.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Charge.create.1.json deleted file mode 100644 index 3114f2b613..0000000000 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 48000, - "amount_captured": 48000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $80.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.create.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.1.json similarity index 92% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.create.1.json rename to corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.1.json index 08de472be2..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000002", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.2.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.2.json new file mode 100644 index 0000000000..f719fa6a9d --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.1.json index 3d384443cb..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.1.json @@ -2,32 +2,8 @@ "address": null, "balance": 0, "created": 1000000000, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "currency": null, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -45,43 +21,10 @@ "realm_str": "zulip" }, "name": null, - "next_invoice_sequence": 2, + "next_invoice_sequence": 1, "object": "customer", "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.2.json index 3d384443cb..c440e51db2 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.2.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -36,7 +12,53 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, "footer": null }, "livemode": false, @@ -50,38 +72,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.3.json new file mode 100644 index 0000000000..c440e51db2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Customer.retrieve.3.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.1.json new file mode 100644 index 0000000000..b833bd470e --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.1.json @@ -0,0 +1,240 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 80697, + "amount_paid": 0, + "amount_remaining": 80697, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000016lvg5", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000016lvg5/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7255, + "currency": "usd", + "description": "Additional license (Feb 5, 2013 - Jan 2, 2014)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1388631845, + "start": 1360033445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 7255, + "unit_amount_decimal": "7255" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 56000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1388631845, + "start": 1357095845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 7, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 17442, + "currency": "usd", + "description": "Additional license (Apr 11, 2012 - Jan 2, 2013)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1334113445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5814, + "unit_amount_decimal": "5814" + }, + "proration": false, + "quantity": 3, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 3, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 80697, + "tax": null, + "total": 80697, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6hA4KHR4JzRvk0KY7bxM", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "4947a2ae-0c39-4c4d-b33b-56d18236fc9e" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.2.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.2.json new file mode 100644 index 0000000000..99d754822f --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_uEB0xxEN8swDrWnrBArdaWcxS", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6jA4KHR4JzRv0KbCb1du", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "4d8e1a93-7832-4c86-9da5-3f8fc3415bde" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6jA4KHR4JzRv0AFbJ5E3", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "4d8e1a93-7832-4c86-9da5-3f8fc3415bde" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq6pA4KHR4JzRvbB6ucSWy", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "7076808f-b366-4769-a49e-6cc47bf245c8" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6mA4KHR4JzRvrvHpvikn_secret_K86JW3ygqxVHUvvPKcQli5exoUIfsPn", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6mA4KHR4JzRvrvHpvikn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6mA4KHR4JzRvSi3YRAAH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq6nA4KHR4JzRvoQsMaTEs", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "90edbd03-5700-4972-9d55-c6241aa94461" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq6mA4KHR4JzRvmWhTJ0Bk", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "90edbd03-5700-4972-9d55-c6241aa94461" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6mA4KHR4JzRvrvHpvikn_secret_K86JW3ygqxVHUvvPKcQli5exoUIfsPn", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6mA4KHR4JzRvrvHpvikn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6mA4KHR4JzRvSi3YRAAH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq6mA4KHR4JzRvq9W8RJ9T", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "90edbd03-5700-4972-9d55-c6241aa94461" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6kA4KHR4JzRvwNeR6z0V_secret_K86JasH6AR9TILn78XCCnxhzoxyMIEO", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6kA4KHR4JzRvwNeR6z0V", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq6kA4KHR4JzRvkSlZUGEX", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "844785a2-316d-4ed5-9f19-f3e3f47b4088" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_uEB0xxEN8swDrWnrBArdaWcxS", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6jA4KHR4JzRv0Aj4ums0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "dd8d0f96-f2e5-4d0e-8859-447ea4cf25e0" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq6jA4KHR4JzRvIJ0Jpblr", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "bdffcc3b-39f6-4430-8806-a84943f85d6d" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.3.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.3.json new file mode 100644 index 0000000000..76b358d58c --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6uA4KHR4JzRvHrJlx11S", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "ec9c13e3-3653-4487-9495-bfb3f037ab7f" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6uA4KHR4JzRvHfr9Oy3n", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "ec9c13e3-3653-4487-9495-bfb3f037ab7f" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6uA4KHR4JzRvKxcgdsml", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "ec9c13e3-3653-4487-9495-bfb3f037ab7f" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq6uA4KHR4JzRvdWDGmK0a", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "ec9c13e3-3653-4487-9495-bfb3f037ab7f" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6tA4KHR4JzRvbinJ2EaZ", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "1be3abf2-cf88-426e-acec-02f6a46e64b2" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000005", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq6tA4KHR4JzRvnG5J2fme", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "1be3abf2-cf88-426e-acec-02f6a46e64b2" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq6tA4KHR4JzRvZDs7Ee7V", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "1be3abf2-cf88-426e-acec-02f6a46e64b2" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTq6sA4KHR4JzRvRVXf9J8u", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "d42b9682-fd6f-4aa5-8ce1-7ab05f84afb6" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000005", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTq6sA4KHR4JzRv0QX4TTVE", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "3d738cd9-2aec-4196-8818-b64ef20756b2" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq6sA4KHR4JzRv7xJJuf9D", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "3d738cd9-2aec-4196-8818-b64ef20756b2" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.4.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.create.1.json index 85ba0a34b9..5aa842d28d 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.finalize_invoice.1.json index ccbab49cdf..d081963468 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000015sJxq", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000015sJxq/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000280j7F/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.list.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.list.1.json similarity index 100% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.list.1.json rename to corporate/tests/stripe_fixtures/billing_page_permissions--Invoice.list.1.json diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.1.json index f722b04075..2f190ee360 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000005", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.2.json index 3f346515e5..5216e89383 100644 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..937da92f77 --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_uEB0xxEN8swDrWnrBArdaWcxS", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.create.1.json new file mode 100644 index 0000000000..d9a70de353 --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_uEB0xxEN8swDrWnrBArdaWcxS", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentMethod.create.1.json new file mode 100644 index 0000000000..b896033a0d --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.create.1.json new file mode 100644 index 0000000000..c5f8f4bc6b --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6mA4KHR4JzRvrvHpvikn_secret_K86JW3ygqxVHUvvPKcQli5exoUIfsPn", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6mA4KHR4JzRvrvHpvikn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6mA4KHR4JzRvSi3YRAAH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.list.1.json new file mode 100644 index 0000000000..059cf61869 --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6kA4KHR4JzRvwNeR6z0V_secret_K86JasH6AR9TILn78XCCnxhzoxyMIEO", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6kA4KHR4JzRvwNeR6z0V", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..c5f8f4bc6b --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6mA4KHR4JzRvrvHpvikn_secret_K86JW3ygqxVHUvvPKcQli5exoUIfsPn", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6mA4KHR4JzRvrvHpvikn", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6mA4KHR4JzRvSi3YRAAH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6lA4KHR4JzRvP3jwXaxq", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--Token.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--Token.create.1.json deleted file mode 100644 index 60d47536e7..0000000000 --- a/corporate/tests/stripe_fixtures/billing_page_permissions--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.create.1.json new file mode 100644 index 0000000000..d14034aa68 --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01cHilg8ji41h2QbrPhiScuswiAlPkEsUR4RJqK7AuLOfikn", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq6kA4KHR4JzRvwNeR6z0V", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01cHilg8ji41h2QbrPhiScuswiAlPkEsUR4RJqK7AuLOfikn#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.list.1.json new file mode 100644 index 0000000000..b4fe76a396 --- /dev/null +++ b/corporate/tests/stripe_fixtures/billing_page_permissions--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01cHilg8ji41h2QbrPhiScuswiAlPkEsUR4RJqK7AuLOfikn", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq6kA4KHR4JzRvwNeR6z0V", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01cHilg8ji41h2QbrPhiScuswiAlPkEsUR4RJqK7AuLOfikn#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.create.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.modify.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.1.json new file mode 100644 index 0000000000..73baa76565 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.1.json @@ -0,0 +1,152 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 24000, + "amount_paid": 0, + "amount_remaining": 24000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001A1tY0", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001A1tY0/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 24000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1388631845, + "start": 1357095845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 4000, + "unit_amount_decimal": "4000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 24000, + "tax": null, + "total": 24000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7UA4KHR4JzRvIV7w7Gm7", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "e614fe00-2fb2-4711-8d1c-bfe76fb67902" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.2.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.2.json new file mode 100644 index 0000000000..32d8b5aeeb --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.2.json @@ -0,0 +1,353 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R_secret_K86KqPKeVoLQcDacIc6WefFx7JiiLNU", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7ZA4KHR4JzRvGClaMCcE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7aA4KHR4JzRvND5z29VH", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "619d91e8-b79f-4adc-886f-8cc41092f329" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq7aA4KHR4JzRv1u2aVxfO", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "619d91e8-b79f-4adc-886f-8cc41092f329" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R_secret_K86KqPKeVoLQcDacIc6WefFx7JiiLNU", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7ZA4KHR4JzRvGClaMCcE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7aA4KHR4JzRvZ39jaKwm", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "619d91e8-b79f-4adc-886f-8cc41092f329" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7XA4KHR4JzRvEqDBiz9a_secret_K86KhiSu3gN9pL3q2zcSNHxyV2tkgIr", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7XA4KHR4JzRvEqDBiz9a", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq7YA4KHR4JzRvO5wUjZrb", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "e9b0e410-779c-4cbd-b58b-15d9db65de2a" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_n57BTvra91BWVZvEHM2WVXFGy", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq7XA4KHR4JzRv1OPD4jZj", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "f72078f6-e698-45b4-8735-4e5cc1f29413" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq7WA4KHR4JzRvpDvduAF5", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "febec2f5-61e7-4f28-9344-05f11484e803" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.3.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.3.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--Event.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentIntent.create.1.json new file mode 100644 index 0000000000..ea1d968b51 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_n57BTvra91BWVZvEHM2WVXFGy", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentMethod.create.1.json new file mode 100644 index 0000000000..74fc6d196a --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.create.1.json new file mode 100644 index 0000000000..87bff9179d --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R_secret_K86KqPKeVoLQcDacIc6WefFx7JiiLNU", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7ZA4KHR4JzRvGClaMCcE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.list.1.json new file mode 100644 index 0000000000..86e4f1eea1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7XA4KHR4JzRvEqDBiz9a_secret_K86KhiSu3gN9pL3q2zcSNHxyV2tkgIr", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7XA4KHR4JzRvEqDBiz9a", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..87bff9179d --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R_secret_K86KqPKeVoLQcDacIc6WefFx7JiiLNU", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7ZA4KHR4JzRvGClaMCcE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.create.1.json new file mode 100644 index 0000000000..9222b55b16 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01SeDXTXQq7DK7QsX0tHNYKz3hA41pDiw0GVEX6carKtyyzN", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq7XA4KHR4JzRvEqDBiz9a", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01SeDXTXQq7DK7QsX0tHNYKz3hA41pDiw0GVEX6carKtyyzN#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.list.1.json new file mode 100644 index 0000000000..ad09f5c111 --- /dev/null +++ b/corporate/tests/stripe_fixtures/checkout_session_completed_with_uncaught_exception--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01SeDXTXQq7DK7QsX0tHNYKz3hA41pDiw0GVEX6carKtyyzN", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq7XA4KHR4JzRvEqDBiz9a", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01SeDXTXQq7DK7QsX0tHNYKz3hA41pDiw0GVEX6carKtyyzN#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.1.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.1.json new file mode 100644 index 0000000000..276fd1f723 --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.2.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.2.json new file mode 100644 index 0000000000..7012aaf5c4 --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.create.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.1.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.1.json new file mode 100644 index 0000000000..276fd1f723 --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.2.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.2.json new file mode 100644 index 0000000000..bf7e9bc779 --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JPM8CA4KHR4JzRvJB86Fwmq", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.1.json new file mode 100644 index 0000000000..276fd1f723 --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.2.json new file mode 100644 index 0000000000..33c14cad90 --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--Customer.retrieve.2.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0002", + "id": "pm_1JPM8CA4KHR4JzRvJB86Fwmq", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--PaymentMethod.create.1.json new file mode 100644 index 0000000000..6047abb07e --- /dev/null +++ b/corporate/tests/stripe_fixtures/customer_has_credit_card_as_default_payment_method--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JPM8CA4KHR4JzRvJB86Fwmq", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.1.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.1.json index f63271c60e..d7e1b01482 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.1.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_341283 (None)", + "description": "realm_399409 (None)", "discount": null, - "email": "user-0-realm_341283@zulip.com", + "email": "user-0-realm_399409@zulip.com", "id": "cus_NORMALIZED0001", "invoice_prefix": "NORMA01", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "1", - "realm_str": "realm_341283" + "realm_str": "realm_399409" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.2.json index 6ca54b638a..57e941561f 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.2.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.2.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_747106 (None)", + "description": "realm_572697 (None)", "discount": null, - "email": "user-0-realm_747106@zulip.com", + "email": "user-0-realm_572697@zulip.com", "id": "cus_NORMALIZED0002", "invoice_prefix": "NORMA02", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "2", - "realm_str": "realm_747106" + "realm_str": "realm_572697" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.3.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.3.json index 0c1332d0ea..9fd57b6c8b 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.3.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.3.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_384957 (None)", + "description": "realm_662230 (None)", "discount": null, - "email": "user-0-realm_384957@zulip.com", + "email": "user-0-realm_662230@zulip.com", "id": "cus_NORMALIZED0003", "invoice_prefix": "NORMA03", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "3", - "realm_str": "realm_384957" + "realm_str": "realm_662230" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.4.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.4.json index 1051e7c089..0423c43d3d 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.4.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.4.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_765764 (None)", + "description": "realm_71132 (None)", "discount": null, - "email": "user-0-realm_765764@zulip.com", + "email": "user-0-realm_71132@zulip.com", "id": "cus_NORMALIZED0004", "invoice_prefix": "NORMA04", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "4", - "realm_str": "realm_765764" + "realm_str": "realm_71132" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.5.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.5.json index 3f1ae85c50..3aa541f146 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.5.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.5.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_810625 (None)", + "description": "realm_191086 (None)", "discount": null, - "email": "user-0-realm_810625@zulip.com", + "email": "user-0-realm_191086@zulip.com", "id": "cus_NORMALIZED0005", "invoice_prefix": "NORMA05", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "5", - "realm_str": "realm_810625" + "realm_str": "realm_191086" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.6.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.6.json index acfd679ee6..cfe5d91873 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.6.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.6.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_404452 (None)", + "description": "realm_971149 (None)", "discount": null, - "email": "user-0-realm_404452@zulip.com", + "email": "user-0-realm_971149@zulip.com", "id": "cus_NORMALIZED0006", "invoice_prefix": "NORMA06", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "6", - "realm_str": "realm_404452" + "realm_str": "realm_971149" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.7.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.7.json index 38fae9994b..80338a38fa 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.7.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.create.7.json @@ -5,9 +5,9 @@ "currency": null, "default_source": null, "delinquent": false, - "description": "realm_752184 (None)", + "description": "realm_204386 (None)", "discount": null, - "email": "user-0-realm_752184@zulip.com", + "email": "user-0-realm_204386@zulip.com", "id": "cus_NORMALIZED0007", "invoice_prefix": "NORMA07", "invoice_settings": { @@ -18,7 +18,7 @@ "livemode": false, "metadata": { "realm_id": "7", - "realm_str": "realm_752184" + "realm_str": "realm_204386" }, "name": null, "next_invoice_sequence": 1, diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.1.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.1.json new file mode 100644 index 0000000000..d7e1b01482 --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_399409 (None)", + "discount": null, + "email": "user-0-realm_399409@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "realm_399409" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.2.json new file mode 100644 index 0000000000..57e941561f --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_572697 (None)", + "discount": null, + "email": "user-0-realm_572697@zulip.com", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "2", + "realm_str": "realm_572697" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.3.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.3.json new file mode 100644 index 0000000000..9fd57b6c8b --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_662230 (None)", + "discount": null, + "email": "user-0-realm_662230@zulip.com", + "id": "cus_NORMALIZED0003", + "invoice_prefix": "NORMA03", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "3", + "realm_str": "realm_662230" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.4.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.4.json new file mode 100644 index 0000000000..0423c43d3d --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.4.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_71132 (None)", + "discount": null, + "email": "user-0-realm_71132@zulip.com", + "id": "cus_NORMALIZED0004", + "invoice_prefix": "NORMA04", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "4", + "realm_str": "realm_71132" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.5.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.5.json new file mode 100644 index 0000000000..3aa541f146 --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.5.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_191086 (None)", + "discount": null, + "email": "user-0-realm_191086@zulip.com", + "id": "cus_NORMALIZED0005", + "invoice_prefix": "NORMA05", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "5", + "realm_str": "realm_191086" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.6.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.6.json new file mode 100644 index 0000000000..cfe5d91873 --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.6.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_971149 (None)", + "discount": null, + "email": "user-0-realm_971149@zulip.com", + "id": "cus_NORMALIZED0006", + "invoice_prefix": "NORMA06", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "6", + "realm_str": "realm_971149" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.7.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.7.json new file mode 100644 index 0000000000..80338a38fa --- /dev/null +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Customer.modify.7.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "realm_204386 (None)", + "discount": null, + "email": "user-0-realm_204386@zulip.com", + "id": "cus_NORMALIZED0007", + "invoice_prefix": "NORMA07", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "7", + "realm_str": "realm_204386" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.1.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.1.json index ae1ec0d48c..deb259d0f4 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0002", "customer_address": null, - "customer_email": "user-0-realm_747106@zulip.com", + "customer_email": "user-0-realm_572697@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.2.json index 501d74354a..966b564ad7 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0004", "customer_address": null, - "customer_email": "user-0-realm_765764@zulip.com", + "customer_email": "user-0-realm_71132@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.3.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.3.json index b84bed282f..a0aadaff91 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.3.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0005", "customer_address": null, - "customer_email": "user-0-realm_810625@zulip.com", + "customer_email": "user-0-realm_191086@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.4.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.4.json index c04d682b1c..12ad79c1de 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.4.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.4.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0005", "customer_address": null, - "customer_email": "user-0-realm_810625@zulip.com", + "customer_email": "user-0-realm_191086@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.5.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.5.json index eb462ce9db..559ce340be 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.5.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.5.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.6.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.6.json index 29639e13c9..df88ba7b34 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.6.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.6.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.7.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.7.json index d258cf50b1..dc865c8c79 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.7.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.7.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0007", "customer_address": null, - "customer_email": "user-0-realm_752184@zulip.com", + "customer_email": "user-0-realm_204386@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.8.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.8.json index a10b430768..3a1c96c516 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.8.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.create.8.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0007", "customer_address": null, - "customer_email": "user-0-realm_752184@zulip.com", + "customer_email": "user-0-realm_204386@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0008", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.1.json index fb22c30cfe..06da33bad5 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0002", "customer_address": null, - "customer_email": "user-0-realm_747106@zulip.com", + "customer_email": "user-0-realm_572697@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001FnfOy", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LGFI5", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001FnfOy/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LGFI5/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.2.json index d8d7d3d95c..cc23cec2de 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0004", "customer_address": null, - "customer_email": "user-0-realm_765764@zulip.com", + "customer_email": "user-0-realm_71132@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002fYsO7", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002umHHd", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002fYsO7/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002umHHd/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.3.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.3.json index 5b8b7b041f..f8c6a76066 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.3.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0005", "customer_address": null, - "customer_email": "user-0-realm_810625@zulip.com", + "customer_email": "user-0-realm_191086@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Bhq0y", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003WyPjd", "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Bhq0y/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003WyPjd/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.4.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.4.json index e6ab3fec6a..403196d3bf 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.4.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.4.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0005", "customer_address": null, - "customer_email": "user-0-realm_810625@zulip.com", + "customer_email": "user-0-realm_191086@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004J6xR5", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004OHkqr", "id": "in_NORMALIZED00000000000004", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004J6xR5/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004OHkqr/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.5.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.5.json index 487a759fe6..a0ed79b75d 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.5.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.5.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ncBbj", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ML0me", "id": "in_NORMALIZED00000000000005", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ncBbj/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ML0me/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.6.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.6.json index db680e9c6b..6ba3bd41b3 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.6.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.6.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006nZ4k4", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000062S6Lr", "id": "in_NORMALIZED00000000000006", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006nZ4k4/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000062S6Lr/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.7.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.7.json index db334ba810..ba44642c56 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.7.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.7.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0007", "customer_address": null, - "customer_email": "user-0-realm_752184@zulip.com", + "customer_email": "user-0-realm_204386@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000079nVn3", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000007hgg8k", "id": "in_NORMALIZED00000000000007", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000079nVn3/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000007hgg8k/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.8.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.8.json index 93014d80da..dcf8652848 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.8.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.finalize_invoice.8.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0007", "customer_address": null, - "customer_email": "user-0-realm_752184@zulip.com", + "customer_email": "user-0-realm_204386@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000008qCFwv", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000008V4GB8", "id": "in_NORMALIZED00000000000008", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000008qCFwv/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000008V4GB8/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0008", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.2.json index 921882725e..be95f07c8c 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.2.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -23,7 +23,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0002", "customer_address": null, - "customer_email": "user-0-realm_747106@zulip.com", + "customer_email": "user-0-realm_572697@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001FnfOy", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LGFI5", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001FnfOy/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LGFI5/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.4.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.4.json index dd3f830d77..92baa3ea01 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.4.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.4.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -23,7 +23,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0004", "customer_address": null, - "customer_email": "user-0-realm_765764@zulip.com", + "customer_email": "user-0-realm_71132@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002fYsO7", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002umHHd", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002fYsO7/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002umHHd/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.5.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.5.json index 1d1d5443b1..d80c13fbee 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.5.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.5.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -23,7 +23,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0005", "customer_address": null, - "customer_email": "user-0-realm_810625@zulip.com", + "customer_email": "user-0-realm_191086@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004J6xR5", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004OHkqr", "id": "in_NORMALIZED00000000000004", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004J6xR5/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004OHkqr/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -131,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -152,7 +153,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0005", "customer_address": null, - "customer_email": "user-0-realm_810625@zulip.com", + "customer_email": "user-0-realm_191086@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -167,9 +168,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Bhq0y", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003WyPjd", "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003Bhq0y/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003WyPjd/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -203,6 +204,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.6.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.6.json index 5acf97e8cc..eb457eafe6 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.6.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.list.6.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -23,7 +23,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006nZ4k4", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000062S6Lr", "id": "in_NORMALIZED00000000000006", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006nZ4k4/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000062S6Lr/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -131,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -152,7 +153,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -167,9 +168,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ncBbj", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ML0me", "id": "in_NORMALIZED00000000000005", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ncBbj/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ML0me/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -203,6 +204,7 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.1.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.1.json index 85369738aa..5f7d8235c2 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.1.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ncBbj", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ML0me", "id": "in_NORMALIZED00000000000005", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ncBbj/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005ML0me/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.2.json index ed53f260f9..3a8c0a9006 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.2.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--Invoice.pay.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 10000, "amount_paid": 0, @@ -21,7 +21,7 @@ "custom_fields": null, "customer": "cus_NORMALIZED0006", "customer_address": null, - "customer_email": "user-0-realm_404452@zulip.com", + "customer_email": "user-0-realm_971149@zulip.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006nZ4k4", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000062S6Lr", "id": "in_NORMALIZED00000000000006", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006nZ4k4/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000062S6Lr/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.1.json index ff63b3bfc0..d3c8790ad8 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.1.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.2.json index b8e465e289..9fa167b85e 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.2.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.3.json index 55df81f3db..3390812d4e 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.3.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.4.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.4.json index 9d82becfe2..1a446dc59b 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.4.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.4.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.5.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.5.json index 9542efa345..1a28d8fdb5 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.5.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.5.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.6.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.6.json index a7b8d4c32b..86fae43b57 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.6.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.6.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.7.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.7.json index 77122d33f7..aeedf287a2 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.7.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.7.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.8.json b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.8.json index d37c9bcea0..25b729e93e 100644 --- a/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.8.json +++ b/corporate/tests/stripe_fixtures/downgrade_small_realms_behind_on_payments_as_needed--InvoiceItem.create.8.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0008", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Customer.modify.1.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Event.list.1.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Event.list.1.json new file mode 100644 index 0000000000..cd2719e4a5 --- /dev/null +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Event.list.1.json @@ -0,0 +1,66 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "ach_credit_transfer": { + "account_number": "test_NORMALIZED01", + "bank_name": "TEST BANK", + "fingerprint": "NORMALIZED000001", + "refund_account_holder_name": null, + "refund_account_holder_type": null, + "refund_routing_number": null, + "routing_number": "110000000", + "swift_code": "TSTEZ122" + }, + "amount": null, + "client_secret": "src_client_secret_NORMALIZED00000000000001", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0002", + "flow": "receiver", + "id": "src_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "source", + "owner": { + "address": null, + "email": "amount_0@stripe.com", + "name": null, + "phone": null, + "verified_address": null, + "verified_email": null, + "verified_name": null, + "verified_phone": null + }, + "receiver": { + "address": "000000000-test_NORMALIZED01", + "amount_charged": 0, + "amount_received": 0, + "amount_returned": 0, + "refund_attributes_method": "email", + "refund_attributes_status": "missing" + }, + "statement_descriptor": null, + "status": "pending", + "type": "ach_credit_transfer", + "usage": "reusable" + } + }, + "id": "evt_1JTksiA4KHR4JzRvGXn3efLA", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": null, + "idempotency_key": null + }, + "type": "customer.source.created" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.1.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.1.json index 6cf3eb01e2..e89fe74bef 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.2.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.2.json index 2c7d1773a5..69427515f8 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 100, "amount_paid": 0, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.1.json index 330d8fb241..f1e661c7a4 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001SGgJs", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001wB0Gj", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001SGgJs/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001wB0Gj/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.2.json index c93e2e5e60..6b79b1c132 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 100, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000248qeQ", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AWJqo", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000248qeQ/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AWJqo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.list.1.json b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.list.1.json index 2d609e9ebc..b5926dbfe0 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--Invoice.list.1.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 100, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000248qeQ", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AWJqo", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000248qeQ/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AWJqo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -131,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -167,9 +168,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001SGgJs", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001wB0Gj", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001SGgJs/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001wB0Gj/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -203,6 +204,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.1.json index 9f60bb15ae..d540294d68 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.1.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.2.json index 47eac324e8..0750a8f123 100644 --- a/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/fixed_price_plans--InvoiceItem.create.2.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.create.1.json index c039b422a4..51ee3ff976 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1010000001, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.1.json new file mode 100644 index 0000000000..51ee3ff976 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.2.json new file mode 100644 index 0000000000..e52387a94e --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.1.json index 3c8c2ea0a0..51ee3ff976 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.1.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1010000001, "currency": null, - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -50,38 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.2.json index 3c8c2ea0a0..44d17b8a33 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.2.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1010000001, "currency": null, - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -36,7 +12,53 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, "footer": null }, "livemode": false, @@ -50,38 +72,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.3.json index 3c8c2ea0a0..44d17b8a33 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.3.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.3.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1010000001, "currency": null, - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -36,7 +12,53 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, "footer": null }, "livemode": false, @@ -50,38 +72,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.4.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.4.json new file mode 100644 index 0000000000..44d17b8a33 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Customer.retrieve.4.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.1.json new file mode 100644 index 0000000000..00c48d87c9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.1.json @@ -0,0 +1,61 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000003, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R_secret_K86KqPKeVoLQcDacIc6WefFx7JiiLNU", + "created": 1010000004, + "customer": "cus_NORMALIZED0002", + "description": null, + "id": "seti_1JTq7ZA4KHR4JzRvKoHGUZ4R", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7ZA4KHR4JzRvGClaMCcE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7YA4KHR4JzRvxrCAGzvl", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7aA4KHR4JzRvND5z29VH", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "619d91e8-b79f-4adc-886f-8cc41092f329" + }, + "type": "setup_intent.succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.2.json new file mode 100644 index 0000000000..72bf397f8f --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.2.json @@ -0,0 +1,326 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000005, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq7kA4KHR4JzRvg3kcPeh7", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "bad0c4ee-058d-4614-ae09-d8e3e708bd1f" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7hA4KHR4JzRv02EYBK4G_secret_K86KOpSwG3eOtZxvUSTcWWmttnEArJH", + "created": 1010000007, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7hA4KHR4JzRv02EYBK4G", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7hA4KHR4JzRvwDDLURxh", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7iA4KHR4JzRvljbmDKUr", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "1dde6602-dac8-4361-9513-461f6d6ffc22" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq7iA4KHR4JzRvvso6P4v3", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "1dde6602-dac8-4361-9513-461f6d6ffc22" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1010000007, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7hA4KHR4JzRv02EYBK4G_secret_K86KOpSwG3eOtZxvUSTcWWmttnEArJH", + "created": 1010000007, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7hA4KHR4JzRv02EYBK4G", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7hA4KHR4JzRvwDDLURxh", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq7iA4KHR4JzRvZRSLlwqV", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "1dde6602-dac8-4361-9513-461f6d6ffc22" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000008, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7fA4KHR4JzRvUMlBwgqI_secret_K86KUw7g97GR7KyeBr0JoCFux9CljZy", + "created": 1010000008, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7fA4KHR4JzRvUMlBwgqI", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq7fA4KHR4JzRvJ884tquR", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "e53f2aaa-9047-44b6-82c9-6873e3b11412" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000001, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq7eA4KHR4JzRvp16gXCgi", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "f57db8c6-97e8-4861-bb0e-972440c53ac2" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.3.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Event.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.1.json index af437c2a5f..5e8bb14e77 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 120000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000002, + "created": 1010000009, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000002, + "created": 1010000010, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.2.json index 373239ea1c..3fc50f211f 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5172, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000011, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000012, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.3.json index 77c8cd4b55..f98b2de519 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.3.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.create.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 152000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000005, + "created": 1010000013, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000006, + "created": 1010000014, "currency": "usd", "id": "price_NORMALIZED00000000000003", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.1.json index 92f0358037..c87fbfe699 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 120000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000002, + "created": 1010000009, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000002, + "created": 1010000010, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.2.json index e04a6bd8fd..e79825b5ee 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5172, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000011, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nlvXf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002d6T46", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nlvXf/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002d6T46/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000012, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.3.json index 5770e26e91..90996bf11f 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.3.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.finalize_invoice.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 152000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000005, + "created": 1010000013, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003tSAyS", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003OQw56", "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003tSAyS/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003OQw56/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000006, + "created": 1010000014, "currency": "usd", "id": "price_NORMALIZED00000000000003", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.3.json index b94a420468..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.3.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.3.json @@ -1,135 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 120000, - "amount_paid": 0, - "amount_remaining": 120000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1010000002, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 120000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1362193445, - "start": 1330657445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000002, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 15, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 120000, - "tax": null, - "total": 120000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.4.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.4.json index b94a420468..8e54d71c2b 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.4.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.4.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 120000, "amount_paid": 0, @@ -18,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000002, + "created": 1010000009, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -38,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -64,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000002, + "created": 1010000010, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -127,7 +128,7 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } ], "has_more": false, diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.5.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.5.json index ee24773fed..8e54d71c2b 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.5.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.5.json @@ -2,136 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 5172, - "amount_paid": 0, - "amount_remaining": 5172, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1010000003, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nlvXf", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nlvXf/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 5172, - "currency": "usd", - "description": "Additional license (Jan 2, 2013 - Mar 2, 2013)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1362193445, - "start": 1357095845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000004, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 1293, - "unit_amount_decimal": "1293" - }, - "proration": false, - "quantity": 4, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 5172, - "tax": null, - "total": 5172, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 120000, "amount_paid": 0, @@ -147,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000002, + "created": 1010000009, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -167,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -193,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000002, + "created": 1010000010, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -203,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -256,7 +128,7 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } ], "has_more": false, diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.6.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.6.json index ee545e2f4b..f9aaed9fe9 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.6.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.6.json @@ -2,136 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 152000, - "amount_paid": 0, - "amount_remaining": 152000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1010000005, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003tSAyS", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003tSAyS/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 152000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1393729445, - "start": 1362193445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000006, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 19, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000003", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 152000, - "tax": null, - "total": 152000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5172, "amount_paid": 0, @@ -147,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000011, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -167,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nlvXf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002d6T46", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nlvXf/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002d6T46/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -193,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000012, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -203,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -256,11 +128,11 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 120000, "amount_paid": 0, @@ -276,7 +148,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000002, + "created": 1010000009, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -296,9 +168,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001kJlNF/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -322,7 +194,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000002, + "created": 1010000010, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -332,6 +204,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.7.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.7.json new file mode 100644 index 0000000000..479fc3995d --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Invoice.list.7.json @@ -0,0 +1,397 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 152000, + "amount_paid": 0, + "amount_remaining": 152000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003OQw56", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003OQw56/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 152000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1393729445, + "start": 1362193445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 19, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000003", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 152000, + "tax": null, + "total": 152000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5172, + "amount_paid": 0, + "amount_remaining": 5172, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000011, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002d6T46", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002d6T46/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5172, + "currency": "usd", + "description": "Additional license (Jan 2, 2013 - Mar 2, 2013)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1362193445, + "start": 1357095845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000012, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 1293, + "unit_amount_decimal": "1293" + }, + "proration": false, + "quantity": 4, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 5172, + "tax": null, + "total": 5172, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 120000, + "amount_paid": 0, + "amount_remaining": 120000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000009, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001fbJZV/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 120000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1362193445, + "start": 1330657445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000010, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 15, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 120000, + "tax": null, + "total": 120000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.1.json index 4bcd7ddb1e..849efbbe5e 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.1.json @@ -19,7 +19,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000002, + "created": 1010000010, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.2.json index bf33506395..dae1f3d951 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.2.json @@ -19,7 +19,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000012, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.3.json index 451eb3a718..5925b55f2c 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--InvoiceItem.create.3.json @@ -19,7 +19,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000006, + "created": 1010000014, "currency": "usd", "id": "price_NORMALIZED00000000000003", "livemode": false, @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--PaymentMethod.create.1.json new file mode 100644 index 0000000000..8ef3a9ca9e --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": null, + "id": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.create.1.json new file mode 100644 index 0000000000..cb1464e7f1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7hA4KHR4JzRv02EYBK4G_secret_K86KOpSwG3eOtZxvUSTcWWmttnEArJH", + "created": 1010000007, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7hA4KHR4JzRv02EYBK4G", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7hA4KHR4JzRvwDDLURxh", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.list.1.json new file mode 100644 index 0000000000..344e290fe0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7fA4KHR4JzRvUMlBwgqI_secret_K86KUw7g97GR7KyeBr0JoCFux9CljZy", + "created": 1010000008, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7fA4KHR4JzRvUMlBwgqI", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..cb1464e7f1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq7hA4KHR4JzRv02EYBK4G_secret_K86KOpSwG3eOtZxvUSTcWWmttnEArJH", + "created": 1010000007, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq7hA4KHR4JzRv02EYBK4G", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq7hA4KHR4JzRvwDDLURxh", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq7gA4KHR4JzRvBR2wjpRg", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Token.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Token.create.1.json deleted file mode 100644 index 1d208a83a9..0000000000 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1010000007, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.create.1.json new file mode 100644 index 0000000000..c9b77c7d5d --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01v9vL5fxb98RRvO0SlLYd9HIVwPD8czZ560vWO8LY66S9jl", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq7fA4KHR4JzRvUMlBwgqI", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01v9vL5fxb98RRvO0SlLYd9HIVwPD8czZ560vWO8LY66S9jl#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.list.1.json new file mode 100644 index 0000000000..e0086a6092 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01v9vL5fxb98RRvO0SlLYd9HIVwPD8czZ560vWO8LY66S9jl", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq7fA4KHR4JzRvUMlBwgqI", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01v9vL5fxb98RRvO0SlLYd9HIVwPD8czZ560vWO8LY66S9jl#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Charge.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Charge.list.1.json new file mode 100644 index 0000000000..75910611cf --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Charge.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/charges" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.create.1.json new file mode 100644 index 0000000000..51ee3ff976 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.1.json new file mode 100644 index 0000000000..51ee3ff976 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.2.json new file mode 100644 index 0000000000..b6433c01a2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.1.json new file mode 100644 index 0000000000..51ee3ff976 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.2.json new file mode 100644 index 0000000000..56a8dbabf1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Customer.retrieve.2.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.1.json new file mode 100644 index 0000000000..37db4f3c53 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.1.json @@ -0,0 +1,152 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000003, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 152000, + "amount_paid": 0, + "amount_remaining": 152000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000004, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OQw56", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OQw56/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 152000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1393729445, + "start": 1362193445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000005, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 19, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 152000, + "tax": null, + "total": 152000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq7zA4KHR4JzRvHyRQ43Ai", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "b5111419-dc10-4354-bc59-9fab2090b2f6" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.2.json new file mode 100644 index 0000000000..c5e2ce5b96 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.2.json @@ -0,0 +1,326 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq87A4KHR4JzRvFDevaVGA", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "ab11848e-d930-47d3-9de4-b196fa17c2de" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000007, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB_secret_K86KcR1kRUBTcdsi9opHybjCceyOOYy", + "created": 1010000008, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq84A4KHR4JzRvKK0EXIlH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq85A4KHR4JzRvBYbTGVkj", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "5af94a7e-2c74-431e-be73-8e8db23c4026" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000007, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq85A4KHR4JzRvalpv9WDK", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "5af94a7e-2c74-431e-be73-8e8db23c4026" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1010000008, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB_secret_K86KcR1kRUBTcdsi9opHybjCceyOOYy", + "created": 1010000008, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq84A4KHR4JzRvKK0EXIlH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq85A4KHR4JzRvHBDJLdQP", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "5af94a7e-2c74-431e-be73-8e8db23c4026" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000009, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq82A4KHR4JzRvNZqEnPCt_secret_K86KHu3ARsUzpI4S0MqZ5wkhfKXiGcB", + "created": 1010000009, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq82A4KHR4JzRvNZqEnPCt", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq83A4KHR4JzRvEy61kLZo", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "0c9c1379-b895-4104-a236-79d479aa33a2" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000001, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq81A4KHR4JzRvQkiZN52S", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "ceb523e9-9eb3-4964-a86d-4321af0872de" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.3.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Event.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.1.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.2.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--Invoice.list.2.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--PaymentMethod.create.1.json new file mode 100644 index 0000000000..c20ae2f641 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000002, + "customer": null, + "id": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.create.1.json new file mode 100644 index 0000000000..9c55dc0d3b --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB_secret_K86KcR1kRUBTcdsi9opHybjCceyOOYy", + "created": 1010000008, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq84A4KHR4JzRvKK0EXIlH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.list.1.json new file mode 100644 index 0000000000..0af8ab0afe --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq82A4KHR4JzRvNZqEnPCt_secret_K86KHu3ARsUzpI4S0MqZ5wkhfKXiGcB", + "created": 1010000009, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq82A4KHR4JzRvNZqEnPCt", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..9c55dc0d3b --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB_secret_K86KcR1kRUBTcdsi9opHybjCceyOOYy", + "created": 1010000008, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq84A4KHR4JzRvJ9Ip3AzB", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq84A4KHR4JzRvKK0EXIlH", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.create.1.json new file mode 100644 index 0000000000..c924b79b30 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01vKcdTdwFTKsAGwStax4jbLfc6zN3v25Z5LMNomm6VpyQAX", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq82A4KHR4JzRvNZqEnPCt", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01vKcdTdwFTKsAGwStax4jbLfc6zN3v25Z5LMNomm6VpyQAX#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.list.1.json new file mode 100644 index 0000000000..249dbc7cba --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_card_from_onboarding_page--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01vKcdTdwFTKsAGwStax4jbLfc6zN3v25Z5LMNomm6VpyQAX", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq82A4KHR4JzRvNZqEnPCt", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01vKcdTdwFTKsAGwStax4jbLfc6zN3v25Z5LMNomm6VpyQAX#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.modify.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.modify.1.json new file mode 100644 index 0000000000..51ee3ff976 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.1.json index 30370206ff..51ee3ff976 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.1.json @@ -26,12 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.2.json index 30370206ff..51ee3ff976 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Customer.retrieve.2.json @@ -26,12 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Event.list.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Event.list.1.json new file mode 100644 index 0000000000..9f32954a45 --- /dev/null +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Event.list.1.json @@ -0,0 +1,57 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000002, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000003, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JPM9CA4KHR4JzRv4KuI30k9", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JPM9FA4KHR4JzRvk63PYn7e", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "5074f0fc-33ba-4485-ae97-ae0df6653350" + }, + "type": "customer.updated" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.1.json index 4535a89e76..98e254cac4 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000004, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.2.json index 9ccd8e5495..ecb8940835 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000004, + "created": 1010000006, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000005, + "created": 1010000007, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.1.json index c45c92e79b..ec241a9fcc 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000004, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.2.json index bd56f48ae2..54c0fd4392 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000004, + "created": 1010000006, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002MbjN2", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002debTS", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002MbjN2/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002debTS/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -62,7 +62,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000005, + "created": 1010000007, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.2.json index 3813de7d75..9209ebd490 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.2.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -18,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000004, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -64,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.3.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.3.json index 3813de7d75..9209ebd490 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.3.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.3.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -18,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000004, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -64,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.4.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.4.json index 3813de7d75..9209ebd490 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.4.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.4.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -18,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000004, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -64,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.5.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.5.json index f2f15dab0f..d37717e2ca 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.5.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--Invoice.list.5.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -18,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000004, + "created": 1010000006, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002MbjN2", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002debTS", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002MbjN2/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002debTS/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -64,7 +64,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000005, + "created": 1010000007, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -131,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -147,7 +148,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000004, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -167,9 +168,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tmvZS/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001PYikB/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -193,7 +194,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -203,6 +204,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.1.json index 2c6207a72d..e5cec67ec4 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.1.json @@ -19,7 +19,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000005, "currency": "usd", "id": "price_NORMALIZED00000000000001", "livemode": false, @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.2.json index fcd766ca2e..03f4267165 100644 --- a/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/free_trial_upgrade_by_invoice--InvoiceItem.create.2.json @@ -19,7 +19,7 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000005, + "created": 1010000007, "currency": "usd", "id": "price_NORMALIZED00000000000002", "livemode": false, @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Charge.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Charge.create.1.json deleted file mode 100644 index 3114f2b613..0000000000 --- a/corporate/tests/stripe_fixtures/invoice_plan--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 48000, - "amount_captured": 48000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $80.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Customer.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Customer.create.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.2.json b/corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.2.json new file mode 100644 index 0000000000..d80b8ec074 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Event.list.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.1.json new file mode 100644 index 0000000000..8233fbbba3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.1.json @@ -0,0 +1,196 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -184000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq2xA4KHR4JzRvO3ETmYHw", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "2fd351b7-11e2-42f5-98a7-94de6887c731" + }, + "type": "invoice.payment_succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Event.list.2.json b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.2.json new file mode 100644 index 0000000000..2e18a39be0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_un6xCROZ30zl6GBCbxffPDX47", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6PA4KHR4JzRv0YSCFoal", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "a55ab8a2-9d3d-4716-a533-8d947527dea5" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6PA4KHR4JzRv04KmQRyX", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "a55ab8a2-9d3d-4716-a533-8d947527dea5" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq6VA4KHR4JzRvCSBJ4U43", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "29bff82d-2538-48c8-bdd7-f589aa802f5a" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6SA4KHR4JzRvNzAqTD3c_secret_K86Jf76WwxFTspBr2xL68ZwxrRowJzd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6SA4KHR4JzRvNzAqTD3c", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6TA4KHR4JzRvMK73QFkx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq6TA4KHR4JzRvbcd0j1lu", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "8eecb6fa-8366-4891-8ac3-6c8d45b5e6ee" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq6TA4KHR4JzRv30R45tUB", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "8eecb6fa-8366-4891-8ac3-6c8d45b5e6ee" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6SA4KHR4JzRvNzAqTD3c_secret_K86Jf76WwxFTspBr2xL68ZwxrRowJzd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6SA4KHR4JzRvNzAqTD3c", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6TA4KHR4JzRvMK73QFkx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq6TA4KHR4JzRv7PPIfd43", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "8eecb6fa-8366-4891-8ac3-6c8d45b5e6ee" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6PA4KHR4JzRvTYLELLgl_secret_K86JQpqjgZ0znxnw94IgRxWZLtEwBiU", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6PA4KHR4JzRvTYLELLgl", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq6QA4KHR4JzRvbIuQKbvw", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "0377ec1f-4b84-4a5e-acfb-6aa4529498ed" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_un6xCROZ30zl6GBCbxffPDX47", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq6PA4KHR4JzRv0W3JReT8", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "b3d6c9a7-998b-415e-a069-e19391a6742e" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq6OA4KHR4JzRvbPx1T9XS", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "934abcf2-e034-4e56-b1d5-10b16736dd14" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Event.list.3.json b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.3.json new file mode 100644 index 0000000000..8cb9fbab74 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6cA4KHR4JzRvRtVBx4En", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6592bfe7-2652-4b10-b037-5227b94f66cd" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6cA4KHR4JzRvi3aLAOm6", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6592bfe7-2652-4b10-b037-5227b94f66cd" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6cA4KHR4JzRvrxnQg98e", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6592bfe7-2652-4b10-b037-5227b94f66cd" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq6cA4KHR4JzRvwYvmpy2A", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6592bfe7-2652-4b10-b037-5227b94f66cd" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq6bA4KHR4JzRvUVfLNeK0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "409c8cb2-15f5-4da9-a2a8-256077764230" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq6bA4KHR4JzRvZY1gmiLa", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "409c8cb2-15f5-4da9-a2a8-256077764230" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq6bA4KHR4JzRvsdh4NmcL", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "409c8cb2-15f5-4da9-a2a8-256077764230" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTq6aA4KHR4JzRvR2P3pWw8", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "8a032b8b-e553-4b4a-b51a-dfcbecefd793" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTq6ZA4KHR4JzRvXIN696Ta", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "a4d9e8d5-5d41-4660-95ee-f6b75c4d7b5a" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq6ZA4KHR4JzRvhwHMHIzD", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "a4d9e8d5-5d41-4660-95ee-f6b75c4d7b5a" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Event.list.4.json b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.1.json index 46ffedbaae..c4b16585fe 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.2.json b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.2.json index 21fa5ade81..138e6b4625 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 80697, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000002", + "id": "in_NORMALIZED00000000000003", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -135,8 +137,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -150,14 +152,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -175,7 +178,7 @@ "has_more": false, "object": "list", "total_count": 3, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, @@ -211,5 +214,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.1.json index 9ddaf8d9b2..2c7c2da519 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GKuTy", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GKuTy/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.2.json index 448311ac24..f0a66f5f50 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 80697, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cca5R", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cca5R/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000036lvg5", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000036lvg5/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -135,8 +137,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -150,14 +152,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -175,16 +178,16 @@ "has_more": false, "object": "list", "total_count": 3, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -211,5 +214,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.1.json index c3c27415e8..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.1.json @@ -1,393 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 80697, - "amount_paid": 0, - "amount_remaining": 80697, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cca5R", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cca5R/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 7255, - "currency": "usd", - "description": "Additional license (Feb 5, 2013 - Jan 2, 2014)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1388631845, - "start": 1360033445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 7255, - "unit_amount_decimal": "7255" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 56000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1388631845, - "start": 1357095845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 7, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 17442, - "currency": "usd", - "description": "Additional license (Apr 11, 2012 - Jan 2, 2013)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1357095845, - "start": 1334113445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000005", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0005", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 5814, - "unit_amount_decimal": "5814" - }, - "proration": false, - "quantity": 3, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 3, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 80697, - "tax": null, - "total": 80697, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GKuTy", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GKuTy/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 48000, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1357095845, - "start": 1325473445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -48000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -48000, - "unit_amount_decimal": "-48000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.2.json b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.2.json new file mode 100644 index 0000000000..ffb0b877b5 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--Invoice.list.2.json @@ -0,0 +1,399 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 80697, + "amount_paid": 0, + "amount_remaining": 80697, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000036lvg5", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000036lvg5/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 7255, + "currency": "usd", + "description": "Additional license (Feb 5, 2013 - Jan 2, 2014)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1388631845, + "start": 1360033445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 7255, + "unit_amount_decimal": "7255" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 56000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1388631845, + "start": 1357095845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 7, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 17442, + "currency": "usd", + "description": "Additional license (Apr 11, 2012 - Jan 2, 2013)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1334113445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000007", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0007", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5814, + "unit_amount_decimal": "5814" + }, + "proration": false, + "quantity": 3, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 3, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 80697, + "tax": null, + "total": 80697, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002WcDZF/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.1.json index f722b04075..799c067780 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.2.json index 9ed190192f..8bdd309a06 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.3.json index 3658be4b0b..fbe3749ee4 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.3.json @@ -6,7 +6,7 @@ "description": "Additional license (Apr 11, 2012 - Jan 2, 2013)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000005", + "id": "ii_NORMALIZED00000000000007", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.4.json b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.4.json index 56f0e3dffd..2233e6ea27 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.4.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.4.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000004", + "id": "ii_NORMALIZED00000000000006", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.5.json b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.5.json index 63d5c13333..c409bb5b0f 100644 --- a/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.5.json +++ b/corporate/tests/stripe_fixtures/invoice_plan--InvoiceItem.create.5.json @@ -6,7 +6,7 @@ "description": "Additional license (Feb 5, 2013 - Jan 2, 2014)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000003", + "id": "ii_NORMALIZED00000000000005", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..d0228560e0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_un6xCROZ30zl6GBCbxffPDX47", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.create.1.json new file mode 100644 index 0000000000..696686fba9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_un6xCROZ30zl6GBCbxffPDX47", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--PaymentMethod.create.1.json new file mode 100644 index 0000000000..25855fb428 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.create.1.json new file mode 100644 index 0000000000..8ac15e7388 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6SA4KHR4JzRvNzAqTD3c_secret_K86Jf76WwxFTspBr2xL68ZwxrRowJzd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6SA4KHR4JzRvNzAqTD3c", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6TA4KHR4JzRvMK73QFkx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.list.1.json new file mode 100644 index 0000000000..2a482888c1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6PA4KHR4JzRvTYLELLgl_secret_K86JQpqjgZ0znxnw94IgRxWZLtEwBiU", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6PA4KHR4JzRvTYLELLgl", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..8ac15e7388 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq6SA4KHR4JzRvNzAqTD3c_secret_K86Jf76WwxFTspBr2xL68ZwxrRowJzd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq6SA4KHR4JzRvNzAqTD3c", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq6TA4KHR4JzRvMK73QFkx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq6RA4KHR4JzRvdXEzoYlE", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--Token.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--Token.create.1.json deleted file mode 100644 index 60d47536e7..0000000000 --- a/corporate/tests/stripe_fixtures/invoice_plan--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.create.1.json new file mode 100644 index 0000000000..3d53d0d7f7 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01CE1CJmDbcwUHJx71bXicTd6oRnlwGRJzoUHgXKJvQqaD7A", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq6PA4KHR4JzRvTYLELLgl", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01CE1CJmDbcwUHJx71bXicTd6oRnlwGRJzoUHgXKJvQqaD7A#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.list.1.json new file mode 100644 index 0000000000..bf521bd263 --- /dev/null +++ b/corporate/tests/stripe_fixtures/invoice_plan--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01CE1CJmDbcwUHJx71bXicTd6oRnlwGRJzoUHgXKJvQqaD7A", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq6PA4KHR4JzRvTYLELLgl", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01CE1CJmDbcwUHJx71bXicTd6oRnlwGRJzoUHgXKJvQqaD7A#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.create.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.2.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.2.json new file mode 100644 index 0000000000..fa7faf791f --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.1.json new file mode 100644 index 0000000000..e047faa70a --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.1.json @@ -0,0 +1,57 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq83A4KHR4JzRvxZurlFUp", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq87A4KHR4JzRvFDevaVGA", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "ab11848e-d930-47d3-9de4-b196fa17c2de" + }, + "type": "customer.updated" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.2.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.2.json new file mode 100644 index 0000000000..27616dfc5a --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_1OOXeQTEcrsuD7SV3hJ0o6Wma", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq8DA4KHR4JzRv1ZdIve0r", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "646330c4-73e6-4e8c-bedd-ce984fe681fb" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq8DA4KHR4JzRv1VLWveOM", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "646330c4-73e6-4e8c-bedd-ce984fe681fb" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq8IA4KHR4JzRvl7o61FSE", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "03fdb684-989d-4751-b819-4804de28c8d7" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8FA4KHR4JzRvhhZKDLtU_secret_K86KGPUd3c82tOqsHiySKxBjYknXkIE", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8FA4KHR4JzRvhhZKDLtU", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8FA4KHR4JzRvvJfoMjkz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq8GA4KHR4JzRv2hs7vohT", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "a92fa037-cb41-4afc-b3bf-c79b78852845" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq8GA4KHR4JzRvjB7TJMAz", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "a92fa037-cb41-4afc-b3bf-c79b78852845" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8FA4KHR4JzRvhhZKDLtU_secret_K86KGPUd3c82tOqsHiySKxBjYknXkIE", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8FA4KHR4JzRvhhZKDLtU", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8FA4KHR4JzRvvJfoMjkz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq8GA4KHR4JzRv5AxbabWA", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "a92fa037-cb41-4afc-b3bf-c79b78852845" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8DA4KHR4JzRvlqNYzOw3_secret_K86KrCShpY15vRzz2uUtXdgF8PLSrSX", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8DA4KHR4JzRvlqNYzOw3", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq8DA4KHR4JzRvAW36i2X6", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "988fc708-25fb-49b1-b81f-2a7b8bb61a84" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_1OOXeQTEcrsuD7SV3hJ0o6Wma", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq8DA4KHR4JzRv1gwIJPyC", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "57798c93-6028-405c-a075-2a6582fe9ce6" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq8CA4KHR4JzRvhkVCYCWW", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "a661cd93-1312-41ad-a70c-6215bf380424" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.3.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.3.json new file mode 100644 index 0000000000..e63ce667f3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.3.json @@ -0,0 +1,115 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTq8MA4KHR4JzRvocq2zO4V", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "a1f05100-8dda-4aa0-b408-69b3af3268fc" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq8LA4KHR4JzRvj0eFGKWF", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "a1f05100-8dda-4aa0-b408-69b3af3268fc" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.4.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Invoice.list.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Invoice.list.1.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--Invoice.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--InvoiceItem.create.1.json new file mode 100644 index 0000000000..46db7c3adf --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--InvoiceItem.create.1.json @@ -0,0 +1,45 @@ +{ + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..71b92d5eda --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_1OOXeQTEcrsuD7SV3hJ0o6Wma", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.create.1.json new file mode 100644 index 0000000000..cdbd0ffbc6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_1OOXeQTEcrsuD7SV3hJ0o6Wma", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentMethod.create.1.json new file mode 100644 index 0000000000..f98b80c247 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.create.1.json new file mode 100644 index 0000000000..eba3d1771b --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8FA4KHR4JzRvhhZKDLtU_secret_K86KGPUd3c82tOqsHiySKxBjYknXkIE", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8FA4KHR4JzRvhhZKDLtU", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8FA4KHR4JzRvvJfoMjkz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.list.1.json new file mode 100644 index 0000000000..cc8dc0ecc0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8DA4KHR4JzRvlqNYzOw3_secret_K86KrCShpY15vRzz2uUtXdgF8PLSrSX", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8DA4KHR4JzRvlqNYzOw3", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..eba3d1771b --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8FA4KHR4JzRvhhZKDLtU_secret_K86KGPUd3c82tOqsHiySKxBjYknXkIE", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8FA4KHR4JzRvhhZKDLtU", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8FA4KHR4JzRvvJfoMjkz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8EA4KHR4JzRvxKmoXvNQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.create.1.json new file mode 100644 index 0000000000..052d057947 --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED019U5VX4xlXJ1VL1BCoGBhjiINwVuQUTqFRUPEKjVMYFLDYD", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8DA4KHR4JzRvlqNYzOw3", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED019U5VX4xlXJ1VL1BCoGBhjiINwVuQUTqFRUPEKjVMYFLDYD#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.list.1.json new file mode 100644 index 0000000000..9839553b2b --- /dev/null +++ b/corporate/tests/stripe_fixtures/payment_intent_succeeded_event_with_uncaught_exception--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED019U5VX4xlXJ1VL1BCoGBhjiINwVuQUTqFRUPEKjVMYFLDYD", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8DA4KHR4JzRvlqNYzOw3", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED019U5VX4xlXJ1VL1BCoGBhjiINwVuQUTqFRUPEKjVMYFLDYD#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.2.json new file mode 100644 index 0000000000..61faac9cbc --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.3.json new file mode 100644 index 0000000000..d2af8c0a9c --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.4.json new file mode 100644 index 0000000000..ab55014b7c --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.modify.4.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": true, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8uA4KHR4JzRvEAD4kqfy", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.2.json new file mode 100644 index 0000000000..c77f9f89c0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.3.json new file mode 100644 index 0000000000..7913fab0d2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.3.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": true, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.4.json similarity index 92% rename from corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.3.json rename to corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.4.json index 19028c05db..af343089f5 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.3.json +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.4.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": "card_NORMALIZED00000000000003", + "default_source": null, "delinquent": true, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.5.json similarity index 88% rename from corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.2.json rename to corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.5.json index a985aa0445..af343089f5 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.5.json @@ -3,8 +3,8 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": "card_NORMALIZED00000000000002", - "delinquent": false, + "default_source": null, + "delinquent": true, "description": "zulip (Zulip Dev)", "discount": null, "email": "hamlet@zulip.com", diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.6.json b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.6.json new file mode 100644 index 0000000000..fe81591955 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Customer.retrieve.6.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8uA4KHR4JzRvEAD4kqfy", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.1.json new file mode 100644 index 0000000000..c898d34f75 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.1.json @@ -0,0 +1,67 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0002", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTq8MA4KHR4JzRvocq2zO4V", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "a1f05100-8dda-4aa0-b408-69b3af3268fc" + }, + "type": "invoiceitem.created" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.2.json new file mode 100644 index 0000000000..8b09ebbbde --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_Bj9Yr8Tt6C1yOwIgDuGD9wwO8", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq8PA4KHR4JzRv10S0dsU4", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "b62836e3-d4c8-4775-a204-0e51600a4401" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq8PA4KHR4JzRv1tMjez7L", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "b62836e3-d4c8-4775-a204-0e51600a4401" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq8VA4KHR4JzRvSpwUcx1A", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "e96798d9-cb70-4cc0-9b7d-d2f2302972cb" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8SA4KHR4JzRvba7BWGUH_secret_K86LWA4bthqB7cmKSk0C53UjjSbNWIz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8SA4KHR4JzRvba7BWGUH", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8SA4KHR4JzRvEOEyLp4y", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq8TA4KHR4JzRvvmfe6BPd", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "af804b60-507d-49f6-a764-f5505aa5953b" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq8TA4KHR4JzRvhWZ0f4Ik", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "af804b60-507d-49f6-a764-f5505aa5953b" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8SA4KHR4JzRvba7BWGUH_secret_K86LWA4bthqB7cmKSk0C53UjjSbNWIz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8SA4KHR4JzRvba7BWGUH", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8SA4KHR4JzRvEOEyLp4y", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq8TA4KHR4JzRvimFsrzKs", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "af804b60-507d-49f6-a764-f5505aa5953b" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8QA4KHR4JzRvc2IMwQgm_secret_K86LpKq7n2ksCAPb1xTP0IlS9nOOCe5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8QA4KHR4JzRvc2IMwQgm", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq8QA4KHR4JzRvwcQ69NjM", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "20069118-7cdc-42f7-9ce1-cf2ba9233e66" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_Bj9Yr8Tt6C1yOwIgDuGD9wwO8", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq8PA4KHR4JzRv1hOvsALF", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "311db1c1-e145-48a2-8ec6-63d9e8a011de" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq8OA4KHR4JzRvGN8WUg5x", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "eda3dfe5-e64c-427c-88fc-f802c8ade935" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.3.json new file mode 100644 index 0000000000..67bca7c33f --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq8bA4KHR4JzRvyA8G8Dfq", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7d7629fd-d156-41a4-8463-b3d0d196d957" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq8bA4KHR4JzRvQEXPS1G3", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7d7629fd-d156-41a4-8463-b3d0d196d957" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq8bA4KHR4JzRvTJMPsE1t", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7d7629fd-d156-41a4-8463-b3d0d196d957" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq8bA4KHR4JzRvNbQk9gp6", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "7d7629fd-d156-41a4-8463-b3d0d196d957" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq8aA4KHR4JzRv98Prv3uX", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "2e92d12b-3781-492d-a2fb-a6c128f29890" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq8aA4KHR4JzRvWqjxA8XC", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "2e92d12b-3781-492d-a2fb-a6c128f29890" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq8aA4KHR4JzRvYY4YaYyq", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "2e92d12b-3781-492d-a2fb-a6c128f29890" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTq8ZA4KHR4JzRvhhdpEwoW", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "b8ac29c1-0bf0-458e-8c0a-ea92593fc407" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTq8YA4KHR4JzRvNj5a74gM", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "19e164d0-3c6d-474d-85bd-87872d128a46" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq8YA4KHR4JzRvOx2w3s8X", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "19e164d0-3c6d-474d-85bd-87872d128a46" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.1.json new file mode 100644 index 0000000000..b1ce8ae15b --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.1.json @@ -0,0 +1,174 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.2.json new file mode 100644 index 0000000000..f82889c752 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.create.2.json @@ -0,0 +1,130 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 0, + "amount_remaining": 5000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.1.json new file mode 100644 index 0000000000..542203d5ca --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.1.json @@ -0,0 +1,174 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.2.json new file mode 100644 index 0000000000..31c4eee8ad --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.finalize_invoice.2.json @@ -0,0 +1,130 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 0, + "amount_remaining": 5000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.1.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.2.json new file mode 100644 index 0000000000..c1f4a3f20a --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.2.json @@ -0,0 +1,137 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 0, + "amount_remaining": 5000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.3.json new file mode 100644 index 0000000000..d3bc275873 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.3.json @@ -0,0 +1,137 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 0, + "amount_remaining": 5000, + "application_fee_amount": null, + "attempt_count": 1, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": "ch_NORMALIZED00000000000002", + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.4.json new file mode 100644 index 0000000000..30120326fd --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.list.4.json @@ -0,0 +1,311 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 5000, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 1, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": "ch_NORMALIZED00000000000003", + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001I5Xdh/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.1.json new file mode 100644 index 0000000000..14d3f9e04d --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.1.json @@ -0,0 +1,537 @@ +{ + "_message": "Your card was declined.", + "code": "card_declined", + "error": { + "charge": "ch_NORMALIZED00000000000002", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "param": null, + "payment_intent": { + "amount": 5000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 5000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "Stripe", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Payment for Invoice", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": null, + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": {}, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_f70lixzKwcMJmjTeutUc42GVN", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Payment for Invoice", + "id": "pi_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000002", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": {}, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "setup_intent": null, + "source": null, + "type": "card_error" + }, + "headers": { + "Connection": "keep-alive", + "Content-Length": "7950", + "Content-Type": "application/json", + "Date": "NORMALIZED DATETIME", + "Server": "nginx", + "Strict-Transport-Security": "max-age=31556926; includeSubDomains; preload", + "access-control-allow-credentials": "true", + "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", + "access-control-allow-origin": "*", + "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", + "access-control-max-age": "300", + "cache-control": "no-cache, no-store", + "idempotency-key": "00000000-0000-0000-0000-000000000000", + "original-request": "req_NORMALIZED0012", + "request-id": "req_NORMALIZED0012", + "stripe-should-retry": "false", + "stripe-version": "2020-08-27", + "x-stripe-c-cost": "6" + }, + "http_body": "{\n \"error\": {\n \"charge\": \"ch_NORMALIZED00000000000002\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_intent\": {\n \"id\": \"pi_NORMALIZED00000000000002\",\n \"object\": \"payment_intent\",\n \"amount\": 5000,\n \"amount_capturable\": 0,\n \"amount_received\": 0,\n \"application\": null,\n \"application_fee_amount\": null,\n \"canceled_at\": null,\n \"cancellation_reason\": null,\n \"capture_method\": \"automatic\",\n \"charges\": {\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"ch_NORMALIZED00000000000002\",\n \"object\": \"charge\",\n \"amount\": 5000,\n \"amount_captured\": 0,\n \"amount_refunded\": 0,\n \"application\": null,\n \"application_fee\": null,\n \"application_fee_amount\": null,\n \"balance_transaction\": null,\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"calculated_statement_descriptor\": \"Stripe\",\n \"captured\": false,\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Payment for Invoice\",\n \"destination\": null,\n \"dispute\": null,\n \"disputed\": false,\n \"failure_code\": \"card_declined\",\n \"failure_message\": \"Your card was declined.\",\n \"fraud_details\": {\n },\n \"invoice\": \"in_NORMALIZED00000000000002\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"on_behalf_of\": null,\n \"order\": null,\n \"outcome\": {\n \"network_status\": \"declined_by_network\",\n \"reason\": \"generic_decline\",\n \"risk_level\": \"normal\",\n \"risk_score\": 12,\n \"seller_message\": \"The bank did not return any further details with this decline.\",\n \"type\": \"issuer_declined\"\n },\n \"paid\": false,\n \"payment_intent\": \"pi_NORMALIZED00000000000002\",\n \"payment_method\": \"pm_1JTq8jA4KHR4JzRvlhFpfIIj\",\n \"payment_method_details\": {\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"installments\": null,\n \"last4\": \"0341\",\n \"network\": \"visa\",\n \"three_d_secure\": null,\n \"wallet\": null\n },\n \"type\": \"card\"\n },\n \"receipt_email\": null,\n \"receipt_number\": null,\n \"receipt_url\": null,\n \"refunded\": false,\n \"refunds\": {\n \"object\": \"list\",\n \"data\": [\n\n ],\n \"has_more\": false,\n \"total_count\": 0,\n \"url\": \"/v1/charges/ch_NORMALIZED00000000000002/refunds\"\n },\n \"review\": null,\n \"shipping\": null,\n \"source\": null,\n \"source_transfer\": null,\n \"statement_descriptor\": null,\n \"statement_descriptor_suffix\": null,\n \"status\": \"failed\",\n \"transfer_data\": null,\n \"transfer_group\": null\n }\n ],\n \"has_more\": false,\n \"total_count\": 1,\n \"url\": \"/v1/charges?payment_intent=pi_NORMALIZED00000000000002\"\n },\n \"client_secret\": \"pi_NORMALIZED00000000000002_secret_f70lixzKwcMJmjTeutUc42GVN\",\n \"confirmation_method\": \"automatic\",\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Payment for Invoice\",\n \"invoice\": \"in_NORMALIZED00000000000002\",\n \"last_payment_error\": {\n \"charge\": \"ch_NORMALIZED00000000000002\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_method\": {\n \"id\": \"pm_1JTq8jA4KHR4JzRvlhFpfIIj\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n },\n \"livemode\": false,\n \"metadata\": {\n },\n \"next_action\": null,\n \"on_behalf_of\": null,\n \"payment_method\": null,\n \"payment_method_options\": {\n \"card\": {\n \"installments\": null,\n \"network\": null,\n \"request_three_d_secure\": \"automatic\"\n }\n },\n \"payment_method_types\": [\n \"card\"\n ],\n \"receipt_email\": null,\n \"review\": null,\n \"setup_future_usage\": null,\n \"shipping\": null,\n \"source\": null,\n \"statement_descriptor\": null,\n \"statement_descriptor_suffix\": null,\n \"status\": \"requires_payment_method\",\n \"transfer_data\": null,\n \"transfer_group\": null\n },\n \"payment_method\": {\n \"id\": \"pm_1JTq8jA4KHR4JzRvlhFpfIIj\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n }\n}\n", + "http_status": 402, + "json_body": { + "error": { + "charge": "ch_NORMALIZED00000000000002", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_intent": { + "amount": 5000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 5000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "Stripe", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Payment for Invoice", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": null, + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_f70lixzKwcMJmjTeutUc42GVN", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Payment for Invoice", + "id": "pi_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000002", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": {}, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + } + }, + "param": null, + "request_id": "req_NORMALIZED0012" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.2.json new file mode 100644 index 0000000000..559fcc0961 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--Invoice.pay.2.json @@ -0,0 +1,130 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 5000, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 1, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": "ch_NORMALIZED00000000000003", + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002AY8rm/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.1.json new file mode 100644 index 0000000000..3aa8989852 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.1.json @@ -0,0 +1,45 @@ +{ + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.2.json new file mode 100644 index 0000000000..54cacd8425 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.2.json @@ -0,0 +1,45 @@ +{ + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.3.json new file mode 100644 index 0000000000..59db9ebd50 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--InvoiceItem.create.3.json @@ -0,0 +1,45 @@ +{ + "amount": 5000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": null, + "discountable": true, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": 5000, + "unit_amount_decimal": "5000" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..51c1f814c5 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_Bj9Yr8Tt6C1yOwIgDuGD9wwO8", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.create.1.json new file mode 100644 index 0000000000..c405fc07bc --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_Bj9Yr8Tt6C1yOwIgDuGD9wwO8", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.1.json new file mode 100644 index 0000000000..07b66e5a9c --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.2.json new file mode 100644 index 0000000000..1b98512f38 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000004", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8gA4KHR4JzRvSIOszyfC", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.3.json new file mode 100644 index 0000000000..ffb6be9a6f --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.3.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.4.json new file mode 100644 index 0000000000..225cbab001 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.create.4.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8uA4KHR4JzRvEAD4kqfy", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.1.json new file mode 100644 index 0000000000..75be4501b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.2.json new file mode 100644 index 0000000000..d33af16f7c --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.detach.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.1.json new file mode 100644 index 0000000000..cef80616dd --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.1.json @@ -0,0 +1,101 @@ +{ + "data": [ + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/payment_methods" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.2.json new file mode 100644 index 0000000000..7520524f74 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--PaymentMethod.list.2.json @@ -0,0 +1,54 @@ +{ + "data": [ + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq8uA4KHR4JzRvEAD4kqfy", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/payment_methods" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.1.json new file mode 100644 index 0000000000..ce0058c774 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8SA4KHR4JzRvba7BWGUH_secret_K86LWA4bthqB7cmKSk0C53UjjSbNWIz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8SA4KHR4JzRvba7BWGUH", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8SA4KHR4JzRvEOEyLp4y", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.2.json new file mode 100644 index 0000000000..3445f20386 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.2.json @@ -0,0 +1,306 @@ +{ + "_message": "Your card was declined.", + "code": "card_declined", + "error": { + "charge": null, + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "param": null, + "payment_intent": null, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000004", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8gA4KHR4JzRvSIOszyfC", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "setup_intent": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8hA4KHR4JzRvv79LhlMT_secret_K86LlJKZBLB0Ys9ecjnUiLN7UNo52Ay", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8hA4KHR4JzRvv79LhlMT", + "last_setup_error": { + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000004", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8gA4KHR4JzRvSIOszyfC", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "latest_attempt": "setatt_1JTq8hA4KHR4JzRvJU0axOBx", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + }, + "source": null, + "type": "card_error" + }, + "headers": { + "Connection": "keep-alive", + "Content-Length": "3817", + "Content-Type": "application/json", + "Date": "NORMALIZED DATETIME", + "Server": "nginx", + "Strict-Transport-Security": "max-age=31556926; includeSubDomains; preload", + "access-control-allow-credentials": "true", + "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", + "access-control-allow-origin": "*", + "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", + "access-control-max-age": "300", + "cache-control": "no-cache, no-store", + "idempotency-key": "00000000-0000-0000-0000-000000000000", + "original-request": "req_NORMALIZED0013", + "request-id": "req_NORMALIZED0013", + "stripe-should-retry": "false", + "stripe-version": "2020-08-27", + "x-stripe-c-cost": "6" + }, + "http_body": "{\n \"error\": {\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_method\": {\n \"id\": \"pm_1JTq8gA4KHR4JzRvSIOszyfC\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000004\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0002\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": null,\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"setup_intent\": {\n \"id\": \"seti_1JTq8hA4KHR4JzRvv79LhlMT\",\n \"object\": \"setup_intent\",\n \"application\": null,\n \"cancellation_reason\": null,\n \"client_secret\": \"seti_1JTq8hA4KHR4JzRvv79LhlMT_secret_K86LlJKZBLB0Ys9ecjnUiLN7UNo52Ay\",\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": null,\n \"last_setup_error\": {\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_method\": {\n \"id\": \"pm_1JTq8gA4KHR4JzRvSIOszyfC\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000004\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0002\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": null,\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n },\n \"latest_attempt\": \"setatt_1JTq8hA4KHR4JzRvJU0axOBx\",\n \"livemode\": false,\n \"mandate\": null,\n \"metadata\": {\n },\n \"next_action\": null,\n \"on_behalf_of\": null,\n \"payment_method\": null,\n \"payment_method_options\": {\n \"card\": {\n \"request_three_d_secure\": \"automatic\"\n }\n },\n \"payment_method_types\": [\n \"card\"\n ],\n \"single_use_mandate\": null,\n \"status\": \"requires_payment_method\",\n \"usage\": \"off_session\"\n },\n \"type\": \"card_error\"\n }\n}\n", + "http_status": 402, + "json_body": { + "error": { + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000004", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8gA4KHR4JzRvSIOszyfC", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "setup_intent": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8hA4KHR4JzRvv79LhlMT_secret_K86LlJKZBLB0Ys9ecjnUiLN7UNo52Ay", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8hA4KHR4JzRvv79LhlMT", + "last_setup_error": { + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000004", + "funding": "credit", + "generated_from": null, + "last4": "0002", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq8gA4KHR4JzRvSIOszyfC", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "latest_attempt": "setatt_1JTq8hA4KHR4JzRvJU0axOBx", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + }, + "type": "card_error" + } + }, + "param": null, + "request_id": "req_NORMALIZED0013" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.3.json new file mode 100644 index 0000000000..e389b72008 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.3.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8kA4KHR4JzRvFWgYp41A_secret_K86LdyuHOMih3wgo8oe5safqFFQFax2", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8kA4KHR4JzRvFWgYp41A", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8kA4KHR4JzRvBJK6cEuB", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.4.json new file mode 100644 index 0000000000..a7d440e148 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.create.4.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8wA4KHR4JzRvfgl6sWXU_secret_K86LrSZu8GCKco6ZLVEW5Q0qNUK0u7G", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8wA4KHR4JzRvfgl6sWXU", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8wA4KHR4JzRvNL61X0Ey", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8uA4KHR4JzRvEAD4kqfy", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.1.json new file mode 100644 index 0000000000..076b13fd9b --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8QA4KHR4JzRvc2IMwQgm_secret_K86LpKq7n2ksCAPb1xTP0IlS9nOOCe5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8QA4KHR4JzRvc2IMwQgm", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.2.json new file mode 100644 index 0000000000..ba9d73022e --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.2.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8fA4KHR4JzRvmZ9Hqisp_secret_K86LtDdlo0BterdDp6Syegw8c22QUzz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8fA4KHR4JzRvmZ9Hqisp", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.3.json new file mode 100644 index 0000000000..35e11ce303 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.3.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8iA4KHR4JzRvU94C48s7_secret_K86LLzaHSaMax1lfIKJj5cPlemtpob3", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8iA4KHR4JzRvU94C48s7", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.4.json new file mode 100644 index 0000000000..60ea264d82 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.list.4.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8uA4KHR4JzRv8cWRyqIJ_secret_K86LYZeSenSPj4sdidbGdL6Ai7oaJ73", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8uA4KHR4JzRv8cWRyqIJ", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..ce0058c774 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8SA4KHR4JzRvba7BWGUH_secret_K86LWA4bthqB7cmKSk0C53UjjSbNWIz", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8SA4KHR4JzRvba7BWGUH", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8SA4KHR4JzRvEOEyLp4y", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8RA4KHR4JzRvAizme7g0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.2.json new file mode 100644 index 0000000000..e389b72008 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.2.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8kA4KHR4JzRvFWgYp41A_secret_K86LdyuHOMih3wgo8oe5safqFFQFax2", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8kA4KHR4JzRvFWgYp41A", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8kA4KHR4JzRvBJK6cEuB", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8jA4KHR4JzRvlhFpfIIj", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.3.json new file mode 100644 index 0000000000..a7d440e148 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--SetupIntent.retrieve.3.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq8wA4KHR4JzRvfgl6sWXU_secret_K86LrSZu8GCKco6ZLVEW5Q0qNUK0u7G", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq8wA4KHR4JzRvfgl6sWXU", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq8wA4KHR4JzRvNL61X0Ey", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq8uA4KHR4JzRvEAD4kqfy", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.1.json new file mode 100644 index 0000000000..dc889607b9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01MWKUOku1yVTwiY2OPyaFyiK00Mk5xb0aAfxlZXPSPnDLEY", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8QA4KHR4JzRvc2IMwQgm", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01MWKUOku1yVTwiY2OPyaFyiK00Mk5xb0aAfxlZXPSPnDLEY#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.2.json new file mode 100644 index 0000000000..5224419891 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.2.json @@ -0,0 +1,38 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02hXs0nrJEiNoL3fGz2lq7wYe6uARlvSNHLXXWK7GXzN0gya", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8fA4KHR4JzRvmZ9Hqisp", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02hXs0nrJEiNoL3fGz2lq7wYe6uARlvSNHLXXWK7GXzN0gya#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.3.json new file mode 100644 index 0000000000..bb49e3525c --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.3.json @@ -0,0 +1,38 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED03aaL5EyHPjA3OaKxFSz0FgmeNgnNNGCGdEG41VMPGQv0TRO", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8iA4KHR4JzRvU94C48s7", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED03aaL5EyHPjA3OaKxFSz0FgmeNgnNNGCGdEG41VMPGQv0TRO#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.4.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.4.json new file mode 100644 index 0000000000..0f07bd8034 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.create.4.json @@ -0,0 +1,38 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED04uc93z6n0ZSUSOaAnR0zc3QgYyn3u8gKM3aDfQK02avvAGL", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8uA4KHR4JzRv8cWRyqIJ", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED04uc93z6n0ZSUSOaAnR0zc3QgYyn3u8gKM3aDfQK02avvAGL#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.1.json new file mode 100644 index 0000000000..b15ab84a89 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01MWKUOku1yVTwiY2OPyaFyiK00Mk5xb0aAfxlZXPSPnDLEY", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8QA4KHR4JzRvc2IMwQgm", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01MWKUOku1yVTwiY2OPyaFyiK00Mk5xb0aAfxlZXPSPnDLEY#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.2.json new file mode 100644 index 0000000000..b1b3e9dca0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.2.json @@ -0,0 +1,45 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED03aaL5EyHPjA3OaKxFSz0FgmeNgnNNGCGdEG41VMPGQv0TRO", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8iA4KHR4JzRvU94C48s7", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED03aaL5EyHPjA3OaKxFSz0FgmeNgnNNGCGdEG41VMPGQv0TRO#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.3.json new file mode 100644 index 0000000000..eed16209ca --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_method--checkout.Session.list.3.json @@ -0,0 +1,45 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED04uc93z6n0ZSUSOaAnR0zc3QgYyn3u8gKM3aDfQK02avvAGL", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq8uA4KHR4JzRv8cWRyqIJ", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED04uc93z6n0ZSUSOaAnR0zc3QgYyn3u8gKM3aDfQK02avvAGL#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Charge.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Charge.create.1.json deleted file mode 100644 index 3114f2b613..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 48000, - "amount_captured": 48000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $80.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.create.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.2.json new file mode 100644 index 0000000000..f164380600 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.3.json new file mode 100644 index 0000000000..033fd58262 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.4.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.4.json new file mode 100644 index 0000000000..a895b3415d --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.modify.4.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": true, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JItT7A4KHR4JzRvp5lQOWqG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.1.json index e5926664e4..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.1.json @@ -2,32 +2,8 @@ "address": null, "balance": 0, "created": 1000000000, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "currency": null, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -45,43 +21,10 @@ "realm_str": "zulip" }, "name": null, - "next_invoice_sequence": 3, + "next_invoice_sequence": 1, "object": "customer", "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.2.json index e5926664e4..230a571b80 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.2.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -36,7 +12,7 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", "footer": null }, "livemode": false, @@ -50,38 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.3.json index e5926664e4..d46ee1e0fb 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.3.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.3.json @@ -3,32 +3,8 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "delinquent": false, + "default_source": null, + "delinquent": true, "description": "zulip (Zulip Dev)", "discount": null, "email": "hamlet@zulip.com", @@ -36,7 +12,53 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, "footer": null }, "livemode": false, @@ -50,38 +72,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.4.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.4.json index 0907250d59..c48aea382f 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.4.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.4.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": true, "description": "zulip (Zulip Dev)", "discount": null, @@ -36,7 +12,7 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", "footer": null }, "livemode": false, @@ -50,38 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.5.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.5.json index 0907250d59..9581cba696 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.5.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.5.json @@ -3,32 +3,8 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "delinquent": true, + "default_source": null, + "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, "email": "hamlet@zulip.com", @@ -36,7 +12,53 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItT7A4KHR4JzRvp5lQOWqG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, "footer": null }, "livemode": false, @@ -50,38 +72,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.6.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.6.json deleted file mode 100644 index 4d22405ef6..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.retrieve.6.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": null, - "balance": 0, - "created": 1000000000, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "MasterCard", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000003", - "funding": "credit", - "id": "card_NORMALIZED00000000000003", - "last4": "4444", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "delinquent": false, - "description": "zulip (Zulip Dev)", - "discount": null, - "email": "hamlet@zulip.com", - "id": "cus_NORMALIZED0001", - "invoice_prefix": "NORMA01", - "invoice_settings": { - "custom_fields": null, - "default_payment_method": null, - "footer": null - }, - "livemode": false, - "metadata": { - "realm_id": "1", - "realm_str": "zulip" - }, - "name": null, - "next_invoice_sequence": 3, - "object": "customer", - "phone": null, - "preferred_locales": [], - "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "MasterCard", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000003", - "funding": "credit", - "id": "card_NORMALIZED00000000000003", - "last4": "4444", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, - "tax_exempt": "none" -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.1.json deleted file mode 100644 index 1465905217..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Customer.save.1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "_message": "Your card was declined.", - "code": "card_declined", - "error": { - "charge": null, - "code": "card_declined", - "decline_code": "lost_card", - "doc_url": "https://stripe.com/docs/error-codes/card-declined", - "message": "Your card was declined.", - "param": "", - "payment_intent": null, - "payment_method": null, - "setup_intent": null, - "source": null, - "type": "card_error" - }, - "headers": { - "Connection": "keep-alive", - "Content-Length": "235", - "Content-Type": "application/json", - "Date": "NORMALIZED DATETIME", - "Server": "nginx", - "Strict-Transport-Security": "max-age=31556926; includeSubDomains; preload", - "access-control-allow-credentials": "true", - "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", - "access-control-allow-origin": "*", - "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", - "access-control-max-age": "300", - "cache-control": "no-cache, no-store", - "idempotency-key": "00000000-0000-0000-0000-000000000000", - "original-request": "req_NORMALIZED0001", - "request-id": "req_NORMALIZED0001", - "stripe-should-retry": "false", - "stripe-version": "2020-08-27", - "x-stripe-c-cost": "6" - }, - "http_body": "{\n \"error\": {\n \"code\": \"card_declined\",\n \"decline_code\": \"lost_card\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"param\": \"\",\n \"type\": \"card_error\"\n }\n}\n", - "http_status": 402, - "json_body": { - "error": { - "code": "card_declined", - "decline_code": "lost_card", - "doc_url": "https://stripe.com/docs/error-codes/card-declined", - "message": "Your card was declined.", - "param": "", - "type": "card_error" - } - }, - "param": "", - "request_id": "req_NORMALIZED0001" -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.1.json new file mode 100644 index 0000000000..105801d628 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.1.json @@ -0,0 +1,152 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 984000, + "amount_paid": 0, + "amount_remaining": 984000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "send_invoice", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": 1000000000, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000019XmJp", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000019XmJp/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 984000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1393729445, + "start": 1362193445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 123, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 984000, + "tax": null, + "total": 984000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JItSfA4KHR4JzRvByroiBGa", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "6436e396-71ab-4ba8-8dcf-f1ccea116a67" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.2.json new file mode 100644 index 0000000000..b214bf88c7 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_Im1orO6NHwBivJ42MzxCIdEZr", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_1JItSqA4KHR4JzRvrOrG0FkN", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "96d3182e-dae3-43bf-a73f-589301479ade" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_1JItSqA4KHR4JzRvAGpG0LlD", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "96d3182e-dae3-43bf-a73f-589301479ade" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JItSoA4KHR4JzRvofWzFFQq", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "0aed21bf-e454-4c99-b545-49f621baaedc" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSlA4KHR4JzRvR6Rwwr7M_secret_Jwn2lXV2MSEZKWF3wSVdeO7lc0vuJG5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSlA4KHR4JzRvR6Rwwr7M", + "last_setup_error": null, + "latest_attempt": "setatt_1JItSlA4KHR4JzRv7fAlEWY9", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JItSmA4KHR4JzRvRNGH8370", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "79b5de70-d672-4624-9597-a8883d1a53e6" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JItSmA4KHR4JzRvafkfSlRY", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "79b5de70-d672-4624-9597-a8883d1a53e6" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSlA4KHR4JzRvR6Rwwr7M_secret_Jwn2lXV2MSEZKWF3wSVdeO7lc0vuJG5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSlA4KHR4JzRvR6Rwwr7M", + "last_setup_error": null, + "latest_attempt": "setatt_1JItSlA4KHR4JzRv7fAlEWY9", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JItSmA4KHR4JzRvNMFaTrZx", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "79b5de70-d672-4624-9597-a8883d1a53e6" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSjA4KHR4JzRv9tSAgsFv_secret_Jwn2gEUp7bL0HJuowuuzPaCB43cDc1U", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSjA4KHR4JzRv9tSAgsFv", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JItSjA4KHR4JzRvWwWty2vw", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "9e0ba2c8-8074-4a2a-bdf2-f183da62ffd9" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_Im1orO6NHwBivJ42MzxCIdEZr", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_1JItSiA4KHR4JzRvjNtcxlUt", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "7e909a0a-8cd3-4c9d-afd4-12d8250f2454" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JItShA4KHR4JzRvskPDM08r", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "0f864b6f-ac59-42f5-b91e-cf66d3ddf4fb" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.3.json new file mode 100644 index 0000000000..ed0fc44da9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JItStA4KHR4JzRv8WU2L7QL", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "0ffa9c41-6971-44db-9446-23b89f376750" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JItStA4KHR4JzRvi0Xcy47B", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "0ffa9c41-6971-44db-9446-23b89f376750" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JItStA4KHR4JzRv0Vszdsye", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "0ffa9c41-6971-44db-9446-23b89f376750" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JItStA4KHR4JzRvetwD3jGX", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "0ffa9c41-6971-44db-9446-23b89f376750" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JItSsA4KHR4JzRvr2ObNmrm", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "60553241-ce66-438d-93a3-a853150437e7" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JItSsA4KHR4JzRvVZ3U32IA", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "60553241-ce66-438d-93a3-a853150437e7" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JItSsA4KHR4JzRvPVa7qQ4P", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "60553241-ce66-438d-93a3-a853150437e7" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JItSrA4KHR4JzRvmJd2oAtZ", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "87a9e8e5-9f1e-414c-87a8-c58b051a5c2a" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JItSrA4KHR4JzRvEnep3mvw", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "07db5c3a-7431-4579-b57b-309f554f8ab7" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JItSrA4KHR4JzRvftHO2MBA", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "07db5c3a-7431-4579-b57b-309f554f8ab7" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.4.json b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.1.json index 85ba0a34b9..8ed35b3b41 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,49 +49,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -48000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000002", "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, @@ -115,6 +72,51 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.2.json index c8f2784982..e249c2e577 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000002", + "id": "in_NORMALIZED00000000000003", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": true, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.1.json index bc44ce72db..d9b505a029 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GxeBj", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GxeBj/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,49 +49,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -48000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000002", "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, @@ -115,6 +72,51 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.2.json index 4ea76045c5..9a7636ad45 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": true, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.1.json index 5065640a13..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.1.json @@ -1,135 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 5000, - "amount_paid": 0, - "amount_remaining": 5000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 5000, - "currency": "usd", - "description": null, - "discount_amounts": [], - "discountable": true, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 5000, - "unit_amount_decimal": "5000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": null, - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 5000, - "tax": null, - "total": 5000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.2.json index ec3f6c264f..7e94d0d59b 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.2.json @@ -2,21 +2,21 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5000, "amount_paid": 0, "amount_remaining": 5000, "application_fee_amount": null, - "attempt_count": 1, - "attempted": true, + "attempt_count": 0, + "attempted": false, "auto_advance": false, "automatic_tax": { "enabled": false, "status": null }, "billing_reason": "manual", - "charge": "ch_NORMALIZED00000000000002", + "charge": null, "collection_method": "charge_automatically", "created": 1000000000, "currency": "usd", @@ -38,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -51,8 +51,8 @@ "discount_amounts": [], "discountable": true, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -66,14 +66,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -91,16 +92,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.3.json index ec3f6c264f..e7de99d960 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.3.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.3.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5000, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -51,8 +51,8 @@ "discount_amounts": [], "discountable": true, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -66,14 +66,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -91,16 +92,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.4.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.4.json index 6d9fb11490..88663e5adf 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.4.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.list.4.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5000, "amount_paid": 5000, @@ -38,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -51,8 +51,8 @@ "discount_amounts": [], "discountable": true, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -66,14 +66,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -91,16 +92,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": true, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -131,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -167,9 +168,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GxeBj", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001GxeBj/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002nN4LH/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -180,49 +181,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -48000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000002", "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, @@ -246,6 +204,51 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -263,12 +266,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.1.json index c1639c89c6..18d931b548 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.1.json @@ -29,15 +29,15 @@ "balance_transaction": null, "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, "calculated_statement_descriptor": "Stripe", @@ -53,7 +53,7 @@ "failure_message": "Your card was declined.", "fraud_details": {}, "id": "ch_NORMALIZED00000000000002", - "invoice": "in_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "charge", @@ -68,20 +68,20 @@ "type": "issuer_declined" }, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_method": "card_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000003", + "payment_method": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", "exp_month": 3, "exp_year": 2033, - "fingerprint": "NORMALIZED000002", + "fingerprint": "NORMALIZED000001", "funding": "credit", "installments": null, "last4": "0341", @@ -98,31 +98,7 @@ "refunds": {}, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": null, "statement_descriptor_suffix": null, @@ -134,46 +110,68 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000003" }, - "client_secret": "pi_NORMALIZED00000000000001_secret_HnG1WHH5Lq8sSIQEgu5DgsxBW", + "client_secret": "pi_NORMALIZED00000000000003_secret_kRNeiOWgFBpDweYKcmccTn53m", "confirmation_method": "automatic", "created": 1000000000, "currency": "usd", "customer": "cus_NORMALIZED0001", "description": "Payment for Invoice", - "id": "pi_NORMALIZED00000000000001", - "invoice": "in_NORMALIZED00000000000002", + "id": "pi_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000003", "last_payment_error": { "charge": "ch_NORMALIZED00000000000002", "code": "card_declined", "decline_code": "generic_decline", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null + "object": "payment_method", + "type": "card" }, "type": "card_error" }, @@ -204,38 +202,60 @@ "transfer_data": null, "transfer_group": null }, - "payment_method": null, - "setup_intent": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null + "object": "payment_method", + "type": "card" }, + "setup_intent": null, + "source": null, "type": "card_error" }, "headers": { "Connection": "keep-alive", - "Content-Length": "7985", + "Content-Length": "7950", "Content-Type": "application/json", "Date": "NORMALIZED DATETIME", "Server": "nginx", @@ -247,13 +267,13 @@ "access-control-max-age": "300", "cache-control": "no-cache, no-store", "idempotency-key": "00000000-0000-0000-0000-000000000000", - "original-request": "req_NORMALIZED0002", - "request-id": "req_NORMALIZED0002", + "original-request": "req_NORMALIZED0012", + "request-id": "req_NORMALIZED0012", "stripe-should-retry": "false", "stripe-version": "2020-08-27", - "x-stripe-c-cost": "7" + "x-stripe-c-cost": "6" }, - "http_body": "{\n \"error\": {\n \"charge\": \"ch_NORMALIZED00000000000002\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_intent\": {\n \"id\": \"pi_NORMALIZED00000000000001\",\n \"object\": \"payment_intent\",\n \"amount\": 5000,\n \"amount_capturable\": 0,\n \"amount_received\": 0,\n \"application\": null,\n \"application_fee_amount\": null,\n \"canceled_at\": null,\n \"cancellation_reason\": null,\n \"capture_method\": \"automatic\",\n \"charges\": {\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"ch_NORMALIZED00000000000002\",\n \"object\": \"charge\",\n \"amount\": 5000,\n \"amount_captured\": 0,\n \"amount_refunded\": 0,\n \"application\": null,\n \"application_fee\": null,\n \"application_fee_amount\": null,\n \"balance_transaction\": null,\n \"billing_details\": {\n \"address\": {\n \"city\": \"Pacific\",\n \"country\": \"United States\",\n \"line1\": \"Under the sea,\",\n \"line2\": null,\n \"postal_code\": \"33333\",\n \"state\": null\n },\n \"email\": null,\n \"name\": \"Ada Starr\",\n \"phone\": null\n },\n \"calculated_statement_descriptor\": \"Stripe\",\n \"captured\": false,\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Payment for Invoice\",\n \"destination\": null,\n \"dispute\": null,\n \"disputed\": false,\n \"failure_code\": \"card_declined\",\n \"failure_message\": \"Your card was declined.\",\n \"fraud_details\": {\n },\n \"invoice\": \"in_NORMALIZED00000000000002\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"on_behalf_of\": null,\n \"order\": null,\n \"outcome\": {\n \"network_status\": \"declined_by_network\",\n \"reason\": \"generic_decline\",\n \"risk_level\": \"normal\",\n \"risk_score\": 38,\n \"seller_message\": \"The bank did not return any further details with this decline.\",\n \"type\": \"issuer_declined\"\n },\n \"paid\": false,\n \"payment_intent\": \"pi_NORMALIZED00000000000001\",\n \"payment_method\": \"card_NORMALIZED00000000000002\",\n \"payment_method_details\": {\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": \"pass\",\n \"address_postal_code_check\": \"pass\",\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000002\",\n \"funding\": \"credit\",\n \"installments\": null,\n \"last4\": \"0341\",\n \"network\": \"visa\",\n \"three_d_secure\": null,\n \"wallet\": null\n },\n \"type\": \"card\"\n },\n \"receipt_email\": null,\n \"receipt_number\": null,\n \"receipt_url\": null,\n \"refunded\": false,\n \"refunds\": {\n \"object\": \"list\",\n \"data\": [\n\n ],\n \"has_more\": false,\n \"total_count\": 0,\n \"url\": \"/v1/charges/ch_NORMALIZED00000000000002/refunds\"\n },\n \"review\": null,\n \"shipping\": null,\n \"source\": {\n \"id\": \"card_NORMALIZED00000000000002\",\n \"object\": \"card\",\n \"address_city\": \"Pacific\",\n \"address_country\": \"United States\",\n \"address_line1\": \"Under the sea,\",\n \"address_line1_check\": \"pass\",\n \"address_line2\": null,\n \"address_state\": null,\n \"address_zip\": \"33333\",\n \"address_zip_check\": \"pass\",\n \"brand\": \"Visa\",\n \"country\": \"US\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"cvc_check\": \"pass\",\n \"dynamic_last4\": null,\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000002\",\n \"funding\": \"credit\",\n \"last4\": \"0341\",\n \"metadata\": {\n },\n \"name\": \"Ada Starr\",\n \"tokenization_method\": null\n },\n \"source_transfer\": null,\n \"statement_descriptor\": null,\n \"statement_descriptor_suffix\": null,\n \"status\": \"failed\",\n \"transfer_data\": null,\n \"transfer_group\": null\n }\n ],\n \"has_more\": false,\n \"total_count\": 1,\n \"url\": \"/v1/charges?payment_intent=pi_NORMALIZED00000000000001\"\n },\n \"client_secret\": \"pi_NORMALIZED00000000000001_secret_HnG1WHH5Lq8sSIQEgu5DgsxBW\",\n \"confirmation_method\": \"automatic\",\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Payment for Invoice\",\n \"invoice\": \"in_NORMALIZED00000000000002\",\n \"last_payment_error\": {\n \"charge\": \"ch_NORMALIZED00000000000002\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"source\": {\n \"id\": \"card_NORMALIZED00000000000002\",\n \"object\": \"card\",\n \"address_city\": \"Pacific\",\n \"address_country\": \"United States\",\n \"address_line1\": \"Under the sea,\",\n \"address_line1_check\": \"pass\",\n \"address_line2\": null,\n \"address_state\": null,\n \"address_zip\": \"33333\",\n \"address_zip_check\": \"pass\",\n \"brand\": \"Visa\",\n \"country\": \"US\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"cvc_check\": \"pass\",\n \"dynamic_last4\": null,\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000002\",\n \"funding\": \"credit\",\n \"last4\": \"0341\",\n \"metadata\": {\n },\n \"name\": \"Ada Starr\",\n \"tokenization_method\": null\n },\n \"type\": \"card_error\"\n },\n \"livemode\": false,\n \"metadata\": {\n },\n \"next_action\": null,\n \"on_behalf_of\": null,\n \"payment_method\": null,\n \"payment_method_options\": {\n \"card\": {\n \"installments\": null,\n \"network\": null,\n \"request_three_d_secure\": \"automatic\"\n }\n },\n \"payment_method_types\": [\n \"card\"\n ],\n \"receipt_email\": null,\n \"review\": null,\n \"setup_future_usage\": null,\n \"shipping\": null,\n \"source\": null,\n \"statement_descriptor\": null,\n \"statement_descriptor_suffix\": null,\n \"status\": \"requires_payment_method\",\n \"transfer_data\": null,\n \"transfer_group\": null\n },\n \"source\": {\n \"id\": \"card_NORMALIZED00000000000002\",\n \"object\": \"card\",\n \"address_city\": \"Pacific\",\n \"address_country\": \"United States\",\n \"address_line1\": \"Under the sea,\",\n \"address_line1_check\": \"pass\",\n \"address_line2\": null,\n \"address_state\": null,\n \"address_zip\": \"33333\",\n \"address_zip_check\": \"pass\",\n \"brand\": \"Visa\",\n \"country\": \"US\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"cvc_check\": \"pass\",\n \"dynamic_last4\": null,\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000002\",\n \"funding\": \"credit\",\n \"last4\": \"0341\",\n \"metadata\": {\n },\n \"name\": \"Ada Starr\",\n \"tokenization_method\": null\n },\n \"type\": \"card_error\"\n }\n}\n", + "http_body": "{\n \"error\": {\n \"charge\": \"ch_NORMALIZED00000000000002\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_intent\": {\n \"id\": \"pi_NORMALIZED00000000000003\",\n \"object\": \"payment_intent\",\n \"amount\": 5000,\n \"amount_capturable\": 0,\n \"amount_received\": 0,\n \"application\": null,\n \"application_fee_amount\": null,\n \"canceled_at\": null,\n \"cancellation_reason\": null,\n \"capture_method\": \"automatic\",\n \"charges\": {\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"ch_NORMALIZED00000000000002\",\n \"object\": \"charge\",\n \"amount\": 5000,\n \"amount_captured\": 0,\n \"amount_refunded\": 0,\n \"application\": null,\n \"application_fee\": null,\n \"application_fee_amount\": null,\n \"balance_transaction\": null,\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"calculated_statement_descriptor\": \"Stripe\",\n \"captured\": false,\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Payment for Invoice\",\n \"destination\": null,\n \"dispute\": null,\n \"disputed\": false,\n \"failure_code\": \"card_declined\",\n \"failure_message\": \"Your card was declined.\",\n \"fraud_details\": {\n },\n \"invoice\": \"in_NORMALIZED00000000000003\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"on_behalf_of\": null,\n \"order\": null,\n \"outcome\": {\n \"network_status\": \"declined_by_network\",\n \"reason\": \"generic_decline\",\n \"risk_level\": \"normal\",\n \"risk_score\": 14,\n \"seller_message\": \"The bank did not return any further details with this decline.\",\n \"type\": \"issuer_declined\"\n },\n \"paid\": false,\n \"payment_intent\": \"pi_NORMALIZED00000000000003\",\n \"payment_method\": \"pm_1JItSyA4KHR4JzRv1Y1r16Ay\",\n \"payment_method_details\": {\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"installments\": null,\n \"last4\": \"0341\",\n \"network\": \"visa\",\n \"three_d_secure\": null,\n \"wallet\": null\n },\n \"type\": \"card\"\n },\n \"receipt_email\": null,\n \"receipt_number\": null,\n \"receipt_url\": null,\n \"refunded\": false,\n \"refunds\": {\n \"object\": \"list\",\n \"data\": [\n\n ],\n \"has_more\": false,\n \"total_count\": 0,\n \"url\": \"/v1/charges/ch_NORMALIZED00000000000002/refunds\"\n },\n \"review\": null,\n \"shipping\": null,\n \"source\": null,\n \"source_transfer\": null,\n \"statement_descriptor\": null,\n \"statement_descriptor_suffix\": null,\n \"status\": \"failed\",\n \"transfer_data\": null,\n \"transfer_group\": null\n }\n ],\n \"has_more\": false,\n \"total_count\": 1,\n \"url\": \"/v1/charges?payment_intent=pi_NORMALIZED00000000000003\"\n },\n \"client_secret\": \"pi_NORMALIZED00000000000003_secret_kRNeiOWgFBpDweYKcmccTn53m\",\n \"confirmation_method\": \"automatic\",\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Payment for Invoice\",\n \"invoice\": \"in_NORMALIZED00000000000003\",\n \"last_payment_error\": {\n \"charge\": \"ch_NORMALIZED00000000000002\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_method\": {\n \"id\": \"pm_1JItSyA4KHR4JzRv1Y1r16Ay\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n },\n \"livemode\": false,\n \"metadata\": {\n },\n \"next_action\": null,\n \"on_behalf_of\": null,\n \"payment_method\": null,\n \"payment_method_options\": {\n \"card\": {\n \"installments\": null,\n \"network\": null,\n \"request_three_d_secure\": \"automatic\"\n }\n },\n \"payment_method_types\": [\n \"card\"\n ],\n \"receipt_email\": null,\n \"review\": null,\n \"setup_future_usage\": null,\n \"shipping\": null,\n \"source\": null,\n \"statement_descriptor\": null,\n \"statement_descriptor_suffix\": null,\n \"status\": \"requires_payment_method\",\n \"transfer_data\": null,\n \"transfer_group\": null\n },\n \"payment_method\": {\n \"id\": \"pm_1JItSyA4KHR4JzRv1Y1r16Ay\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n }\n}\n", "http_status": 402, "json_body": { "error": { @@ -283,15 +303,15 @@ "balance_transaction": null, "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, "calculated_statement_descriptor": "Stripe", @@ -307,7 +327,7 @@ "failure_message": "Your card was declined.", "fraud_details": {}, "id": "ch_NORMALIZED00000000000002", - "invoice": "in_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "charge", @@ -322,20 +342,20 @@ "type": "issuer_declined" }, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_method": "card_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000003", + "payment_method": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", "exp_month": 3, "exp_year": 2033, - "fingerprint": "NORMALIZED000002", + "fingerprint": "NORMALIZED000001", "funding": "credit", "installments": null, "last4": "0341", @@ -358,31 +378,7 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": null, "statement_descriptor_suffix": null, @@ -394,46 +390,68 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000003" }, - "client_secret": "pi_NORMALIZED00000000000001_secret_HnG1WHH5Lq8sSIQEgu5DgsxBW", + "client_secret": "pi_NORMALIZED00000000000003_secret_kRNeiOWgFBpDweYKcmccTn53m", "confirmation_method": "automatic", "created": 1000000000, "currency": "usd", "customer": "cus_NORMALIZED0001", "description": "Payment for Invoice", - "id": "pi_NORMALIZED00000000000001", - "invoice": "in_NORMALIZED00000000000002", + "id": "pi_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000003", "last_payment_error": { "charge": "ch_NORMALIZED00000000000002", "code": "card_declined", "decline_code": "generic_decline", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null + "object": "payment_method", + "type": "card" }, "type": "card_error" }, @@ -464,34 +482,56 @@ "transfer_data": null, "transfer_group": null }, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null + "object": "payment_method", + "type": "card" }, "type": "card_error" } }, "param": null, - "request_id": "req_NORMALIZED0002" + "request_id": "req_NORMALIZED0012" } diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.2.json index a39e5205ff..a835e27391 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--Invoice.pay.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 5000, "amount_paid": 5000, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HhjrT/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000358v2I/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": true, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": true, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.1.json index f722b04075..3aa8989852 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.2.json index 3f346515e5..54cacd8425 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000002", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.3.json index 6812d3e0ce..59db9ebd50 100644 --- a/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/replace_payment_source--InvoiceItem.create.3.json @@ -6,7 +6,7 @@ "description": null, "discountable": true, "discounts": [], - "id": "ii_NORMALIZED00000000000003", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..7317e6c5af --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_Im1orO6NHwBivJ42MzxCIdEZr", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.create.1.json new file mode 100644 index 0000000000..62e803744b --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_Im1orO6NHwBivJ42MzxCIdEZr", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.1.json new file mode 100644 index 0000000000..c43d87c7d3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.2.json new file mode 100644 index 0000000000..3363cb293d --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.3.json new file mode 100644 index 0000000000..c3973e8004 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.create.3.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JItT7A4KHR4JzRvp5lQOWqG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.1.json new file mode 100644 index 0000000000..4fa56da0a0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.1.json @@ -0,0 +1,101 @@ +{ + "data": [ + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/payment_methods" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.2.json new file mode 100644 index 0000000000..f0dca83ed2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--PaymentMethod.list.2.json @@ -0,0 +1,148 @@ +{ + "data": [ + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "mastercard", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4444", + "networks": { + "available": [ + "mastercard" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItT7A4KHR4JzRvp5lQOWqG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000003", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/payment_methods" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.1.json new file mode 100644 index 0000000000..337728aafe --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSlA4KHR4JzRvR6Rwwr7M_secret_Jwn2lXV2MSEZKWF3wSVdeO7lc0vuJG5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSlA4KHR4JzRvR6Rwwr7M", + "last_setup_error": null, + "latest_attempt": "setatt_1JItSlA4KHR4JzRv7fAlEWY9", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.2.json new file mode 100644 index 0000000000..ee5bd192c2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.2.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSzA4KHR4JzRvhV3hBuoI_secret_Jwn3R0Urx34VCSRVhtzeSybhx5QLfbv", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSzA4KHR4JzRvhV3hBuoI", + "last_setup_error": null, + "latest_attempt": "setatt_1JItSzA4KHR4JzRvyl097UvX", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.3.json new file mode 100644 index 0000000000..f17b930b6b --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.create.3.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItT8A4KHR4JzRvbFwlwx9D_secret_Jwn3yh4lQUxNyuCFJbvla6fhpbuJznt", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItT8A4KHR4JzRvbFwlwx9D", + "last_setup_error": null, + "latest_attempt": "setatt_1JItT8A4KHR4JzRv01Rk9HCf", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItT7A4KHR4JzRvp5lQOWqG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.1.json new file mode 100644 index 0000000000..5241aeccc5 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSjA4KHR4JzRv9tSAgsFv_secret_Jwn2gEUp7bL0HJuowuuzPaCB43cDc1U", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSjA4KHR4JzRv9tSAgsFv", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.2.json new file mode 100644 index 0000000000..cb59e880de --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.2.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSyA4KHR4JzRv4r8F5w0u_secret_Jwn3Gjl2zNzpeBitPsfBeAqO6QlyIm0", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSyA4KHR4JzRv4r8F5w0u", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.3.json new file mode 100644 index 0000000000..21cf11a668 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.list.3.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItT6A4KHR4JzRvXRrk3ZWq_secret_Jwn3gQ5ouf7fuzUaAufLXo3PVNtpLK9", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItT6A4KHR4JzRvXRrk3ZWq", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..337728aafe --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSlA4KHR4JzRvR6Rwwr7M_secret_Jwn2lXV2MSEZKWF3wSVdeO7lc0vuJG5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSlA4KHR4JzRvR6Rwwr7M", + "last_setup_error": null, + "latest_attempt": "setatt_1JItSlA4KHR4JzRv7fAlEWY9", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSjA4KHR4JzRvOLviKqCQ", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.2.json new file mode 100644 index 0000000000..ee5bd192c2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.2.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItSzA4KHR4JzRvhV3hBuoI_secret_Jwn3R0Urx34VCSRVhtzeSybhx5QLfbv", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItSzA4KHR4JzRvhV3hBuoI", + "last_setup_error": null, + "latest_attempt": "setatt_1JItSzA4KHR4JzRvyl097UvX", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItSyA4KHR4JzRv1Y1r16Ay", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.3.json new file mode 100644 index 0000000000..f17b930b6b --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--SetupIntent.retrieve.3.json @@ -0,0 +1,29 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JItT8A4KHR4JzRvbFwlwx9D_secret_Jwn3yh4lQUxNyuCFJbvla6fhpbuJznt", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JItT8A4KHR4JzRvbFwlwx9D", + "last_setup_error": null, + "latest_attempt": "setatt_1JItT8A4KHR4JzRv01Rk9HCf", + "livemode": false, + "mandate": null, + "metadata": {}, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JItT7A4KHR4JzRvp5lQOWqG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.1.json deleted file mode 100644 index 60d47536e7..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.2.json deleted file mode 100644 index ee7547e104..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.2.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000004", - "funding": "credit", - "id": "card_NORMALIZED00000000000004", - "last4": "9987", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000002", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.3.json deleted file mode 100644 index 64f08ed5a1..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.3.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000003", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.4.json b/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.4.json deleted file mode 100644 index a0a35dd8cb..0000000000 --- a/corporate/tests/stripe_fixtures/replace_payment_source--Token.create.4.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "MasterCard", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000003", - "funding": "credit", - "id": "card_NORMALIZED00000000000003", - "last4": "4444", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000004", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.1.json new file mode 100644 index 0000000000..0e8aeb9c2a --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01EPECFRMhw7UNNmswnL1GlYzHKmeHmWpfl5Jpe78ESnqK62", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JItSjA4KHR4JzRv9tSAgsFv", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01EPECFRMhw7UNNmswnL1GlYzHKmeHmWpfl5Jpe78ESnqK62#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.2.json new file mode 100644 index 0000000000..da39b9ee5c --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.2.json @@ -0,0 +1,38 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02XZkCnli4qbWit3T1APuzI3rj2qkSkZ0iz24HHIp2EjgVMv", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JItSyA4KHR4JzRv4r8F5w0u", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02XZkCnli4qbWit3T1APuzI3rj2qkSkZ0iz24HHIp2EjgVMv#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.3.json new file mode 100644 index 0000000000..675f5abbd4 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.create.3.json @@ -0,0 +1,38 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED03kNDyXXUBzC1CU3zYJopzvJOFN8Dmp9Bwg3OQOXmPZjSdCn", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JItT6A4KHR4JzRvXRrk3ZWq", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED03kNDyXXUBzC1CU3zYJopzvJOFN8Dmp9Bwg3OQOXmPZjSdCn#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.1.json new file mode 100644 index 0000000000..9c54ed11c1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01EPECFRMhw7UNNmswnL1GlYzHKmeHmWpfl5Jpe78ESnqK62", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JItSjA4KHR4JzRv9tSAgsFv", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01EPECFRMhw7UNNmswnL1GlYzHKmeHmWpfl5Jpe78ESnqK62#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.2.json b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.2.json new file mode 100644 index 0000000000..a57bdf6dce --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.2.json @@ -0,0 +1,45 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02XZkCnli4qbWit3T1APuzI3rj2qkSkZ0iz24HHIp2EjgVMv", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JItSyA4KHR4JzRv4r8F5w0u", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02XZkCnli4qbWit3T1APuzI3rj2qkSkZ0iz24HHIp2EjgVMv#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.3.json b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.3.json new file mode 100644 index 0000000000..1ba4634dfb --- /dev/null +++ b/corporate/tests/stripe_fixtures/replace_payment_source--checkout.Session.list.3.json @@ -0,0 +1,45 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/billing/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED03kNDyXXUBzC1CU3zYJopzvJOFN8Dmp9Bwg3OQOXmPZjSdCn", + "livemode": false, + "locale": null, + "metadata": { + "type": "card_update" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JItT6A4KHR4JzRvXRrk3ZWq", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED03kNDyXXUBzC1CU3zYJopzvJOFN8Dmp9Bwg3OQOXmPZjSdCn#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.create.1.json b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.modify.1.json b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--PaymentIntent.create.1.json new file mode 100644 index 0000000000..9e285958aa --- /dev/null +++ b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 4800, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_XfmDCnnw7QHfCrLura6EaMcGt", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--checkout.Session.create.1.json new file mode 100644 index 0000000000..9078233c37 --- /dev/null +++ b/corporate/tests/stripe_fixtures/restart_payment_intent_session_errors--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01fjqG9XpDuAeZC1DDV3fnkKZUOGFEXxsIv2ut813eRjys1k", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JPS5mA4KHR4JzRvMczPuuZG", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01fjqG9XpDuAeZC1DDV3fnkKZUOGFEXxsIv2ut813eRjys1k#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Charge.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Charge.create.1.json deleted file mode 100644 index cccdeed326..0000000000 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 4800, - "amount_captured": 4800, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $8.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.create.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.2.json new file mode 100644 index 0000000000..ef9b65edcb --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.1.json index 3d384443cb..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.1.json @@ -2,32 +2,8 @@ "address": null, "balance": 0, "created": 1000000000, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "currency": null, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -45,43 +21,10 @@ "realm_str": "zulip" }, "name": null, - "next_invoice_sequence": 2, + "next_invoice_sequence": 1, "object": "customer", "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.2.json new file mode 100644 index 0000000000..c08632dc25 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Customer.retrieve.2.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.1.json new file mode 100644 index 0000000000..a8198d91e9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.1.json @@ -0,0 +1,162 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 5000, + "amount_paid": 5000, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 1, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": "ch_NORMALIZED00000000000001", + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001AY8rm", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001AY8rm/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 5000, + "currency": "usd", + "description": null, + "discount_amounts": [], + "discountable": true, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 5000, + "unit_amount_decimal": "5000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": null, + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 5000, + "tax": null, + "total": 5000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + "previous_attributes": { + "amount_paid": 0, + "amount_remaining": 5000, + "charge": "ch_NORMALIZED00000000000002", + "paid": false, + "status": "open", + "status_transitions": { + "paid_at": null + } + } + }, + "id": "evt_1JTq92A4KHR4JzRvfATTwhBo", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "e8c8ea22-d83f-48c1-b811-9e1f16fb7ddb" + }, + "type": "invoice.updated" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.2.json new file mode 100644 index 0000000000..14beba7b7a --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 4800, + "amount_capturable": 0, + "amount_received": 4800, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 4800, + "amount_captured": 4800, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000003/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000003/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eAYqbQky9PWR3EM4jyo2zhHsu", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq95A4KHR4JzRv0CWNfJLz", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "4a0a31e9-0191-4564-910e-4f1e3309a63e" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 4800, + "amount_captured": 4800, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000003/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000003/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq95A4KHR4JzRv0HSUFgr9", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "4a0a31e9-0191-4564-910e-4f1e3309a63e" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq9BA4KHR4JzRvvT0DMGGm", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "cf920f0c-8de4-4224-b6e6-4a375f6f1e70" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq98A4KHR4JzRviwuCJz36_secret_K86LmMkdTzJlxssQnCI1546mzv80uql", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq98A4KHR4JzRviwuCJz36", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq98A4KHR4JzRvdIJPVVUE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq99A4KHR4JzRvxRjtEqiR", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "5304ab03-42ba-4bf1-b154-eeeccd23c977" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq98A4KHR4JzRvwIjD1Cgr", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "5304ab03-42ba-4bf1-b154-eeeccd23c977" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq98A4KHR4JzRviwuCJz36_secret_K86LmMkdTzJlxssQnCI1546mzv80uql", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq98A4KHR4JzRviwuCJz36", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq98A4KHR4JzRvdIJPVVUE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq99A4KHR4JzRvkzbuFLbk", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "5304ab03-42ba-4bf1-b154-eeeccd23c977" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq96A4KHR4JzRvgey5CO00_secret_K86LoAZrKEmcyyz7GdtTTU5s6Wz9MOF", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq96A4KHR4JzRvgey5CO00", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq96A4KHR4JzRvCUqimRxn", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "8e99fc5c-5f31-4824-bd67-939d1d922bd6" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 4800, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eAYqbQky9PWR3EM4jyo2zhHsu", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq95A4KHR4JzRv0Kuuj1fJ", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "ba5b4242-0dd0-4ad8-9fc3-6cbe5923138e" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq94A4KHR4JzRvavWuEodl", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "e1f66dd0-73d4-4ddf-9147-09f54f57eea0" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.3.json new file mode 100644 index 0000000000..9d0eaec73e --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 4800, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -4800, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9HA4KHR4JzRvrLhi8wCj", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "09f3d2e8-b993-491c-b328-e6fe9bf446f0" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 4800, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -4800, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9HA4KHR4JzRvsazbsn7L", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "09f3d2e8-b993-491c-b328-e6fe9bf446f0" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 4800, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -4800, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9HA4KHR4JzRvgZ7AJS73", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "09f3d2e8-b993-491c-b328-e6fe9bf446f0" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 4800, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -4800, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq9GA4KHR4JzRvblmuIbJD", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "09f3d2e8-b993-491c-b328-e6fe9bf446f0" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 4800, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -4800, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9GA4KHR4JzRvSh8CWRph", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "36488c06-d88a-4d46-b241-1d54817f97fd" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -4800, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq9GA4KHR4JzRvRXlU7Q3U", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "36488c06-d88a-4d46-b241-1d54817f97fd" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 4800, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq9GA4KHR4JzRvQR2zdGq9", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "36488c06-d88a-4d46-b241-1d54817f97fd" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 4800, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 800, + "unit_amount_decimal": "800" + } + }, + "id": "evt_1JTq9FA4KHR4JzRvaz4WcxiW", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "c4011fbe-56ec-4396-bdcc-d8b13c0a3542" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -4800, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + } + }, + "id": "evt_1JTq9EA4KHR4JzRv2On4hb7s", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "77a330bb-2dbf-48bb-b38f-8065d3eaed7f" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq9EA4KHR4JzRv3iZ0OsCN", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "77a330bb-2dbf-48bb-b38f-8065d3eaed7f" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.1.json index 73930ab9c6..4f5a834a3a 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.2.json index 0923f62afa..4060478b33 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 11200, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000002", + "id": "in_NORMALIZED00000000000003", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.3.json index 456a0267ae..249bfcbc52 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 200000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000003", + "id": "in_NORMALIZED00000000000004", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,49 +49,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 5, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 160000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000005", "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, @@ -115,6 +72,51 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 5, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 160000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.4.json index 4d5f137868..dd82a961ad 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.4.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.4.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 36830, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000004", + "id": "in_NORMALIZED00000000000005", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000006", - "invoice_item": "ii_NORMALIZED00000000000006", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000006", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0006", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.5.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.5.json index 971e5617a6..386c844670 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.5.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.create.5.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 240000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000005", + "id": "in_NORMALIZED00000000000006", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000007", - "invoice_item": "ii_NORMALIZED00000000000007", + "id": "il_NORMALIZED00000000000008", + "invoice_item": "ii_NORMALIZED00000000000008", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000007", + "id": "price_NORMALIZED00000000000008", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0007", + "product": "prod_NORMALIZED0008", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000006/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.1.json index 4608163565..f8c1e4a8eb 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.2.json index 6f2442d53c..38674ab817 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 11200, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.3.json index eed7cd4b15..b22bdb0739 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 200000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,49 +49,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 5, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 160000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000005", "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, @@ -115,6 +72,51 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 5, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 160000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,16 +134,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", + "number": "NORMALI-0005", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000004", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.4.json index 612cdb801b..db971af1c7 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.4.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.4.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 36830, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004DQYsz", - "id": "in_NORMALIZED00000000000004", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004DQYsz/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005jAl7u", + "id": "in_NORMALIZED00000000000005", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005jAl7u/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000006", - "invoice_item": "ii_NORMALIZED00000000000006", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000006", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0006", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0004", + "number": "NORMALI-0006", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000003", + "payment_intent": "pi_NORMALIZED00000000000005", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.5.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.5.json index e9aa908a1b..f88de34051 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.5.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.finalize_invoice.5.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 240000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005uuk0y", - "id": "in_NORMALIZED00000000000005", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005uuk0y/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006DNnSr", + "id": "in_NORMALIZED00000000000006", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006DNnSr/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000007", - "invoice_item": "ii_NORMALIZED00000000000007", + "id": "il_NORMALIZED00000000000008", + "invoice_item": "ii_NORMALIZED00000000000008", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000007", + "id": "price_NORMALIZED00000000000008", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0007", + "product": "prod_NORMALIZED0008", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000006/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0005", + "number": "NORMALI-0007", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000004", + "payment_intent": "pi_NORMALIZED00000000000006", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.1.json index cfd1ee25d7..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.1.json @@ -1,479 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 200000, - "amount_paid": 0, - "amount_remaining": 200000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 40000, - "currency": "usd", - "description": "Additional license (Feb 2, 2012 - Feb 2, 2013)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 5, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 160000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000005", - "invoice_item": "ii_NORMALIZED00000000000005", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000005", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0005", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 20, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 200000, - "tax": null, - "total": 200000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 11200, - "amount_paid": 0, - "amount_remaining": 11200, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 11200, - "currency": "usd", - "description": "Additional license (Jan 2, 2012 - Feb 2, 2012)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1328151845, - "start": 1325473445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 800, - "unit_amount_decimal": "800" - }, - "proration": false, - "quantity": 14, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 11200, - "tax": null, - "total": 11200, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 4800, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1328151845, - "start": 1325473445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 800, - "unit_amount_decimal": "800" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -4800, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -4800, - "unit_amount_decimal": "-4800" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.2.json index 4ef3e16fb4..b514b2fc2c 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.2.json @@ -2,136 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 36830, - "amount_paid": 0, - "amount_remaining": 36830, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004DQYsz", - "id": "in_NORMALIZED00000000000004", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004DQYsz/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 36830, - "currency": "usd", - "description": "Additional license (Mar 2, 2012 - Feb 2, 2013)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000006", - "invoice_item": "ii_NORMALIZED00000000000006", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1330657445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000006", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0006", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 7366, - "unit_amount_decimal": "7366" - }, - "proration": false, - "quantity": 5, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0004", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000003", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 36830, - "tax": null, - "total": 36830, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 200000, "amount_paid": 0, @@ -167,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -180,49 +51,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 5, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 160000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000005", "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, @@ -246,6 +74,51 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 5, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 160000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -263,16 +136,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", + "number": "NORMALI-0005", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000004", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -299,11 +172,11 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 11200, "amount_paid": 0, @@ -339,9 +212,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -352,8 +225,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -367,14 +240,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -392,16 +266,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -428,11 +302,11 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -468,9 +342,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -481,8 +355,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -496,14 +370,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -524,8 +399,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -539,14 +414,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -564,12 +440,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.3.json index bc50ee5c03..a28d0d2104 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.3.json @@ -2,136 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 240000, - "amount_paid": 0, - "amount_remaining": 240000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005uuk0y", - "id": "in_NORMALIZED00000000000005", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005uuk0y/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 240000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000007", - "invoice_item": "ii_NORMALIZED00000000000007", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1391310245, - "start": 1359774245 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000007", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0007", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 30, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0005", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000004", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 240000, - "tax": null, - "total": 240000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 36830, "amount_paid": 0, @@ -167,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004DQYsz", - "id": "in_NORMALIZED00000000000004", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004DQYsz/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005jAl7u", + "id": "in_NORMALIZED00000000000005", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005jAl7u/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -180,8 +51,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000006", - "invoice_item": "ii_NORMALIZED00000000000006", + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", "livemode": false, "metadata": {}, "object": "line_item", @@ -195,14 +66,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000006", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0006", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -220,16 +92,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0004", + "number": "NORMALI-0006", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000003", + "payment_intent": "pi_NORMALIZED00000000000005", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -260,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 200000, "amount_paid": 0, @@ -296,9 +168,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003RcbKD/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -309,49 +181,6 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000004", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0004", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 5, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": 160000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], "id": "il_NORMALIZED00000000000005", "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, @@ -375,6 +204,51 @@ "object": "price", "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 5, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 160000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -392,16 +266,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", + "number": "NORMALI-0005", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000004", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -428,11 +302,11 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 11200, "amount_paid": 0, @@ -468,9 +342,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002tFPYq/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -481,8 +355,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -496,14 +370,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -521,16 +396,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -557,11 +432,11 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -597,9 +472,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001c9NkE/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -610,8 +485,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -625,14 +500,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -653,8 +529,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -668,14 +544,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -693,12 +570,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.4.json new file mode 100644 index 0000000000..df6855bb08 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Invoice.list.4.json @@ -0,0 +1,745 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 240000, + "amount_paid": 0, + "amount_remaining": 240000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006DNnSr", + "id": "in_NORMALIZED00000000000006", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000006DNnSr/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 240000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000008", + "invoice_item": "ii_NORMALIZED00000000000008", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1391310245, + "start": 1359774245 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000008", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0008", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 30, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000006/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0007", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000006", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 240000, + "tax": null, + "total": 240000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 36830, + "amount_paid": 0, + "amount_remaining": 36830, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005jAl7u", + "id": "in_NORMALIZED00000000000005", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000005jAl7u/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 36830, + "currency": "usd", + "description": "Additional license (Mar 2, 2012 - Feb 2, 2013)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000007", + "invoice_item": "ii_NORMALIZED00000000000007", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1330657445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000007", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0007", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 7366, + "unit_amount_decimal": "7366" + }, + "proration": false, + "quantity": 5, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000005/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0006", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000005", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 36830, + "tax": null, + "total": 36830, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 200000, + "amount_paid": 0, + "amount_remaining": 200000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004Hk35b/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 40000, + "currency": "usd", + "description": "Additional license (Feb 2, 2012 - Feb 2, 2013)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 5, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": 160000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000006", + "invoice_item": "ii_NORMALIZED00000000000006", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000006", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0006", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 20, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0005", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000004", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 200000, + "tax": null, + "total": 200000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 11200, + "amount_paid": 0, + "amount_remaining": 11200, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003NRa5x/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 11200, + "currency": "usd", + "description": "Additional license (Jan 2, 2012 - Feb 2, 2012)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 14, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000003", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 11200, + "tax": null, + "total": 11200, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002GAcqJ/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 4800, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -4800, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -4800, + "unit_amount_decimal": "-4800" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.1.json index 4ffd2a77d9..efeee36e46 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.2.json index 7c21fa3319..7b45efc89b 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000002", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.3.json index df781a6bf9..d6252b05bc 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.3.json @@ -6,7 +6,7 @@ "description": "Additional license (Jan 2, 2012 - Feb 2, 2012)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000003", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.4.json index e984120548..d12c606a75 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.4.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.4.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000005", + "id": "ii_NORMALIZED00000000000006", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000005", + "id": "price_NORMALIZED00000000000006", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0005", + "product": "prod_NORMALIZED0006", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.5.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.5.json index 6fcb44d187..f7524c0a90 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.5.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.5.json @@ -6,7 +6,7 @@ "description": "Additional license (Feb 2, 2012 - Feb 2, 2013)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000004", + "id": "ii_NORMALIZED00000000000005", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.6.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.6.json index a11e2a56ef..eb087a3c58 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.6.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.6.json @@ -6,7 +6,7 @@ "description": "Additional license (Mar 2, 2012 - Feb 2, 2013)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000006", + "id": "ii_NORMALIZED00000000000007", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000006", + "id": "price_NORMALIZED00000000000007", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0006", + "product": "prod_NORMALIZED0007", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.7.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.7.json index 41c8bd7b13..bddb07491a 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.7.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--InvoiceItem.create.7.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000007", + "id": "ii_NORMALIZED00000000000008", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000007", + "id": "price_NORMALIZED00000000000008", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0007", + "product": "prod_NORMALIZED0008", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..9b3a9da75d --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 4800, + "amount_capturable": 0, + "amount_received": 4800, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 4800, + "amount_captured": 4800, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000003/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000003/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eAYqbQky9PWR3EM4jyo2zhHsu", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.create.1.json new file mode 100644 index 0000000000..d2546511f9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 4800, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eAYqbQky9PWR3EM4jyo2zhHsu", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentMethod.create.1.json new file mode 100644 index 0000000000..3f36fc95b1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.create.1.json new file mode 100644 index 0000000000..0d2623f379 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq98A4KHR4JzRviwuCJz36_secret_K86LmMkdTzJlxssQnCI1546mzv80uql", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq98A4KHR4JzRviwuCJz36", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq98A4KHR4JzRvdIJPVVUE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.list.1.json new file mode 100644 index 0000000000..63d4b49488 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq96A4KHR4JzRvgey5CO00_secret_K86LoAZrKEmcyyz7GdtTTU5s6Wz9MOF", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq96A4KHR4JzRvgey5CO00", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..0d2623f379 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq98A4KHR4JzRviwuCJz36_secret_K86LmMkdTzJlxssQnCI1546mzv80uql", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq98A4KHR4JzRviwuCJz36", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq98A4KHR4JzRvdIJPVVUE", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq97A4KHR4JzRvSZnWE2hG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Token.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Token.create.1.json deleted file mode 100644 index 60d47536e7..0000000000 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.create.1.json new file mode 100644 index 0000000000..a29c70c25d --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01On9K8hRUMxo07lkNMXvbyz7KhBqzN27rvFKGxSM5OvtJT5", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq96A4KHR4JzRvgey5CO00", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01On9K8hRUMxo07lkNMXvbyz7KhBqzN27rvFKGxSM5OvtJT5#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.list.1.json new file mode 100644 index 0000000000..6309c68d58 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_automatic_license_management--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01On9K8hRUMxo07lkNMXvbyz7KhBqzN27rvFKGxSM5OvtJT5", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq96A4KHR4JzRvgey5CO00", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01On9K8hRUMxo07lkNMXvbyz7KhBqzN27rvFKGxSM5OvtJT5#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Charge.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Charge.create.1.json deleted file mode 100644 index d104330f0e..0000000000 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 28000, - "amount_captured": 28000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $8.0 x 35", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.create.1.json index 88d5c69190..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1000000000, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.2.json new file mode 100644 index 0000000000..38a6385c4b --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.1.json index 3d384443cb..730ed973b0 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.1.json @@ -2,32 +2,8 @@ "address": null, "balance": 0, "created": 1000000000, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "currency": null, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -45,43 +21,10 @@ "realm_str": "zulip" }, "name": null, - "next_invoice_sequence": 2, + "next_invoice_sequence": 1, "object": "customer", "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.2.json new file mode 100644 index 0000000000..bd90ba3713 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Customer.retrieve.2.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.1.json new file mode 100644 index 0000000000..a79a249ddf --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.1.json @@ -0,0 +1,152 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 240000, + "amount_paid": 0, + "amount_remaining": 240000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001DNnSr", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001DNnSr/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 240000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1391310245, + "start": 1359774245 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 30, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 240000, + "tax": null, + "total": 240000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9WA4KHR4JzRvdva74aNS", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "9c9b7b47-c4b5-43b5-8874-7b0f7c3542e0" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.2.json new file mode 100644 index 0000000000..7930b8e113 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 28000, + "amount_capturable": 0, + "amount_received": 28000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 28000, + "amount_captured": 28000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_klZSvBukSGd5KJGHlnsnE6k4j", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq9ZA4KHR4JzRv09qs62hf", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "ccacd0e5-e0b3-4e01-a191-981d4a916428" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 28000, + "amount_captured": 28000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq9ZA4KHR4JzRv0eIYvgfn", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "ccacd0e5-e0b3-4e01-a191-981d4a916428" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq9eA4KHR4JzRvq0nuiWiF", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "5b68db8e-e05c-4251-8cfe-3d2f5122b2c2" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9bA4KHR4JzRvtLr9BV2z_secret_K86Mlb6dFfrRR6CQtcQqJFBGCAbQ48r", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9bA4KHR4JzRvtLr9BV2z", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9bA4KHR4JzRvnjbJhhlo", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq9cA4KHR4JzRv2Tp1i70r", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "e71e1d72-de93-461b-98ca-50f0a13c13cc" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq9cA4KHR4JzRvpz1dYmng", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "e71e1d72-de93-461b-98ca-50f0a13c13cc" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9bA4KHR4JzRvtLr9BV2z_secret_K86Mlb6dFfrRR6CQtcQqJFBGCAbQ48r", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9bA4KHR4JzRvtLr9BV2z", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9bA4KHR4JzRvnjbJhhlo", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq9cA4KHR4JzRvrxMO5V6M", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "e71e1d72-de93-461b-98ca-50f0a13c13cc" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9ZA4KHR4JzRvcqAq17cM_secret_K86MI2znRL8mWPa6ZlJY2g58kBr5DM0", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9ZA4KHR4JzRvcqAq17cM", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq9ZA4KHR4JzRv0cVNF1cA", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "70853208-26e9-4bf0-b025-77c8da22f01f" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 28000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_klZSvBukSGd5KJGHlnsnE6k4j", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq9ZA4KHR4JzRv0Bqj7al6", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "245b38b6-bde9-4669-b669-0e0403edfb69" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq9YA4KHR4JzRvbB2FUjtC", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "273adcf4-03af-48ea-8087-6ecd984ca15a" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.3.json new file mode 100644 index 0000000000..26b76f1159 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 28000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -28000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq9kA4KHR4JzRvfeYb4IYP", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6c82e931-8114-4a64-8040-780bf55c12ce" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 28000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -28000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq9kA4KHR4JzRvwAUdr5ZQ", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6c82e931-8114-4a64-8040-780bf55c12ce" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 28000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -28000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JTq9kA4KHR4JzRvEllKoFmF", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6c82e931-8114-4a64-8040-780bf55c12ce" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 28000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -28000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq9kA4KHR4JzRv5NuzJgXT", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "6c82e931-8114-4a64-8040-780bf55c12ce" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 28000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -28000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9jA4KHR4JzRvWLfHVN4T", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "6d73b9ee-5258-4f0a-8c46-c08f89708e3a" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -28000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq9jA4KHR4JzRveMARERr8", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "6d73b9ee-5258-4f0a-8c46-c08f89708e3a" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 28000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_rates": [], + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq9jA4KHR4JzRvIOlTFyEB", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "6d73b9ee-5258-4f0a-8c46-c08f89708e3a" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 28000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_rates": [], + "unit_amount": 800, + "unit_amount_decimal": "800" + } + }, + "id": "evt_1JTq9iA4KHR4JzRvm3fJNdeB", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "fbe89d88-66f6-4ea9-b49d-afa9968d17a9" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -28000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + } + }, + "id": "evt_1JTq9hA4KHR4JzRvdapVyKEq", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "05997cd7-890f-4eea-a319-6ab14769d4b6" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq9hA4KHR4JzRvuggbJX1D", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "05997cd7-890f-4eea-a319-6ab14769d4b6" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.1.json index c2745002eb..d061d3144b 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.2.json index f0a36f1670..58a28b615b 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 280000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000002", + "id": "in_NORMALIZED00000000000003", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.3.json index 5265de6b71..3f5c4d6114 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.create.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 280000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000003", + "id": "in_NORMALIZED00000000000004", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.1.json index 1dbe8402ec..aa9921f433 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001eoy5M", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001eoy5M/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.2.json index 516f5667b9..87ea76b039 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 280000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002A8nya", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002A8nya/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003XF8Ro", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003XF8Ro/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.3.json index c8c0411483..593b4029a0 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.finalize_invoice.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 280000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000032usLo", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000032usLo/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004yiX1T", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004yiX1T/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", + "number": "NORMALI-0005", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000004", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.1.json index de545b70e3..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.1.json @@ -1,307 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 280000, - "amount_paid": 0, - "amount_remaining": 280000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002A8nya", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002A8nya/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 280000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 35, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 280000, - "tax": null, - "total": 280000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001eoy5M", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001eoy5M/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 28000, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1328151845, - "start": 1325473445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 800, - "unit_amount_decimal": "800" - }, - "proration": false, - "quantity": 35, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -28000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -28000, - "unit_amount_decimal": "-28000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.2.json index 88b4cc624e..c4b5536f66 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.2.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 280000, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000032usLo", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003XF8Ro", "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000032usLo/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003XF8Ro/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -57,8 +57,8 @@ "metadata": {}, "object": "line_item", "period": { - "end": 1391310245, - "start": 1359774245 + "end": 1359774245, + "start": 1328151845 }, "plan": null, "price": { @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -96,11 +97,11 @@ "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0003", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -127,140 +128,11 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null }, { "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 280000, - "amount_paid": 0, - "amount_remaining": 280000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1000000000, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002A8nya", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002A8nya/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 280000, - "currency": "usd", - "description": "Zulip Standard - renewal", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1359774245, - "start": 1328151845 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1000000000, - "currency": "usd", - "id": "price_NORMALIZED00000000000003", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0003", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 35, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0002", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 280000, - "tax": null, - "total": 280000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - }, - { - "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -296,9 +168,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001eoy5M", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001eoy5M/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -309,8 +181,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -324,14 +196,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -352,8 +225,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -367,14 +240,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -392,12 +266,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.3.json new file mode 100644 index 0000000000..9c29dc8d54 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Invoice.list.3.json @@ -0,0 +1,441 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 280000, + "amount_paid": 0, + "amount_remaining": 280000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004yiX1T", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004yiX1T/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 280000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1391310245, + "start": 1359774245 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000005", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0005", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0005", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000004", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 280000, + "tax": null, + "total": 280000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 280000, + "amount_paid": 0, + "amount_remaining": 280000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003XF8Ro", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003XF8Ro/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 280000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1359774245, + "start": 1328151845 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0004", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000003", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 280000, + "tax": null, + "total": 280000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000029rhPo/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 28000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1328151845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 800, + "unit_amount_decimal": "800" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -28000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -28000, + "unit_amount_decimal": "-28000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.1.json index 146cb93250..9bc445fc45 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.2.json index d3305507d6..d850acad26 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000002", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.3.json index 4ac8751ad4..0ff7fca29d 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.3.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000003", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.4.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.4.json index de41160cfe..ef81840401 100644 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.4.json +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--InvoiceItem.create.4.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000004", + "id": "ii_NORMALIZED00000000000005", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..c696f95c86 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 28000, + "amount_capturable": 0, + "amount_received": 28000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 28000, + "amount_captured": 28000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_klZSvBukSGd5KJGHlnsnE6k4j", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.create.1.json new file mode 100644 index 0000000000..3392d22279 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 28000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_klZSvBukSGd5KJGHlnsnE6k4j", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $8.0 x 35", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentMethod.create.1.json new file mode 100644 index 0000000000..21c5408daf --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.create.1.json new file mode 100644 index 0000000000..de3d6e9089 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9bA4KHR4JzRvtLr9BV2z_secret_K86Mlb6dFfrRR6CQtcQqJFBGCAbQ48r", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9bA4KHR4JzRvtLr9BV2z", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9bA4KHR4JzRvnjbJhhlo", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.list.1.json new file mode 100644 index 0000000000..98207f74a5 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9ZA4KHR4JzRvcqAq17cM_secret_K86MI2znRL8mWPa6ZlJY2g58kBr5DM0", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9ZA4KHR4JzRvcqAq17cM", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..de3d6e9089 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9bA4KHR4JzRvtLr9BV2z_secret_K86Mlb6dFfrRR6CQtcQqJFBGCAbQ48r", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9bA4KHR4JzRvtLr9BV2z", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9bA4KHR4JzRvnjbJhhlo", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9aA4KHR4JzRvX1SBKYte", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Token.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Token.create.1.json deleted file mode 100644 index 60d47536e7..0000000000 --- a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.create.1.json new file mode 100644 index 0000000000..d0f33627d7 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01Vyoq9CPOELoG9vNzYcEqvaDLkWw1nJrQRTQ7lgK3sRKZM2", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq9ZA4KHR4JzRvcqAq17cM", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01Vyoq9CPOELoG9vNzYcEqvaDLkWw1nJrQRTQ7lgK3sRKZM2#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.list.1.json new file mode 100644 index 0000000000..9f7f8e7ca3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/switch_from_monthly_plan_to_annual_plan_for_manual_license_management--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01Vyoq9CPOELoG9vNzYcEqvaDLkWw1nJrQRTQ7lgK3sRKZM2", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "2", + "license_management": "manual", + "licenses": "35", + "price_per_license": "800", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq9ZA4KHR4JzRvcqAq17cM", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01Vyoq9CPOELoG9vNzYcEqvaDLkWw1nJrQRTQ7lgK3sRKZM2#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.modify.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.1.json index a38ce33448..4fd85bce3d 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.1.json @@ -3,50 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - }, + "default_source": "src_NORMALIZED00000000000001", "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -69,57 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.2.json index b0368c52b1..0fde3d4964 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Customer.retrieve.2.json @@ -3,50 +3,7 @@ "balance": 0, "created": 1000000000, "currency": "usd", - "default_source": { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - }, + "default_source": "src_NORMALIZED00000000000001", "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -69,57 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Event.list.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Event.list.1.json new file mode 100644 index 0000000000..4c656e7ed9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Event.list.1.json @@ -0,0 +1,152 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 280000, + "amount_paid": 0, + "amount_remaining": 280000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001NtQF0", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001NtQF0/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 280000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1391310245, + "start": 1359774245 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 280000, + "tax": null, + "total": 280000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + }, + "id": "evt_1JPMB8A4KHR4JzRvh5KvK2Q0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "a5cafce1-a45e-4123-bc42-6e93eea0459c" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.1.json index b33e97dafa..df6cbb0715 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 800000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.2.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.2.json index 0e4a8acb9e..f4f95c6b8f 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 1600000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000002", + "id": "in_NORMALIZED00000000000003", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.3.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.3.json index 358f3c401c..3ce60572bb 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.3.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.create.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 960000, "amount_paid": 0, @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000003", + "id": "in_NORMALIZED00000000000004", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.1.json index 28d37b94b6..69f6028216 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 800000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000144WpC", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000144WpC/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002TrCiA", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002TrCiA/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.2.json index 0580ef77d3..6a0e464e70 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 1600000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002SO455", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002SO455/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003gkbLo", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003gkbLo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -107,14 +108,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,16 +134,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.3.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.3.json index 20f641d9db..ed349c4388 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.3.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.finalize_invoice.3.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 960000, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003ERSJR", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003ERSJR/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004tjZTO", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004tjZTO/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,14 +64,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0003", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000003", + "payment_intent": "pi_NORMALIZED00000000000004", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.1.json index ae5e402725..6a8265d8ca 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.1.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 1600000, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002SO455", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002SO455/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003gkbLo", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003gkbLo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -51,8 +51,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -66,14 +66,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -94,8 +95,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -109,14 +110,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -134,16 +136,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -174,7 +176,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 800000, "amount_paid": 0, @@ -210,9 +212,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000144WpC", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000144WpC/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002TrCiA", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002TrCiA/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -223,8 +225,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -238,14 +240,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -263,16 +266,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.2.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.2.json index 22b5e0f33d..45d743a1db 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--Invoice.list.2.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 960000, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003ERSJR", - "id": "in_NORMALIZED00000000000003", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003ERSJR/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004tjZTO", + "id": "in_NORMALIZED00000000000004", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000004tjZTO/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -51,8 +51,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000004", - "invoice_item": "ii_NORMALIZED00000000000004", + "id": "il_NORMALIZED00000000000005", + "invoice_item": "ii_NORMALIZED00000000000005", "livemode": false, "metadata": {}, "object": "line_item", @@ -66,14 +66,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -91,16 +92,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000004/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0003", + "number": "NORMALI-0004", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000003", + "payment_intent": "pi_NORMALIZED00000000000004", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -131,7 +132,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 1600000, "amount_paid": 0, @@ -167,9 +168,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002SO455", - "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002SO455/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003gkbLo", + "id": "in_NORMALIZED00000000000003", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000003gkbLo/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -180,8 +181,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -195,14 +196,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -223,8 +225,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000003", - "invoice_item": "ii_NORMALIZED00000000000003", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -238,14 +240,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -263,16 +266,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000003/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0002", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000003", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -303,7 +306,7 @@ }, { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 800000, "amount_paid": 0, @@ -339,9 +342,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED000000000000000144WpC", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED000000000000000144WpC/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002TrCiA", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002TrCiA/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -352,8 +355,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -367,14 +370,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -392,16 +396,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.1.json index a5e7f5fe0c..2355da4be0 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000002", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.2.json index ccca30b250..bff4c9907b 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Additional license (Jan 2, 2012 - Jan 2, 2013)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000003", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000003", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0003", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.3.json index 8c73b385ff..b187c7f79f 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.3.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.3.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.4.json b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.4.json index d33163548c..929ca184fd 100644 --- a/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.4.json +++ b/corporate/tests/stripe_fixtures/update_licenses_of_manual_plan_from_billing_page--InvoiceItem.create.4.json @@ -6,7 +6,7 @@ "description": "Zulip Standard - renewal", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000004", + "id": "ii_NORMALIZED00000000000005", "invoice": null, "livemode": false, "metadata": {}, @@ -21,14 +21,15 @@ "billing_scheme": "per_unit", "created": 1000000000, "currency": "usd", - "id": "price_NORMALIZED00000000000004", + "id": "price_NORMALIZED00000000000005", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0004", + "product": "prod_NORMALIZED0005", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.create.1.json deleted file mode 100644 index 180168b461..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 48000, - "amount_captured": 48000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1010000001, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $80.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.list.1.json index 4c471240bc..5710eda4b5 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.list.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Charge.list.1.json @@ -10,18 +10,18 @@ "balance_transaction": "txn_NORMALIZED00000000000001", "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": true, "created": 1010000001, "currency": "usd", @@ -36,7 +36,17 @@ "id": "ch_NORMALIZED00000000000001", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -49,14 +59,14 @@ "type": "authorized" }, "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", @@ -85,34 +95,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.create.1.json index 236cba3ab0..364f2d361c 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1010000002, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.1.json new file mode 100644 index 0000000000..364f2d361c --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.2.json new file mode 100644 index 0000000000..f02fb4e749 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.1.json index ebf57e16d5..364f2d361c 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.1.json @@ -2,32 +2,8 @@ "address": null, "balance": 0, "created": 1010000002, - "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "currency": null, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -45,43 +21,10 @@ "realm_str": "zulip" }, "name": null, - "next_invoice_sequence": 2, + "next_invoice_sequence": 1, "object": "customer", "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.2.json index ebf57e16d5..7b64c52875 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.2.json @@ -3,31 +3,7 @@ "balance": 0, "created": 1010000002, "currency": "usd", - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -36,7 +12,53 @@ "invoice_prefix": "NORMA01", "invoice_settings": { "custom_fields": null, - "default_payment_method": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000003, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, "footer": null }, "livemode": false, @@ -50,38 +72,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.3.json new file mode 100644 index 0000000000..7b64c52875 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Customer.retrieve.3.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1010000002, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000003, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.1.json new file mode 100644 index 0000000000..33cc7457b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.1.json @@ -0,0 +1,152 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000004, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 280000, + "amount_paid": 0, + "amount_remaining": 280000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000005, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001yiX1T", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001yiX1T/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 280000, + "currency": "usd", + "description": "Zulip Standard - renewal", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1391310245, + "start": 1359774245 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000005, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 35, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 280000, + "tax": null, + "total": 280000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq9rA4KHR4JzRv75eXP6bj", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "f0a27d4c-5666-476d-bccc-3f0ed737273b" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.2.json new file mode 100644 index 0000000000..d063002fc4 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1010000001, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_r4mnrb7dDRt8bljkSzB1gs0N3", + "confirmation_method": "automatic", + "created": 1010000007, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq9uA4KHR4JzRv0opA7PGn", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "145d2a18-dbee-4d32-a7d5-836d954fda11" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1010000001, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq9uA4KHR4JzRv0p3cuMah", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "145d2a18-dbee-4d32-a7d5-836d954fda11" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000008, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq9zA4KHR4JzRvj6v8EGg2", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "4c51e662-648e-48c7-84b6-a6d445680d20" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000009, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9wA4KHR4JzRv4kieqeIK_secret_K86Mcah5gCqgz9tRLzjkqWgFKuiTcK2", + "created": 1010000010, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9wA4KHR4JzRv4kieqeIK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9wA4KHR4JzRvopmYc4HQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq9xA4KHR4JzRvj1fPpdbx", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "44f4af32-9f95-47a8-973a-0c263989a355" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000009, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000003, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq9xA4KHR4JzRvvQ1nwHw0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "44f4af32-9f95-47a8-973a-0c263989a355" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1010000010, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9wA4KHR4JzRv4kieqeIK_secret_K86Mcah5gCqgz9tRLzjkqWgFKuiTcK2", + "created": 1010000010, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9wA4KHR4JzRv4kieqeIK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9wA4KHR4JzRvopmYc4HQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq9xA4KHR4JzRvZBwsDt3A", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "44f4af32-9f95-47a8-973a-0c263989a355" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000007, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9uA4KHR4JzRvjCorW3Ix_secret_K86MDvxoZFjKasgQbanU2JldhYYctFK", + "created": 1010000007, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9uA4KHR4JzRvjCorW3Ix", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq9uA4KHR4JzRvwbnjXS5f", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "1b07e169-9a5b-4310-b298-cd04934dc577" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000007, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_r4mnrb7dDRt8bljkSzB1gs0N3", + "confirmation_method": "automatic", + "created": 1010000007, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq9uA4KHR4JzRv0OViBL6B", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "4d296b26-4dce-467c-8da5-70ed9880bc9b" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000011, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq9tA4KHR4JzRvdGIehpNW", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "c3b66cf2-8803-489f-a2fc-4cbdbf098b6b" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.3.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.3.json new file mode 100644 index 0000000000..96549a715f --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqA5A4KHR4JzRvF0cDAHJa", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "db52a1a8-cb3b-438d-925d-fb6e5c789fce" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqA5A4KHR4JzRv36T2fZel", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "db52a1a8-cb3b-438d-925d-fb6e5c789fce" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqA5A4KHR4JzRvEOA8x809", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "db52a1a8-cb3b-438d-925d-fb6e5c789fce" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTqA5A4KHR4JzRvCC8b21Sv", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "db52a1a8-cb3b-438d-925d-fb6e5c789fce" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000015, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqA4A4KHR4JzRvGwS7zgpK", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "a56abdd5-414d-4db1-a6bd-741d6c0642ac" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000015, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqA4A4KHR4JzRvDAUcyJx4", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "a56abdd5-414d-4db1-a6bd-741d6c0642ac" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000015, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqA4A4KHR4JzRvuHnrSq0g", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "a56abdd5-414d-4db1-a6bd-741d6c0642ac" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000013, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTqA3A4KHR4JzRv2RbdtrIM", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "ea212b1a-a0ca-47c1-87d5-c2cd1666cc3c" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000014, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTqA2A4KHR4JzRvgt23ZWsD", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "2919de00-71b3-4ff3-a099-5400e541fff9" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000014, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000002, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTqA2A4KHR4JzRvOeoh7F8z", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "2919de00-71b3-4ff3-a099-5400e541fff9" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.4.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.create.1.json index a3990fb986..1259b3a0e4 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000013, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -62,16 +62,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -105,16 +106,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000014, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.finalize_invoice.1.json index f85aa35cc6..4fae08f417 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000013, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001TL8aa", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001TL8aa/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", "livemode": false, "metadata": {}, "object": "line_item", @@ -62,16 +62,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -105,16 +106,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000014, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,12 +134,12 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.1.json index ac87099084..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.1.json @@ -1,178 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 0, - "amount_paid": 0, - "amount_remaining": 0, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": true, - "auto_advance": false, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1010000003, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001TL8aa", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001TL8aa/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 48000, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1357095845, - "start": 1325473445 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000004, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 6, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -48000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000004, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -48000, - "unit_amount_decimal": "-48000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": null, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": true, - "payment_intent": null, - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "paid", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": 1000000000, - "voided_at": null - }, - "subscription": null, - "subtotal": 0, - "tax": null, - "total": 0, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.2.json new file mode 100644 index 0000000000..67c440f01e --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--Invoice.list.2.json @@ -0,0 +1,181 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000013, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002hLGc8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000014, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.1.json index cf52be404d..60221bed5d 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -19,16 +19,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000014, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.2.json index c1f41cd06f..c37fccc28b 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000002", "invoice": null, "livemode": false, "metadata": {}, @@ -19,16 +19,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000002", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..059e769c8a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1010000001, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_r4mnrb7dDRt8bljkSzB1gs0N3", + "confirmation_method": "automatic", + "created": 1010000007, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.create.1.json new file mode 100644 index 0000000000..98838cddb0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_r4mnrb7dDRt8bljkSzB1gs0N3", + "confirmation_method": "automatic", + "created": 1010000007, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentMethod.create.1.json new file mode 100644 index 0000000000..ff7012a39f --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000003, + "customer": null, + "id": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.create.1.json new file mode 100644 index 0000000000..25725d57ad --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9wA4KHR4JzRv4kieqeIK_secret_K86Mcah5gCqgz9tRLzjkqWgFKuiTcK2", + "created": 1010000010, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9wA4KHR4JzRv4kieqeIK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9wA4KHR4JzRvopmYc4HQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.list.1.json new file mode 100644 index 0000000000..ab4399132a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9uA4KHR4JzRvjCorW3Ix_secret_K86MDvxoZFjKasgQbanU2JldhYYctFK", + "created": 1010000007, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9uA4KHR4JzRvjCorW3Ix", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..25725d57ad --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq9wA4KHR4JzRv4kieqeIK_secret_K86Mcah5gCqgz9tRLzjkqWgFKuiTcK2", + "created": 1010000010, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq9wA4KHR4JzRv4kieqeIK", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq9wA4KHR4JzRvopmYc4HQ", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq9vA4KHR4JzRv6xcwdvJ0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--Token.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--Token.create.1.json deleted file mode 100644 index b3a57bdcca..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_by_card--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1010000002, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.create.1.json new file mode 100644 index 0000000000..8ac4974811 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01c8JXzneSmnZLPpukRbcUTsasEjMfrzf6fjZ1bIRuOcKrZa", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq9uA4KHR4JzRvjCorW3Ix", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01c8JXzneSmnZLPpukRbcUTsasEjMfrzf6fjZ1bIRuOcKrZa#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.list.1.json new file mode 100644 index 0000000000..3b40ded40c --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01c8JXzneSmnZLPpukRbcUTsasEjMfrzf6fjZ1bIRuOcKrZa", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq9uA4KHR4JzRvjCorW3Ix", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01c8JXzneSmnZLPpukRbcUTsasEjMfrzf6fjZ1bIRuOcKrZa#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.create.1.json deleted file mode 100644 index 180168b461..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.create.1.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 48000, - "amount_captured": 48000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1010000001, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $80.0 x 6", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000001", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.list.1.json index 4c471240bc..ab85eb1d89 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.list.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Charge.list.1.json @@ -10,18 +10,18 @@ "balance_transaction": "txn_NORMALIZED00000000000001", "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": true, "created": 1010000001, "currency": "usd", @@ -36,7 +36,17 @@ "id": "ch_NORMALIZED00000000000001", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -49,14 +59,14 @@ "type": "authorized" }, "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", @@ -85,34 +95,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.create.1.json index 236cba3ab0..364f2d361c 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.create.1.json @@ -3,7 +3,7 @@ "balance": 0, "created": 1010000002, "currency": null, - "default_source": "card_NORMALIZED00000000000001", + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.1.json new file mode 100644 index 0000000000..364f2d361c --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.2.json new file mode 100644 index 0000000000..5ca9c6ff89 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.retrieve.1.json new file mode 100644 index 0000000000..364f2d361c --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.1.json new file mode 100644 index 0000000000..3e2d549b0e --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.1.json @@ -0,0 +1,196 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000003, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000004, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001hLGc8", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001hLGc8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1357095845, + "start": 1325473445 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000004, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000005, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqA5A4KHR4JzRvF0cDAHJa", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "db52a1a8-cb3b-438d-925d-fb6e5c789fce" + }, + "type": "invoice.payment_succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.2.json new file mode 100644 index 0000000000..2a6f7b8b57 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.2.json @@ -0,0 +1,702 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000001, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1010000001, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_6J7nfoiYnnjkkoRJwNKaerU7V", + "confirmation_method": "automatic", + "created": 1010000006, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqABA4KHR4JzRv10udJkVB", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "ff50ba77-4670-4ac0-a550-2bbb8c12cddc" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000001, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1010000001, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqABA4KHR4JzRv1ce7GQxt", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "ff50ba77-4670-4ac0-a550-2bbb8c12cddc" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000007, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTqAGA4KHR4JzRvUpchhnS8", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "449dbb0d-925e-400b-b2d5-16fbb5e7a094" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000008, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqADA4KHR4JzRvNZ7Y9npM_secret_K86Mg4MTEnGNuUwopcKVKgvS20oVzp7", + "created": 1010000009, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqADA4KHR4JzRvNZ7Y9npM", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqADA4KHR4JzRv3Qn6rfDc", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqAEA4KHR4JzRvSa5T7DXf", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "df27878d-538d-4d9a-ba8e-a36860ffe240" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1010000008, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000010, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTqAEA4KHR4JzRvDJTbX7rO", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "df27878d-538d-4d9a-ba8e-a36860ffe240" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1010000009, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqADA4KHR4JzRvNZ7Y9npM_secret_K86Mg4MTEnGNuUwopcKVKgvS20oVzp7", + "created": 1010000009, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqADA4KHR4JzRvNZ7Y9npM", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqADA4KHR4JzRv3Qn6rfDc", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqAEA4KHR4JzRv5k1sg9bY", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "df27878d-538d-4d9a-ba8e-a36860ffe240" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqABA4KHR4JzRvNe5hBHo9_secret_K86Msa77hlNy0IDEMrAUBSuC7IXh7QE", + "created": 1010000006, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqABA4KHR4JzRvNe5hBHo9", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTqABA4KHR4JzRvonykoTEv", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "3db46c69-2196-48a9-9ffa-4a319e081acd" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000006, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_6J7nfoiYnnjkkoRJwNKaerU7V", + "confirmation_method": "automatic", + "created": 1010000006, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqABA4KHR4JzRv1ZCN1tUz", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "3b3433ad-97a6-4703-8d95-7f531c28a369" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000002, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000002, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTqAAA4KHR4JzRvurWs6Xl9", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "ad035c31-23db-4955-8528-2dc816591d09" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.3.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.3.json new file mode 100644 index 0000000000..c5d0d10a67 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.3.json @@ -0,0 +1,946 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000011, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 136000, + "amount_paid": 0, + "amount_remaining": 136000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000012, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 136000, + "tax": null, + "total": 136000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqAMA4KHR4JzRvIhV64ycG", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "4886d91f-396a-46c5-94da-382fdc497108" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1010000011, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 136000, + "amount_paid": 0, + "amount_remaining": 136000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000012, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 136000, + "tax": null, + "total": 136000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "number": null, + "payment_intent": null, + "status": "draft", + "status_transitions": { + "finalized_at": null + } + } + }, + "id": "evt_1JTqAMA4KHR4JzRvP17s3Br5", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "4886d91f-396a-46c5-94da-382fdc497108" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000011, + "data": { + "object": { + "amount": 136000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_EcT6csUUrhKe3oDn2htrv9XgK", + "confirmation_method": "automatic", + "created": 1010000011, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Payment for Invoice", + "id": "pi_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000002", + "last_payment_error": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqALA4KHR4JzRv02oQ0Eod", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "4886d91f-396a-46c5-94da-382fdc497108" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 136000, + "amount_paid": 0, + "amount_remaining": 136000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000012, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 136000, + "tax": null, + "total": 136000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqALA4KHR4JzRvLIyTGdsT", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "161186e8-3c37-4a6a-92d7-ed3f0d7ad60e" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqALA4KHR4JzRvEqL8Lwts", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "161186e8-3c37-4a6a-92d7-ed3f0d7ad60e" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000012, + "data": { + "object": { + "amount": 184000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqALA4KHR4JzRv0tm24mKi", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "161186e8-3c37-4a6a-92d7-ed3f0d7ad60e" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1010000013, + "data": { + "object": { + "amount": 184000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTqAKA4KHR4JzRvlCvzaDs7", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "50df17c7-3b19-4a47-85d5-c47873f6dd2c" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000013, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTqAJA4KHR4JzRvQPntmpdw", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "b773bf98-4da4-4357-b3c0-f7ffd0336d5b" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1010000013, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1010000002, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTqAJA4KHR4JzRvIfypaqST", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "b773bf98-4da4-4357-b3c0-f7ffd0336d5b" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.4.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.create.1.json index 33f7ccbcf7..ec767f3c81 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 136000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000012, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -62,16 +62,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -105,16 +106,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,7 +134,7 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.finalize_invoice.1.json index e4bf0da1f9..77e05d6cfe 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 136000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "charge_automatically", - "created": 1010000003, + "created": 1010000012, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001lRluC", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001lRluC/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -62,16 +62,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -92,8 +93,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", "livemode": false, "metadata": {}, "object": "line_item", @@ -105,16 +106,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -132,16 +134,16 @@ "has_more": false, "object": "list", "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1000000000, - "number": "NORMALI-0001", + "number": "NORMALI-0003", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.1.json index f791fad79c..e39960ab72 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.1.json @@ -1,178 +1,5 @@ { - "data": [ - { - "account_country": "US", - "account_name": null, - "account_tax_ids": null, - "amount_due": 136000, - "amount_paid": 0, - "amount_remaining": 136000, - "application_fee_amount": null, - "attempt_count": 0, - "attempted": false, - "auto_advance": true, - "automatic_tax": { - "enabled": false, - "status": null - }, - "billing_reason": "manual", - "charge": null, - "collection_method": "charge_automatically", - "created": 1010000003, - "currency": "usd", - "custom_fields": null, - "customer": "cus_NORMALIZED0001", - "customer_address": null, - "customer_email": "hamlet@zulip.com", - "customer_name": null, - "customer_phone": null, - "customer_shipping": null, - "customer_tax_exempt": "none", - "customer_tax_ids": [], - "default_payment_method": null, - "default_source": null, - "default_tax_rates": [], - "description": null, - "discount": null, - "discounts": [], - "due_date": null, - "ending_balance": 0, - "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001lRluC", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001lRluC/pdf", - "last_finalization_error": null, - "lines": { - "data": [ - { - "amount": 184000, - "currency": "usd", - "description": "Zulip Standard", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000003, - "currency": "usd", - "id": "price_NORMALIZED00000000000001", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0001", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": 8000, - "unit_amount_decimal": "8000" - }, - "proration": false, - "quantity": 23, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - }, - { - "amount": -48000, - "currency": "usd", - "description": "Payment (Card ending in 4242)", - "discount_amounts": [], - "discountable": false, - "discounts": [], - "id": "il_NORMALIZED00000000000002", - "invoice_item": "ii_NORMALIZED00000000000002", - "livemode": false, - "metadata": {}, - "object": "line_item", - "period": { - "end": 1000000000, - "start": 1000000000 - }, - "plan": null, - "price": { - "active": false, - "billing_scheme": "per_unit", - "created": 1010000004, - "currency": "usd", - "id": "price_NORMALIZED00000000000002", - "livemode": false, - "lookup_key": null, - "metadata": {}, - "nickname": null, - "object": "price", - "product": "prod_NORMALIZED0002", - "recurring": null, - "tiers_mode": null, - "transform_quantity": null, - "type": "one_time", - "unit_amount": -48000, - "unit_amount_decimal": "-48000" - }, - "proration": false, - "quantity": 1, - "subscription": null, - "tax_amounts": [], - "tax_rates": [], - "type": "invoiceitem" - } - ], - "has_more": false, - "object": "list", - "total_count": 2, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" - }, - "livemode": false, - "metadata": {}, - "next_payment_attempt": 1000000000, - "number": "NORMALI-0001", - "object": "invoice", - "on_behalf_of": null, - "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", - "payment_settings": { - "payment_method_options": null, - "payment_method_types": null - }, - "period_end": 1000000000, - "period_start": 1000000000, - "post_payment_credit_notes_amount": 0, - "pre_payment_credit_notes_amount": 0, - "quote": null, - "receipt_number": null, - "starting_balance": 0, - "statement_descriptor": "Zulip Standard", - "status": "open", - "status_transitions": { - "finalized_at": 1000000000, - "marked_uncollectible_at": null, - "paid_at": null, - "voided_at": null - }, - "subscription": null, - "subtotal": 136000, - "tax": null, - "total": 136000, - "total_discount_amounts": [], - "total_tax_amounts": [], - "transfer_data": null, - "webhooks_delivered_at": 1000000000 - } - ], + "data": [], "has_more": false, "object": "list", "url": "/v1/invoices" diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.2.json new file mode 100644 index 0000000000..e542664144 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Invoice.list.2.json @@ -0,0 +1,181 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 136000, + "amount_paid": 0, + "amount_remaining": 136000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000012, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002cMgL8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000013, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 136000, + "tax": null, + "total": 136000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.1.json index cf52be404d..33147feb65 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Payment (Card ending in 4242)", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000002", + "id": "ii_NORMALIZED00000000000004", "invoice": null, "livemode": false, "metadata": {}, @@ -19,16 +19,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000004, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000002", + "id": "price_NORMALIZED00000000000004", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0002", + "product": "prod_NORMALIZED0004", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.2.json index daddb9e677..2a701495f5 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--InvoiceItem.create.2.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -19,16 +19,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000003, + "created": 1010000013, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..e919c7d0d6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1010000001, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_6J7nfoiYnnjkkoRJwNKaerU7V", + "confirmation_method": "automatic", + "created": 1010000006, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.create.1.json new file mode 100644 index 0000000000..180370598f --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_6J7nfoiYnnjkkoRJwNKaerU7V", + "confirmation_method": "automatic", + "created": 1010000006, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentMethod.create.1.json new file mode 100644 index 0000000000..6ecdd7a2d2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1010000010, + "customer": null, + "id": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.create.1.json new file mode 100644 index 0000000000..e4c4ec7b9b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqADA4KHR4JzRvNZ7Y9npM_secret_K86Mg4MTEnGNuUwopcKVKgvS20oVzp7", + "created": 1010000009, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqADA4KHR4JzRvNZ7Y9npM", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqADA4KHR4JzRv3Qn6rfDc", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.list.1.json new file mode 100644 index 0000000000..dbe41f3627 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqABA4KHR4JzRvNe5hBHo9_secret_K86Msa77hlNy0IDEMrAUBSuC7IXh7QE", + "created": 1010000006, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqABA4KHR4JzRvNe5hBHo9", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..e4c4ec7b9b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqADA4KHR4JzRvNZ7Y9npM_secret_K86Mg4MTEnGNuUwopcKVKgvS20oVzp7", + "created": 1010000009, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqADA4KHR4JzRvNZ7Y9npM", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqADA4KHR4JzRv3Qn6rfDc", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqACA4KHR4JzRv22oKQaFN", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Token.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Token.create.1.json deleted file mode 100644 index 6281ac65af..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1010000005, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.create.1.json new file mode 100644 index 0000000000..ba14bbd350 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01d98gsWvcWLP0AtD71zNcatEMdqXOGPhTfrA5L1Yofe3mXY", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqABA4KHR4JzRvNe5hBHo9", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01d98gsWvcWLP0AtD71zNcatEMdqXOGPhTfrA5L1Yofe3mXY#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.list.1.json new file mode 100644 index 0000000000..9c67460b6a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_card_with_outdated_seat_count--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01d98gsWvcWLP0AtD71zNcatEMdqXOGPhTfrA5L1Yofe3mXY", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqABA4KHR4JzRvNe5hBHo9", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01d98gsWvcWLP0AtD71zNcatEMdqXOGPhTfrA5L1Yofe3mXY#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.modify.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.modify.1.json new file mode 100644 index 0000000000..51ee3ff976 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1010000001, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.1.json index 6ea816ef34..b9aaf2a4ce 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.1.json @@ -3,50 +3,7 @@ "balance": 0, "created": 1010000001, "currency": "usd", - "default_source": { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1010000002, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - }, + "default_source": null, "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -69,57 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1010000002, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.2.json index 6ea816ef34..92d80f584a 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Customer.retrieve.2.json @@ -3,50 +3,7 @@ "balance": 0, "created": 1010000001, "currency": "usd", - "default_source": { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1010000002, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - }, + "default_source": "src_NORMALIZED00000000000001", "delinquent": false, "description": "zulip (Zulip Dev)", "discount": null, @@ -69,57 +26,5 @@ "phone": null, "preferred_locales": [], "shipping": null, - "sources": { - "data": [ - { - "ach_credit_transfer": { - "account_number": "test_NORMALIZED01", - "bank_name": "TEST BANK", - "fingerprint": "NORMALIZED000001", - "refund_account_holder_name": null, - "refund_account_holder_type": null, - "refund_routing_number": null, - "routing_number": "110000000", - "swift_code": "TSTEZ122" - }, - "amount": null, - "client_secret": "src_client_secret_NORMALIZED00000000000001", - "created": 1010000002, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "flow": "receiver", - "id": "src_NORMALIZED00000000000001", - "livemode": false, - "metadata": {}, - "object": "source", - "owner": { - "address": null, - "email": "amount_0@stripe.com", - "name": null, - "phone": null, - "verified_address": null, - "verified_email": null, - "verified_name": null, - "verified_phone": null - }, - "receiver": { - "address": "000000000-test_NORMALIZED01", - "amount_charged": 0, - "amount_received": 0, - "amount_returned": 0, - "refund_attributes_method": "email", - "refund_attributes_status": "missing" - }, - "statement_descriptor": null, - "status": "pending", - "type": "ach_credit_transfer", - "usage": "reusable" - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, "tax_exempt": "none" } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Event.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Event.list.1.json new file mode 100644 index 0000000000..f1e4c1ae9c --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Event.list.1.json @@ -0,0 +1,196 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1010000002, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 136000, + "amount_paid": 0, + "amount_remaining": 136000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1010000003, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tgtTe", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001tgtTe/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000004, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1010000005, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 136000, + "tax": null, + "total": 136000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JPMBrA4KHR4JzRv5XTFCk0W", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "d6d0bbaa-b5a4-4f35-917c-23f4469a87b4" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.create.1.json index 4ff69f2513..9472d2b69f 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000006, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -37,7 +37,7 @@ "ending_balance": null, "footer": null, "hosted_invoice_url": null, - "id": "in_NORMALIZED00000000000001", + "id": "in_NORMALIZED00000000000002", "invoice_pdf": null, "last_finalization_error": null, "lines": { @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -62,16 +62,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000001, + "created": 1010000007, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,7 +90,7 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.finalize_invoice.1.json index 07c16f132e..ef85442851 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -16,7 +16,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000006, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LW0pX", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LW0pX/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000021YRUX", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000021YRUX/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -49,8 +49,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -62,16 +62,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000001, + "created": 1010000007, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -89,16 +90,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.list.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.list.1.json index 29b0ca6e5e..2daa2472d4 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--Invoice.list.1.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 984000, "amount_paid": 0, @@ -18,7 +18,7 @@ "billing_reason": "manual", "charge": null, "collection_method": "send_invoice", - "created": 1010000002, + "created": 1010000006, "currency": "usd", "custom_fields": null, "customer": "cus_NORMALIZED0001", @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LW0pX", - "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001LW0pX/pdf", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000021YRUX", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000021YRUX/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -51,8 +51,8 @@ "discount_amounts": [], "discountable": false, "discounts": [], - "id": "il_NORMALIZED00000000000001", - "invoice_item": "ii_NORMALIZED00000000000001", + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", "livemode": false, "metadata": {}, "object": "line_item", @@ -64,16 +64,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000001, + "created": 1010000007, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -91,16 +92,16 @@ "has_more": false, "object": "list", "total_count": 1, - "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": false, - "payment_intent": "pi_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", "payment_settings": { "payment_method_options": null, "payment_method_types": null diff --git a/corporate/tests/stripe_fixtures/upgrade_by_invoice--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/upgrade_by_invoice--InvoiceItem.create.1.json index 031df5bc51..9591e7e802 100644 --- a/corporate/tests/stripe_fixtures/upgrade_by_invoice--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_by_invoice--InvoiceItem.create.1.json @@ -6,7 +6,7 @@ "description": "Zulip Standard", "discountable": false, "discounts": [], - "id": "ii_NORMALIZED00000000000001", + "id": "ii_NORMALIZED00000000000003", "invoice": null, "livemode": false, "metadata": {}, @@ -19,16 +19,17 @@ "price": { "active": false, "billing_scheme": "per_unit", - "created": 1010000001, + "created": 1010000007, "currency": "usd", - "id": "price_NORMALIZED00000000000001", + "id": "price_NORMALIZED00000000000003", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", - "product": "prod_NORMALIZED0001", + "product": "prod_NORMALIZED0003", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Charge.list.1.json similarity index 63% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.list.1.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Charge.list.1.json index f4c2357daa..ecee252c9e 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.list.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Charge.list.1.json @@ -10,18 +10,18 @@ "balance_transaction": null, "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": false, "created": 1000000000, "currency": "usd", @@ -36,7 +36,17 @@ "id": "ch_NORMALIZED00000000000001", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -49,20 +59,20 @@ "type": "issuer_declined" }, "paid": false, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", "exp_month": 3, "exp_year": 2033, - "fingerprint": "NORMALIZED000002", + "fingerprint": "NORMALIZED000001", "funding": "credit", "installments": null, "last4": "0341", @@ -85,34 +95,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "failed", "transfer_data": null, "transfer_group": null diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Charge.list.2.json similarity index 64% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.list.2.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Charge.list.2.json index f94d2e808f..11480dc51f 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.list.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Charge.list.2.json @@ -10,18 +10,18 @@ "balance_transaction": "txn_NORMALIZED00000000000001", "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": true, "created": 1000000000, "currency": "usd", @@ -36,7 +36,17 @@ "id": "ch_NORMALIZED00000000000002", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -49,20 +59,20 @@ "type": "authorized" }, "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", "exp_month": 3, "exp_year": 2033, - "fingerprint": "NORMALIZED000001", + "fingerprint": "NORMALIZED000002", "funding": "credit", "installments": null, "last4": "4242", @@ -85,34 +95,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "succeeded", "transfer_data": null, "transfer_group": null @@ -127,18 +113,18 @@ "balance_transaction": null, "billing_details": { "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", + "city": null, + "country": null, + "line1": null, "line2": null, - "postal_code": "33333", + "postal_code": null, "state": null }, "email": null, - "name": "Ada Starr", + "name": null, "phone": null }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", + "calculated_statement_descriptor": "ZULIP STANDARD", "captured": false, "created": 1000000000, "currency": "usd", @@ -153,7 +139,17 @@ "id": "ch_NORMALIZED00000000000001", "invoice": null, "livemode": false, - "metadata": {}, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, "object": "charge", "on_behalf_of": null, "order": null, @@ -166,20 +162,20 @@ "type": "issuer_declined" }, "paid": false, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000002", + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", "payment_method_details": { "card": { "brand": "visa", "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", + "address_line1_check": null, + "address_postal_code_check": null, "cvc_check": "pass" }, "country": "US", "exp_month": 3, "exp_year": 2033, - "fingerprint": "NORMALIZED000002", + "fingerprint": "NORMALIZED000001", "funding": "credit", "installments": null, "last4": "0341", @@ -202,34 +198,10 @@ }, "review": null, "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, + "source": null, "source_transfer": null, "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", + "statement_descriptor_suffix": null, "status": "failed", "transfer_data": null, "transfer_group": null diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.2.json new file mode 100644 index 0000000000..16d801592a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.3.json new file mode 100644 index 0000000000..01273c5dba --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.modify.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.2.json new file mode 100644 index 0000000000..1813e440fe --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.2.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.3.json new file mode 100644 index 0000000000..16d801592a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Customer.retrieve.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.1.json new file mode 100644 index 0000000000..5188268639 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.1.json @@ -0,0 +1,61 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq1kA4KHR4JzRvFA0jnE7e_secret_K86EIkQQ0NUVjzpTlDlte1RZPPiC1FG", + "created": 1000000000, + "customer": "cus_NORMALIZED0002", + "description": null, + "id": "seti_1JTq1kA4KHR4JzRvFA0jnE7e", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq1kA4KHR4JzRv08fYD23e", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq1dA4KHR4JzRvUC3CG3GY", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq1kA4KHR4JzRvUdhnmSbL", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "f6dcbfe7-bbc5-43cf-8017-81c7eb3f5a80" + }, + "type": "setup_intent.succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.2.json new file mode 100644 index 0000000000..4576977030 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.2.json @@ -0,0 +1,756 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2ZA4KHR4JzRv1PDnNEwj", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "2c005700-ef35-4b6f-8ce5-bfdbfe78f0dc" + }, + "type": "payment_intent.payment_failed" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2ZA4KHR4JzRv1QHLpNdj", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "2c005700-ef35-4b6f-8ce5-bfdbfe78f0dc" + }, + "type": "charge.failed" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTq2fA4KHR4JzRvdRTIFT7i", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "97d0c5e5-6c2a-44ef-ba0e-b9b2556a0e97" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2cA4KHR4JzRvIyzpcOku_secret_K86FiWzplVM2E2CTV7Qi5MydSRBwNeZ", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2cA4KHR4JzRvIyzpcOku", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2cA4KHR4JzRvsnl4OZZX", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq2dA4KHR4JzRvOsMpIxo2", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "74374ef1-d5bf-4f7a-b2ea-38f3e711cbc2" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq2dA4KHR4JzRvbVabcW2y", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "74374ef1-d5bf-4f7a-b2ea-38f3e711cbc2" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2cA4KHR4JzRvIyzpcOku_secret_K86FiWzplVM2E2CTV7Qi5MydSRBwNeZ", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2cA4KHR4JzRvIyzpcOku", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2cA4KHR4JzRvsnl4OZZX", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq2dA4KHR4JzRv7vkXg7BS", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "74374ef1-d5bf-4f7a-b2ea-38f3e711cbc2" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2ZA4KHR4JzRvuZCYvjuz_secret_K86Fub8dmyWFzCOOtJCMqt5Ovy1Wj9X", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2ZA4KHR4JzRvuZCYvjuz", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq2aA4KHR4JzRvJRR2mhS1", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "d5829cb2-57b6-4e85-bc97-c7bf44333aa3" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2ZA4KHR4JzRv1rxvnucP", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "88b6f1c6-41a6-437d-b14f-a5c5d152e41c" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTq2YA4KHR4JzRvyanl88up", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "81cdbdf2-be5d-43d7-ad78-58dba5d9c2cc" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.3.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.4.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.4.json new file mode 100644 index 0000000000..cdca0c54ad --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.4.json @@ -0,0 +1,242 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2ZA4KHR4JzRv1PDnNEwj", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "2c005700-ef35-4b6f-8ce5-bfdbfe78f0dc" + }, + "type": "payment_intent.payment_failed" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.5.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.5.json new file mode 100644 index 0000000000..bafce55adc --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.5.json @@ -0,0 +1,657 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 184000, + "amount_capturable": 0, + "amount_received": 184000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 184000, + "amount_captured": 184000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eZ82dQxSn0KwKMzYfGbLKtIUG", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2mA4KHR4JzRv1Oa4ZL4e", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "c190ed58-43ff-42e1-999a-0a27b8913de5" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 184000, + "amount_captured": 184000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2mA4KHR4JzRv1Z5ya8Pf", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "c190ed58-43ff-42e1-999a-0a27b8913de5" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM" + } + } + }, + "id": "evt_1JTq2rA4KHR4JzRv9exDwqkr", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "08bf7d5f-1164-41d1-a035-75cb4ed1378f" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2oA4KHR4JzRvmVlHnTDV_secret_K86F4JiUNFDaIe92dENTyawavQVuwzp", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2oA4KHR4JzRvmVlHnTDV", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2oA4KHR4JzRv5UsDqEnA", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq2pA4KHR4JzRvzOkaoNBq", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "106ff81d-7ee8-4bbb-9259-c7816c72beca" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTq2pA4KHR4JzRvkfPRdY5m", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "106ff81d-7ee8-4bbb-9259-c7816c72beca" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2oA4KHR4JzRvmVlHnTDV_secret_K86F4JiUNFDaIe92dENTyawavQVuwzp", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2oA4KHR4JzRvmVlHnTDV", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2oA4KHR4JzRv5UsDqEnA", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTq2pA4KHR4JzRvoSfW2DEG", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "106ff81d-7ee8-4bbb-9259-c7816c72beca" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2nA4KHR4JzRvmtOtXmhL_secret_K86FFXXWHJ3kTYFPSumJwYBbFb5a0mB", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2nA4KHR4JzRvmtOtXmhL", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTq2nA4KHR4JzRvZ6e6esGd", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "af6afd64-3f04-4287-90b6-b0fd273ba744" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 184000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eZ82dQxSn0KwKMzYfGbLKtIUG", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTq2mA4KHR4JzRv1mO08Fo9", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "4cda7b2a-d18e-4899-93bb-5d1b51dafbf6" + }, + "type": "payment_intent.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.6.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.6.json new file mode 100644 index 0000000000..eb1d6c9d5f --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.6.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -184000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq2xA4KHR4JzRvO3ETmYHw", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "2fd351b7-11e2-42f5-98a7-94de6887c731" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -184000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq2xA4KHR4JzRvXndwkHOJ", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "2fd351b7-11e2-42f5-98a7-94de6887c731" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -184000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq2xA4KHR4JzRvW55TvwYX", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "2fd351b7-11e2-42f5-98a7-94de6887c731" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -184000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTq2wA4KHR4JzRvjXwb3WkA", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "2fd351b7-11e2-42f5-98a7-94de6887c731" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -184000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTq2vA4KHR4JzRvjTQ8nqls", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "e02de861-58da-463f-a8bd-1abb40914666" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -184000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq2wA4KHR4JzRvVYzU3BB4", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "e02de861-58da-463f-a8bd-1abb40914666" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 184000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": "in_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTq2vA4KHR4JzRvPLLqa1Ok", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "e02de861-58da-463f-a8bd-1abb40914666" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 184000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTq2vA4KHR4JzRvHDs8HpwW", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0015", + "idempotency_key": "9454a17e-4d29-4ef2-b0a1-5a1f44279f84" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -184000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -184000, + "unit_amount_decimal": "-184000" + } + }, + "id": "evt_1JTq2uA4KHR4JzRv6Cq4Rs4R", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0016", + "idempotency_key": "3d675841-cd57-40ab-96f8-acbfd411c768" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTq2uA4KHR4JzRvY4wbo1qe", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0016", + "idempotency_key": "3d675841-cd57-40ab-96f8-acbfd411c768" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.7.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.7.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Event.list.7.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.create.1.json similarity index 96% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.create.1.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.create.1.json index 9c8c17c5ed..94b3c58638 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -115,6 +116,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.finalize_invoice.1.json similarity index 94% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.finalize_invoice.1.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.finalize_invoice.1.json index a04f73a460..5d7b233c49 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000011d2Zr", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000011d2Zr/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -115,6 +116,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -137,7 +139,7 @@ "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -168,5 +170,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.1.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.2.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.2.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.3.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.4.json similarity index 94% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.list.2.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.4.json index aaa6d2eafd..b61aa71022 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Invoice.list.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--Invoice.list.4.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 0, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": null, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED00000000000000011d2Zr", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED00000000000000011d2Zr/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001j7BSf/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -117,6 +118,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -139,7 +141,7 @@ "livemode": false, "metadata": {}, "next_payment_attempt": null, - "number": "NORMALI-0001", + "number": "NORMALI-0002", "object": "invoice", "on_behalf_of": null, "paid": true, @@ -170,7 +172,7 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } ], "has_more": false, diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.1.json similarity index 96% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.create.1.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.1.json index e7e8ac47f7..59a7e9e1ec 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.1.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.2.json similarity index 96% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.create.2.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.2.json index 94f145f003..25a89d76be 100644 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.create.2.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.list.1.json similarity index 100% rename from corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--InvoiceItem.list.1.json rename to corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--InvoiceItem.list.1.json diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..1e3872f58a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.1.json @@ -0,0 +1,577 @@ +{ + "_message": "Your card was declined.", + "code": "card_declined", + "error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "param": null, + "payment_intent": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": {}, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "setup_intent": null, + "source": null, + "type": "card_error" + }, + "headers": { + "Connection": "keep-alive", + "Content-Length": "8680", + "Content-Type": "application/json", + "Date": "NORMALIZED DATETIME", + "Server": "nginx", + "Strict-Transport-Security": "max-age=31556926; includeSubDomains; preload", + "access-control-allow-credentials": "true", + "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", + "access-control-allow-origin": "*", + "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", + "access-control-max-age": "300", + "cache-control": "no-cache, no-store", + "idempotency-key": "00000000-0000-0000-0000-000000000000", + "original-request": "req_NORMALIZED0002", + "request-id": "req_NORMALIZED0002", + "stripe-should-retry": "false", + "stripe-version": "2020-08-27", + "x-stripe-c-cost": "6" + }, + "http_body": "{\n \"error\": {\n \"charge\": \"ch_NORMALIZED00000000000001\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_intent\": {\n \"id\": \"pi_NORMALIZED00000000000001\",\n \"object\": \"payment_intent\",\n \"amount\": 48000,\n \"amount_capturable\": 0,\n \"amount_received\": 0,\n \"application\": null,\n \"application_fee_amount\": null,\n \"canceled_at\": null,\n \"cancellation_reason\": null,\n \"capture_method\": \"automatic\",\n \"charges\": {\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"ch_NORMALIZED00000000000001\",\n \"object\": \"charge\",\n \"amount\": 48000,\n \"amount_captured\": 0,\n \"amount_refunded\": 0,\n \"application\": null,\n \"application_fee\": null,\n \"application_fee_amount\": null,\n \"balance_transaction\": null,\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"calculated_statement_descriptor\": \"ZULIP STANDARD\",\n \"captured\": false,\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Upgrade to Zulip Standard, $80.0 x 6\",\n \"destination\": null,\n \"dispute\": null,\n \"disputed\": false,\n \"failure_code\": \"card_declined\",\n \"failure_message\": \"Your card was declined.\",\n \"fraud_details\": {\n },\n \"invoice\": null,\n \"livemode\": false,\n \"metadata\": {\n \"billing_modality\": \"charge_automatically\",\n \"billing_schedule\": \"1\",\n \"licenses\": \"6\",\n \"license_management\": \"automatic\",\n \"price_per_license\": \"8000\",\n \"seat_count\": \"6\",\n \"type\": \"upgrade\",\n \"user_email\": \"hamlet@zulip.com\",\n \"realm_str\": \"zulip\"\n },\n \"on_behalf_of\": null,\n \"order\": null,\n \"outcome\": {\n \"network_status\": \"declined_by_network\",\n \"reason\": \"generic_decline\",\n \"risk_level\": \"normal\",\n \"risk_score\": 13,\n \"seller_message\": \"The bank did not return any further details with this decline.\",\n \"type\": \"issuer_declined\"\n },\n \"paid\": false,\n \"payment_intent\": \"pi_NORMALIZED00000000000001\",\n \"payment_method\": \"pm_1JTq2WA4KHR4JzRv7eaGGnoM\",\n \"payment_method_details\": {\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"installments\": null,\n \"last4\": \"0341\",\n \"network\": \"visa\",\n \"three_d_secure\": null,\n \"wallet\": null\n },\n \"type\": \"card\"\n },\n \"receipt_email\": \"hamlet@zulip.com\",\n \"receipt_number\": null,\n \"receipt_url\": null,\n \"refunded\": false,\n \"refunds\": {\n \"object\": \"list\",\n \"data\": [\n\n ],\n \"has_more\": false,\n \"total_count\": 0,\n \"url\": \"/v1/charges/ch_NORMALIZED00000000000001/refunds\"\n },\n \"review\": null,\n \"shipping\": null,\n \"source\": null,\n \"source_transfer\": null,\n \"statement_descriptor\": \"Zulip Standard\",\n \"statement_descriptor_suffix\": null,\n \"status\": \"failed\",\n \"transfer_data\": null,\n \"transfer_group\": null\n }\n ],\n \"has_more\": false,\n \"total_count\": 1,\n \"url\": \"/v1/charges?payment_intent=pi_NORMALIZED00000000000001\"\n },\n \"client_secret\": \"pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz\",\n \"confirmation_method\": \"automatic\",\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Upgrade to Zulip Standard, $80.0 x 6\",\n \"invoice\": null,\n \"last_payment_error\": {\n \"charge\": \"ch_NORMALIZED00000000000001\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_method\": {\n \"id\": \"pm_1JTq2WA4KHR4JzRv7eaGGnoM\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n },\n \"livemode\": false,\n \"metadata\": {\n \"billing_modality\": \"charge_automatically\",\n \"billing_schedule\": \"1\",\n \"licenses\": \"6\",\n \"license_management\": \"automatic\",\n \"price_per_license\": \"8000\",\n \"seat_count\": \"6\",\n \"type\": \"upgrade\",\n \"user_email\": \"hamlet@zulip.com\",\n \"realm_str\": \"zulip\"\n },\n \"next_action\": null,\n \"on_behalf_of\": null,\n \"payment_method\": null,\n \"payment_method_options\": {\n \"card\": {\n \"installments\": null,\n \"network\": null,\n \"request_three_d_secure\": \"automatic\"\n }\n },\n \"payment_method_types\": [\n \"card\"\n ],\n \"receipt_email\": \"hamlet@zulip.com\",\n \"review\": null,\n \"setup_future_usage\": null,\n \"shipping\": null,\n \"source\": null,\n \"statement_descriptor\": \"Zulip Standard\",\n \"statement_descriptor_suffix\": null,\n \"status\": \"requires_payment_method\",\n \"transfer_data\": null,\n \"transfer_group\": null\n },\n \"payment_method\": {\n \"id\": \"pm_1JTq2WA4KHR4JzRv7eaGGnoM\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n }\n}\n", + "http_status": 402, + "json_body": { + "error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_intent": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + } + }, + "param": null, + "request_id": "req_NORMALIZED0002" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.2.json new file mode 100644 index 0000000000..a2d02d524a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.confirm.2.json @@ -0,0 +1,166 @@ +{ + "amount": 184000, + "amount_capturable": 0, + "amount_received": 184000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 184000, + "amount_captured": 184000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eZ82dQxSn0KwKMzYfGbLKtIUG", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.1.json new file mode 100644 index 0000000000..e5c8dbc858 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_BPWPbanpyrkqCWbBS0BO9TSGz", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.2.json new file mode 100644 index 0000000000..3ce27d7ac4 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentIntent.create.2.json @@ -0,0 +1,62 @@ +{ + "amount": 184000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_eZ82dQxSn0KwKMzYfGbLKtIUG", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 23", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.1.json new file mode 100644 index 0000000000..996d4bd69b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.2.json new file mode 100644 index 0000000000..f024bd089e --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--PaymentMethod.create.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.1.json new file mode 100644 index 0000000000..bd85a91e14 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2cA4KHR4JzRvIyzpcOku_secret_K86FiWzplVM2E2CTV7Qi5MydSRBwNeZ", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2cA4KHR4JzRvIyzpcOku", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2cA4KHR4JzRvsnl4OZZX", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.2.json new file mode 100644 index 0000000000..4da388a638 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.create.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2oA4KHR4JzRvmVlHnTDV_secret_K86F4JiUNFDaIe92dENTyawavQVuwzp", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2oA4KHR4JzRvmVlHnTDV", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2oA4KHR4JzRv5UsDqEnA", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.1.json new file mode 100644 index 0000000000..9904fd0eeb --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2ZA4KHR4JzRvuZCYvjuz_secret_K86Fub8dmyWFzCOOtJCMqt5Ovy1Wj9X", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2ZA4KHR4JzRvuZCYvjuz", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.2.json new file mode 100644 index 0000000000..3023362ea3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.list.2.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2nA4KHR4JzRvmtOtXmhL_secret_K86FFXXWHJ3kTYFPSumJwYBbFb5a0mB", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2nA4KHR4JzRvmtOtXmhL", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..bd85a91e14 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2cA4KHR4JzRvIyzpcOku_secret_K86FiWzplVM2E2CTV7Qi5MydSRBwNeZ", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2cA4KHR4JzRvIyzpcOku", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2cA4KHR4JzRvsnl4OZZX", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2WA4KHR4JzRv7eaGGnoM", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.2.json new file mode 100644 index 0000000000..4da388a638 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--SetupIntent.retrieve.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTq2oA4KHR4JzRvmVlHnTDV_secret_K86F4JiUNFDaIe92dENTyawavQVuwzp", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTq2oA4KHR4JzRvmVlHnTDV", + "last_setup_error": null, + "latest_attempt": "setatt_1JTq2oA4KHR4JzRv5UsDqEnA", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTq2nA4KHR4JzRvrlCVdFve", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.1.json new file mode 100644 index 0000000000..70de0898c9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01XtbTSyLhQCdiV1Lu4bNCG9pufz123x5vQyvb3BCJoiPJEe", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq2ZA4KHR4JzRvuZCYvjuz", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01XtbTSyLhQCdiV1Lu4bNCG9pufz123x5vQyvb3BCJoiPJEe#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.2.json new file mode 100644 index 0000000000..79175d0e2b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.create.2.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02psIA7vgH0mJjQ3o7osNWBxq11q4ZpjRX1MhowEBGwee6HW", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq2nA4KHR4JzRvmtOtXmhL", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02psIA7vgH0mJjQ3o7osNWBxq11q4ZpjRX1MhowEBGwee6HW#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.1.json new file mode 100644 index 0000000000..5a43f381e9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01XtbTSyLhQCdiV1Lu4bNCG9pufz123x5vQyvb3BCJoiPJEe", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq2ZA4KHR4JzRvuZCYvjuz", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01XtbTSyLhQCdiV1Lu4bNCG9pufz123x5vQyvb3BCJoiPJEe#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.2.json new file mode 100644 index 0000000000..9a40797443 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_restart_from_begining--checkout.Session.list.2.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02psIA7vgH0mJjQ3o7osNWBxq11q4ZpjRX1MhowEBGwee6HW", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "23", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "23", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTq2nA4KHR4JzRvmtOtXmhL", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02psIA7vgH0mJjQ3o7osNWBxq11q4ZpjRX1MhowEBGwee6HW#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.1.json new file mode 100644 index 0000000000..6454d35b93 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.1.json @@ -0,0 +1,110 @@ +{ + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "url": "/v1/charges" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.2.json new file mode 100644 index 0000000000..800ae2cd9a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Charge.list.2.json @@ -0,0 +1,213 @@ +{ + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + }, + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "url": "/v1/charges" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.2.json new file mode 100644 index 0000000000..bde7aa033b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.3.json new file mode 100644 index 0000000000..d60ca26602 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.modify.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.2.json new file mode 100644 index 0000000000..85db819771 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.2.json @@ -0,0 +1,76 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.3.json new file mode 100644 index 0000000000..bde7aa033b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Customer.retrieve.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.1.json new file mode 100644 index 0000000000..80a081004a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.1.json @@ -0,0 +1,196 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 136000, + "amount_paid": 0, + "amount_remaining": 136000, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0002", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001cMgL8", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001cMgL8/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 184000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 23, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "open", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 136000, + "tax": null, + "total": 136000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqAMA4KHR4JzRvIhV64ycG", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "4886d91f-396a-46c5-94da-382fdc497108" + }, + "type": "invoice.finalized" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.2.json new file mode 100644 index 0000000000..0d3af7de8e --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.2.json @@ -0,0 +1,756 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqARA4KHR4JzRv0n21W5nT", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "d4e6dc71-d56b-4d61-a768-f501d3f319d8" + }, + "type": "payment_intent.payment_failed" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqARA4KHR4JzRv0ipDHa17", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "d4e6dc71-d56b-4d61-a768-f501d3f319d8" + }, + "type": "charge.failed" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTqAVA4KHR4JzRv28baQLpf", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "d1a31721-412a-439a-b1a3-eddd1f2bc200" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqASA4KHR4JzRvqm7jOHpq_secret_K86NHRwV2W6TnxZVcnQxdTE3JWsy8J5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqASA4KHR4JzRvqm7jOHpq", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqASA4KHR4JzRvlyad8fKz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqATA4KHR4JzRvfU11SS8N", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "c1eb6a0a-e000-47ed-88d9-dbc299b8a4e1" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTqATA4KHR4JzRv5hyn3oHQ", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "c1eb6a0a-e000-47ed-88d9-dbc299b8a4e1" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqASA4KHR4JzRvqm7jOHpq_secret_K86NHRwV2W6TnxZVcnQxdTE3JWsy8J5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqASA4KHR4JzRvqm7jOHpq", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqASA4KHR4JzRvlyad8fKz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqATA4KHR4JzRvJpG9CzmS", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "c1eb6a0a-e000-47ed-88d9-dbc299b8a4e1" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqARA4KHR4JzRvEiCwWXHQ_secret_K86NaB1GVexw8WmDIhr22u6zv68TX2I", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqARA4KHR4JzRvEiCwWXHQ", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTqARA4KHR4JzRvD0ExIHAY", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "8b4c5f0f-be17-4659-9eda-9516de4a2ff3" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqARA4KHR4JzRv0Gz9nyf0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "3275ac4f-4f66-4406-8533-a18b1392763f" + }, + "type": "payment_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + } + }, + "id": "evt_1JTqAPA4KHR4JzRvuWz0a7r0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "d413873a-0681-4ab0-88c0-99e647492a84" + }, + "type": "customer.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.3.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.4.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.4.json new file mode 100644 index 0000000000..d895049b75 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.4.json @@ -0,0 +1,242 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqARA4KHR4JzRv0n21W5nT", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "d4e6dc71-d56b-4d61-a768-f501d3f319d8" + }, + "type": "payment_intent.payment_failed" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.5.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.5.json new file mode 100644 index 0000000000..e101dc1fa2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.5.json @@ -0,0 +1,580 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": true, + "object": "list", + "total_count": 2, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqARA4KHR4JzRv0RKEiSXM", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "688b8fd7-73ff-4945-9539-c672fdee6b36" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqARA4KHR4JzRv0fouxUf6", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "688b8fd7-73ff-4945-9539-c672fdee6b36" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0" + } + } + }, + "id": "evt_1JTqAhA4KHR4JzRvFKyxt3kT", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "4ddbe6e2-440c-469a-9f1f-72f26813847c" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAeA4KHR4JzRvwvsjxBOb_secret_K86NUkPVA7e7fEiqm9ow0FviRNNSpzb", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAeA4KHR4JzRvwvsjxBOb", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAfA4KHR4JzRvctBUYVVz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqAfA4KHR4JzRv51RaxELz", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "f20b1a85-d1e0-4dba-9c61-b37c53dd9560" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTqAfA4KHR4JzRvhseIA31p", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "f20b1a85-d1e0-4dba-9c61-b37c53dd9560" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAeA4KHR4JzRvwvsjxBOb_secret_K86NUkPVA7e7fEiqm9ow0FviRNNSpzb", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAeA4KHR4JzRvwvsjxBOb", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAfA4KHR4JzRvctBUYVVz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqAfA4KHR4JzRvFsG2qGe0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "f20b1a85-d1e0-4dba-9c61-b37c53dd9560" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAdA4KHR4JzRvMroBt0xJ_secret_K86Nzlf1Sl1Kniu2RtCkmsWlngvE1wx", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAdA4KHR4JzRvMroBt0xJ", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTqAdA4KHR4JzRv3C11u9FO", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "cce0ae12-3e36-4bd0-b4fc-77c6e54ae1d7" + }, + "type": "setup_intent.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.6.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.6.json new file mode 100644 index 0000000000..a954fc8969 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.6.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqAoA4KHR4JzRvGIvgN1Xk", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "5319526e-4f72-4755-9dd9-203b824b6259" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqAnA4KHR4JzRv8IhkMqyj", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "5319526e-4f72-4755-9dd9-203b824b6259" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqAnA4KHR4JzRv9wWH9Tlp", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "5319526e-4f72-4755-9dd9-203b824b6259" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTqAnA4KHR4JzRv4G8Uug7h", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0012", + "idempotency_key": "5319526e-4f72-4755-9dd9-203b824b6259" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqAmA4KHR4JzRv7fu76qSh", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "0643f6b8-daa9-4e3d-a763-f219e4ca6479" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqAnA4KHR4JzRvdpVaeLlk", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "0643f6b8-daa9-4e3d-a763-f219e4ca6479" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": "in_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqAnA4KHR4JzRvORgE0FtX", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0013", + "idempotency_key": "0643f6b8-daa9-4e3d-a763-f219e4ca6479" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTqAlA4KHR4JzRvuzjgPVhU", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0014", + "idempotency_key": "346f8a75-d45a-4ce7-a54b-2fe67eefe315" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTqAlA4KHR4JzRveZxQwWb9", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0015", + "idempotency_key": "70d95e07-7f56-4b06-ae93-d7b72c6bc4dd" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTqAlA4KHR4JzRvLuo8t9uQ", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0015", + "idempotency_key": "70d95e07-7f56-4b06-ae93-d7b72c6bc4dd" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.7.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.7.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Event.list.7.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.create.1.json new file mode 100644 index 0000000000..732c9be6f4 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.create.1.json @@ -0,0 +1,174 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.finalize_invoice.1.json new file mode 100644 index 0000000000..b905f34fdb --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.finalize_invoice.1.json @@ -0,0 +1,174 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.1.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.2.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.2.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.3.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.3.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.3.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.4.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.4.json new file mode 100644 index 0000000000..08bd5171ce --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--Invoice.list.4.json @@ -0,0 +1,181 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002vf9UM/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000004", + "invoice_item": "ii_NORMALIZED00000000000004", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.1.json new file mode 100644 index 0000000000..799c067780 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.1.json @@ -0,0 +1,45 @@ +{ + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000004", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000004", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0004", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.2.json new file mode 100644 index 0000000000..66480143c6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.create.2.json @@ -0,0 +1,45 @@ +{ + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.list.1.json new file mode 100644 index 0000000000..3190cda6f9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--InvoiceItem.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoiceitems" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..8803595dc7 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.1.json @@ -0,0 +1,577 @@ +{ + "_message": "Your card was declined.", + "code": "card_declined", + "error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "param": null, + "payment_intent": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": {}, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "setup_intent": null, + "source": null, + "type": "card_error" + }, + "headers": { + "Connection": "keep-alive", + "Content-Length": "8679", + "Content-Type": "application/json", + "Date": "NORMALIZED DATETIME", + "Server": "nginx", + "Strict-Transport-Security": "max-age=31556926; includeSubDomains; preload", + "access-control-allow-credentials": "true", + "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", + "access-control-allow-origin": "*", + "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", + "access-control-max-age": "300", + "cache-control": "no-cache, no-store", + "idempotency-key": "00000000-0000-0000-0000-000000000000", + "original-request": "req_NORMALIZED0002", + "request-id": "req_NORMALIZED0002", + "stripe-should-retry": "false", + "stripe-version": "2020-08-27", + "x-stripe-c-cost": "6" + }, + "http_body": "{\n \"error\": {\n \"charge\": \"ch_NORMALIZED00000000000001\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_intent\": {\n \"id\": \"pi_NORMALIZED00000000000001\",\n \"object\": \"payment_intent\",\n \"amount\": 48000,\n \"amount_capturable\": 0,\n \"amount_received\": 0,\n \"application\": null,\n \"application_fee_amount\": null,\n \"canceled_at\": null,\n \"cancellation_reason\": null,\n \"capture_method\": \"automatic\",\n \"charges\": {\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": \"ch_NORMALIZED00000000000001\",\n \"object\": \"charge\",\n \"amount\": 48000,\n \"amount_captured\": 0,\n \"amount_refunded\": 0,\n \"application\": null,\n \"application_fee\": null,\n \"application_fee_amount\": null,\n \"balance_transaction\": null,\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"calculated_statement_descriptor\": \"ZULIP STANDARD\",\n \"captured\": false,\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Upgrade to Zulip Standard, $80.0 x 6\",\n \"destination\": null,\n \"dispute\": null,\n \"disputed\": false,\n \"failure_code\": \"card_declined\",\n \"failure_message\": \"Your card was declined.\",\n \"fraud_details\": {\n },\n \"invoice\": null,\n \"livemode\": false,\n \"metadata\": {\n \"billing_modality\": \"charge_automatically\",\n \"billing_schedule\": \"1\",\n \"licenses\": \"6\",\n \"license_management\": \"automatic\",\n \"price_per_license\": \"8000\",\n \"seat_count\": \"6\",\n \"type\": \"upgrade\",\n \"user_email\": \"hamlet@zulip.com\",\n \"realm_str\": \"zulip\"\n },\n \"on_behalf_of\": null,\n \"order\": null,\n \"outcome\": {\n \"network_status\": \"declined_by_network\",\n \"reason\": \"generic_decline\",\n \"risk_level\": \"normal\",\n \"risk_score\": 3,\n \"seller_message\": \"The bank did not return any further details with this decline.\",\n \"type\": \"issuer_declined\"\n },\n \"paid\": false,\n \"payment_intent\": \"pi_NORMALIZED00000000000001\",\n \"payment_method\": \"pm_1JTqAOA4KHR4JzRvKUkGvxS0\",\n \"payment_method_details\": {\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"installments\": null,\n \"last4\": \"0341\",\n \"network\": \"visa\",\n \"three_d_secure\": null,\n \"wallet\": null\n },\n \"type\": \"card\"\n },\n \"receipt_email\": \"hamlet@zulip.com\",\n \"receipt_number\": null,\n \"receipt_url\": null,\n \"refunded\": false,\n \"refunds\": {\n \"object\": \"list\",\n \"data\": [\n\n ],\n \"has_more\": false,\n \"total_count\": 0,\n \"url\": \"/v1/charges/ch_NORMALIZED00000000000001/refunds\"\n },\n \"review\": null,\n \"shipping\": null,\n \"source\": null,\n \"source_transfer\": null,\n \"statement_descriptor\": \"Zulip Standard\",\n \"statement_descriptor_suffix\": null,\n \"status\": \"failed\",\n \"transfer_data\": null,\n \"transfer_group\": null\n }\n ],\n \"has_more\": false,\n \"total_count\": 1,\n \"url\": \"/v1/charges?payment_intent=pi_NORMALIZED00000000000001\"\n },\n \"client_secret\": \"pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU\",\n \"confirmation_method\": \"automatic\",\n \"created\": 1000000000,\n \"currency\": \"usd\",\n \"customer\": \"cus_NORMALIZED0001\",\n \"description\": \"Upgrade to Zulip Standard, $80.0 x 6\",\n \"invoice\": null,\n \"last_payment_error\": {\n \"charge\": \"ch_NORMALIZED00000000000001\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"payment_method\": {\n \"id\": \"pm_1JTqAOA4KHR4JzRvKUkGvxS0\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n },\n \"livemode\": false,\n \"metadata\": {\n \"billing_modality\": \"charge_automatically\",\n \"billing_schedule\": \"1\",\n \"licenses\": \"6\",\n \"license_management\": \"automatic\",\n \"price_per_license\": \"8000\",\n \"seat_count\": \"6\",\n \"type\": \"upgrade\",\n \"user_email\": \"hamlet@zulip.com\",\n \"realm_str\": \"zulip\"\n },\n \"next_action\": null,\n \"on_behalf_of\": null,\n \"payment_method\": null,\n \"payment_method_options\": {\n \"card\": {\n \"installments\": null,\n \"network\": null,\n \"request_three_d_secure\": \"automatic\"\n }\n },\n \"payment_method_types\": [\n \"card\"\n ],\n \"receipt_email\": \"hamlet@zulip.com\",\n \"review\": null,\n \"setup_future_usage\": null,\n \"shipping\": null,\n \"source\": null,\n \"statement_descriptor\": \"Zulip Standard\",\n \"statement_descriptor_suffix\": null,\n \"status\": \"requires_payment_method\",\n \"transfer_data\": null,\n \"transfer_group\": null\n },\n \"payment_method\": {\n \"id\": \"pm_1JTqAOA4KHR4JzRvKUkGvxS0\",\n \"object\": \"payment_method\",\n \"billing_details\": {\n \"address\": {\n \"city\": null,\n \"country\": null,\n \"line1\": null,\n \"line2\": null,\n \"postal_code\": null,\n \"state\": null\n },\n \"email\": null,\n \"name\": null,\n \"phone\": null\n },\n \"card\": {\n \"brand\": \"visa\",\n \"checks\": {\n \"address_line1_check\": null,\n \"address_postal_code_check\": null,\n \"cvc_check\": \"pass\"\n },\n \"country\": \"US\",\n \"exp_month\": 3,\n \"exp_year\": 2033,\n \"fingerprint\": \"NORMALIZED000001\",\n \"funding\": \"credit\",\n \"generated_from\": null,\n \"last4\": \"0341\",\n \"networks\": {\n \"available\": [\n \"visa\"\n ],\n \"preferred\": null\n },\n \"three_d_secure_usage\": {\n \"supported\": true\n },\n \"wallet\": null\n },\n \"created\": 1000000000,\n \"customer\": \"cus_NORMALIZED0001\",\n \"livemode\": false,\n \"metadata\": {\n },\n \"type\": \"card\"\n },\n \"type\": \"card_error\"\n }\n}\n", + "http_status": 402, + "json_body": { + "error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_intent": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + }, + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + } + }, + "param": null, + "request_id": "req_NORMALIZED0002" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.2.json new file mode 100644 index 0000000000..e693d46f11 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.confirm.2.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": true, + "object": "list", + "total_count": 2, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.create.1.json new file mode 100644 index 0000000000..f9aeba2a0a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.1.json new file mode 100644 index 0000000000..58f4fb4d63 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.1.json @@ -0,0 +1,220 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 0, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": null, + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": false, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": "card_declined", + "failure_message": "Your card was declined.", + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "declined_by_network", + "reason": "generic_decline", + "risk_level": "normal", + "risk_score": 0, + "seller_message": "The bank did not return any further details with this decline.", + "type": "issuer_declined" + }, + "paid": false, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "0341", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": null, + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "failed", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": { + "charge": "ch_NORMALIZED00000000000001", + "code": "card_declined", + "decline_code": "generic_decline", + "doc_url": "https://stripe.com/docs/error-codes/card-declined", + "message": "Your card was declined.", + "payment_method": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + }, + "type": "card_error" + }, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.2.json new file mode 100644 index 0000000000..e693d46f11 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentIntent.retrieve.2.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": true, + "object": "list", + "total_count": 2, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_xVxt33T2UJomjdIlY6iKdiBvU", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.1.json new file mode 100644 index 0000000000..04179f3080 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "0341", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.2.json new file mode 100644 index 0000000000..a2116c9e27 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--PaymentMethod.create.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000002", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.1.json new file mode 100644 index 0000000000..45829082f1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqASA4KHR4JzRvqm7jOHpq_secret_K86NHRwV2W6TnxZVcnQxdTE3JWsy8J5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqASA4KHR4JzRvqm7jOHpq", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqASA4KHR4JzRvlyad8fKz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.2.json new file mode 100644 index 0000000000..3c53586f23 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.create.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAeA4KHR4JzRvwvsjxBOb_secret_K86NUkPVA7e7fEiqm9ow0FviRNNSpzb", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAeA4KHR4JzRvwvsjxBOb", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAfA4KHR4JzRvctBUYVVz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.1.json new file mode 100644 index 0000000000..717370020a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqARA4KHR4JzRvEiCwWXHQ_secret_K86NaB1GVexw8WmDIhr22u6zv68TX2I", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqARA4KHR4JzRvEiCwWXHQ", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.2.json new file mode 100644 index 0000000000..2be0a6a258 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.list.2.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAdA4KHR4JzRvMroBt0xJ_secret_K86Nzlf1Sl1Kniu2RtCkmsWlngvE1wx", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAdA4KHR4JzRvMroBt0xJ", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..45829082f1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqASA4KHR4JzRvqm7jOHpq_secret_K86NHRwV2W6TnxZVcnQxdTE3JWsy8J5", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqASA4KHR4JzRvqm7jOHpq", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqASA4KHR4JzRvlyad8fKz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAOA4KHR4JzRvKUkGvxS0", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.2.json new file mode 100644 index 0000000000..3c53586f23 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--SetupIntent.retrieve.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAeA4KHR4JzRvwvsjxBOb_secret_K86NUkPVA7e7fEiqm9ow0FviRNNSpzb", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAeA4KHR4JzRvwvsjxBOb", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAfA4KHR4JzRvctBUYVVz", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAdA4KHR4JzRvkF8mCZXf", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.1.json new file mode 100644 index 0000000000..234a8e3cdb --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01hHHzCTGnDkfrUaQiJDalTjiNm7a9wDJ4hBmElWBkRrtUbn", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqARA4KHR4JzRvEiCwWXHQ", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01hHHzCTGnDkfrUaQiJDalTjiNm7a9wDJ4hBmElWBkRrtUbn#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.2.json new file mode 100644 index 0000000000..0cc3b4722d --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.create.2.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02kXXkSyMFxvqDPTAo2Kz6FxNRId8FZNUKgYivvTLGc7JrH3", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqAdA4KHR4JzRvMroBt0xJ", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02kXXkSyMFxvqDPTAo2Kz6FxNRId8FZNUKgYivvTLGc7JrH3#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.1.json new file mode 100644 index 0000000000..c86f64bbd1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01hHHzCTGnDkfrUaQiJDalTjiNm7a9wDJ4hBmElWBkRrtUbn", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqARA4KHR4JzRvEiCwWXHQ", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01hHHzCTGnDkfrUaQiJDalTjiNm7a9wDJ4hBmElWBkRrtUbn#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.2.json b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.2.json new file mode 100644 index 0000000000..3f0254081b --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining--checkout.Session.list.2.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02kXXkSyMFxvqDPTAo2Kz6FxNRId8FZNUKgYivvTLGc7JrH3", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqAdA4KHR4JzRvMroBt0xJ", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02kXXkSyMFxvqDPTAo2Kz6FxNRId8FZNUKgYivvTLGc7JrH3#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.create.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.create.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.2.json new file mode 100644 index 0000000000..87bdfa24cf --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.1.json new file mode 100644 index 0000000000..730ed973b0 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.2.json new file mode 100644 index 0000000000..5da87fd774 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 2, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.3.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.3.json new file mode 100644 index 0000000000..aac9864b73 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Customer.retrieve.3.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": -48000, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 3, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.1.json new file mode 100644 index 0000000000..ccc4f0bec3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.1.json @@ -0,0 +1,61 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAsA4KHR4JzRv5WaDLerO_secret_K86Nbkg8OadCoA80Cap51BApJUDcMX9", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAsA4KHR4JzRv5WaDLerO", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTqAtA4KHR4JzRvZ8u0ihQ0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0001", + "idempotency_key": "ca5b53d9-8c11-4d52-a92f-8a93f09bc5d9" + }, + "type": "setup_intent.created" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.2.json new file mode 100644 index 0000000000..085e9c63b6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.2.json @@ -0,0 +1,657 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "othello@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_AeSEGKvy4ijB7Tok7YgArl3LN", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "othello@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqAvA4KHR4JzRv1YAtr1ER", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "f30dfdcf-8892-4c30-9f26-cf4062bf31a9" + }, + "type": "payment_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "othello@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqAvA4KHR4JzRv1cgG8VJP", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0002", + "idempotency_key": "f30dfdcf-8892-4c30-9f26-cf4062bf31a9" + }, + "type": "charge.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "invoice_settings": { + "default_payment_method": null + } + } + }, + "id": "evt_1JTqB0A4KHR4JzRvJGf2Piq8", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0003", + "idempotency_key": "c500f266-7a1a-490b-a692-ddda8eb8a905" + }, + "type": "customer.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j_secret_K86N4ayt1CzrPlD8RgtvVeFPbqnpNtd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAyA4KHR4JzRvGJwV77sx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqAyA4KHR4JzRvnZHTTXpC", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "74d6cc75-58c6-418c-a8e0-e7eb6efd1d51" + }, + "type": "setup_intent.succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "id": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" + } + }, + "id": "evt_1JTqAyA4KHR4JzRvnh0Id4A0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "74d6cc75-58c6-418c-a8e0-e7eb6efd1d51" + }, + "type": "payment_method.attached" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j_secret_K86N4ayt1CzrPlD8RgtvVeFPbqnpNtd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAyA4KHR4JzRvGJwV77sx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + }, + "id": "evt_1JTqAyA4KHR4JzRvWRV1KuaR", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0004", + "idempotency_key": "74d6cc75-58c6-418c-a8e0-e7eb6efd1d51" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAwA4KHR4JzRv9eQGrdUG_secret_K86NSzdwSqNYZ6eaeGgcBaZv9jhyRVL", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAwA4KHR4JzRv9eQGrdUG", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + }, + "id": "evt_1JTqAwA4KHR4JzRvQ5zLQSTN", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0005", + "idempotency_key": "84619585-8821-4c23-9678-22f776132fcb" + }, + "type": "setup_intent.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_AeSEGKvy4ijB7Tok7YgArl3LN", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "othello@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqAvA4KHR4JzRv1vQKGSWy", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0006", + "idempotency_key": "043cd7e1-a797-42d0-90d9-3d0a57ca01c0" + }, + "type": "payment_intent.created" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.3.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.3.json new file mode 100644 index 0000000000..be8450b0df --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.3.json @@ -0,0 +1,1261 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqB7A4KHR4JzRvYOZZQPGd", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "52d5fb64-6ed5-4d2e-b888-02e162e0258f" + }, + "type": "invoice.payment_succeeded" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqB6A4KHR4JzRvrrlImUF4", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "52d5fb64-6ed5-4d2e-b888-02e162e0258f" + }, + "type": "invoice.paid" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqB6A4KHR4JzRvEKEA8sNx", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "52d5fb64-6ed5-4d2e-b888-02e162e0258f" + }, + "type": "invoice.finalized" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0001", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + "previous_attributes": { + "attempted": false, + "auto_advance": true, + "ending_balance": null, + "hosted_invoice_url": null, + "invoice_pdf": null, + "next_payment_attempt": 1000000000, + "number": null, + "paid": false, + "status": "draft", + "status_transitions": { + "finalized_at": null, + "paid_at": null + } + } + }, + "id": "evt_1JTqB6A4KHR4JzRvo8tcYr8v", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0007", + "idempotency_key": "52d5fb64-6ed5-4d2e-b888-02e162e0258f" + }, + "type": "invoice.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + } + }, + "id": "evt_1JTqB5A4KHR4JzRvDpjnAcKF", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "d2e10fd6-f540-4eaa-8a9c-12b1c99e52fc" + }, + "type": "invoice.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": "in_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqB5A4KHR4JzRvrMxUADH8", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "d2e10fd6-f540-4eaa-8a9c-12b1c99e52fc" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": "in_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "previous_attributes": { + "invoice": null + } + }, + "id": "evt_1JTqB5A4KHR4JzRvU0cu2e0e", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0008", + "idempotency_key": "d2e10fd6-f540-4eaa-8a9c-12b1c99e52fc" + }, + "type": "invoiceitem.updated" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" + } + }, + "id": "evt_1JTqB4A4KHR4JzRvZv7nGsH7", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0009", + "idempotency_key": "356f4a3a-643d-4979-9a52-bcef000c7bf2" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + } + }, + "id": "evt_1JTqB4A4KHR4JzRvw7M5lda0", + "livemode": false, + "object": "event", + "pending_webhooks": 0, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "7ae296b3-2082-492b-b4eb-cfeb84e16740" + }, + "type": "invoiceitem.created" + }, + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "address": null, + "balance": 0, + "created": 1000000000, + "currency": "usd", + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "hamlet@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" + }, + "previous_attributes": { + "currency": null + } + }, + "id": "evt_1JTqB3A4KHR4JzRvPDxgFPiP", + "livemode": false, + "object": "event", + "pending_webhooks": 1, + "request": { + "id": "req_NORMALIZED0010", + "idempotency_key": "7ae296b3-2082-492b-b4eb-cfeb84e16740" + }, + "type": "customer.updated" + } + ], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.4.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.4.json new file mode 100644 index 0000000000..6d922067af --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.4.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.5.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.5.json new file mode 100644 index 0000000000..eed4c7b478 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Event.list.5.json @@ -0,0 +1,188 @@ +{ + "data": [ + { + "api_version": "2020-08-27", + "created": 1000000000, + "data": { + "object": { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000002", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000002", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_8oYf3bkYGiYpa3EtjUw0vZDSt", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + }, + "id": "evt_3JTqAsA4KHR4JzRv14ZKkCeA", + "livemode": false, + "object": "event", + "pending_webhooks": 2, + "request": { + "id": "req_NORMALIZED0011", + "idempotency_key": "6253822f-3b11-4493-a54f-6c9bc7cc8b32" + }, + "type": "payment_intent.succeeded" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/events" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.1.json new file mode 100644 index 0000000000..50e46ccd0d --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.1.json @@ -0,0 +1,174 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.2.json new file mode 100644 index 0000000000..8c5fef6daa --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.create.2.json @@ -0,0 +1,130 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": false, + "auto_advance": true, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": null, + "footer": null, + "hosted_invoice_url": null, + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": null, + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": 1000000000, + "number": null, + "object": "invoice", + "on_behalf_of": null, + "paid": false, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard Credit", + "status": "draft", + "status_transitions": { + "finalized_at": null, + "marked_uncollectible_at": null, + "paid_at": null, + "voided_at": null + }, + "subscription": null, + "subtotal": -48000, + "tax": null, + "total": -48000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.1.json new file mode 100644 index 0000000000..8139089194 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.1.json @@ -0,0 +1,174 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.2.json new file mode 100644 index 0000000000..2119e00995 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.finalize_invoice.2.json @@ -0,0 +1,130 @@ +{ + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": -48000, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002BjX1f", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002BjX1f/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard Credit", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": -48000, + "tax": null, + "total": -48000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.1.json new file mode 100644 index 0000000000..e39960ab72 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.1.json @@ -0,0 +1,6 @@ +{ + "data": [], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.2.json new file mode 100644 index 0000000000..53f69b4b65 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--Invoice.list.2.json @@ -0,0 +1,311 @@ +{ + "data": [ + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": -48000, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002BjX1f", + "id": "in_NORMALIZED00000000000002", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002BjX1f/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000003", + "invoice_item": "ii_NORMALIZED00000000000003", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/invoices/in_NORMALIZED00000000000002/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0003", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard Credit", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": -48000, + "tax": null, + "total": -48000, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": null + }, + { + "account_country": "US", + "account_name": "NORMALIZED-1", + "account_tax_ids": null, + "amount_due": 0, + "amount_paid": 0, + "amount_remaining": 0, + "application_fee_amount": null, + "attempt_count": 0, + "attempted": true, + "auto_advance": false, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_reason": "manual", + "charge": null, + "collection_method": "charge_automatically", + "created": 1000000000, + "currency": "usd", + "custom_fields": null, + "customer": "cus_NORMALIZED0001", + "customer_address": null, + "customer_email": "hamlet@zulip.com", + "customer_name": null, + "customer_phone": null, + "customer_shipping": null, + "customer_tax_exempt": "none", + "customer_tax_ids": [], + "default_payment_method": null, + "default_source": null, + "default_tax_rates": [], + "description": null, + "discount": null, + "discounts": [], + "due_date": null, + "ending_balance": 0, + "footer": null, + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK", + "id": "in_NORMALIZED00000000000001", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001ucfEK/pdf", + "last_finalization_error": null, + "lines": { + "data": [ + { + "amount": 48000, + "currency": "usd", + "description": "Zulip Standard", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000001", + "invoice_item": "ii_NORMALIZED00000000000001", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + }, + { + "amount": -48000, + "currency": "usd", + "description": "Payment (Card ending in 4242)", + "discount_amounts": [], + "discountable": false, + "discounts": [], + "id": "il_NORMALIZED00000000000002", + "invoice_item": "ii_NORMALIZED00000000000002", + "livemode": false, + "metadata": {}, + "object": "line_item", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_amounts": [], + "tax_rates": [], + "type": "invoiceitem" + } + ], + "has_more": false, + "object": "list", + "total_count": 2, + "url": "/v1/invoices/in_NORMALIZED00000000000001/lines" + }, + "livemode": false, + "metadata": {}, + "next_payment_attempt": null, + "number": "NORMALI-0002", + "object": "invoice", + "on_behalf_of": null, + "paid": true, + "payment_intent": null, + "payment_settings": { + "payment_method_options": null, + "payment_method_types": null + }, + "period_end": 1000000000, + "period_start": 1000000000, + "post_payment_credit_notes_amount": 0, + "pre_payment_credit_notes_amount": 0, + "quote": null, + "receipt_number": null, + "starting_balance": 0, + "statement_descriptor": "Zulip Standard", + "status": "paid", + "status_transitions": { + "finalized_at": 1000000000, + "marked_uncollectible_at": null, + "paid_at": 1000000000, + "voided_at": null + }, + "subscription": null, + "subtotal": 0, + "tax": null, + "total": 0, + "total_discount_amounts": [], + "total_tax_amounts": [], + "transfer_data": null, + "webhooks_delivered_at": 1000000000 + } + ], + "has_more": false, + "object": "list", + "url": "/v1/invoices" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.1.json new file mode 100644 index 0000000000..8c8ea5a378 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.1.json @@ -0,0 +1,45 @@ +{ + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000002", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0002", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.2.json new file mode 100644 index 0000000000..b1663ef422 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.2.json @@ -0,0 +1,45 @@ +{ + "amount": 48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Zulip Standard", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000001", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0001", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": 8000, + "unit_amount_decimal": "8000" + }, + "proration": false, + "quantity": 6, + "subscription": null, + "tax_rates": [], + "unit_amount": 8000, + "unit_amount_decimal": "8000" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.3.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.3.json new file mode 100644 index 0000000000..3aa8989852 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--InvoiceItem.create.3.json @@ -0,0 +1,45 @@ +{ + "amount": -48000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "date": 1000000000, + "description": "Payment (Card ending in 4242)", + "discountable": false, + "discounts": [], + "id": "ii_NORMALIZED00000000000003", + "invoice": null, + "livemode": false, + "metadata": {}, + "object": "invoiceitem", + "period": { + "end": 1000000000, + "start": 1000000000 + }, + "plan": null, + "price": { + "active": false, + "billing_scheme": "per_unit", + "created": 1000000000, + "currency": "usd", + "id": "price_NORMALIZED00000000000003", + "livemode": false, + "lookup_key": null, + "metadata": {}, + "nickname": null, + "object": "price", + "product": "prod_NORMALIZED0003", + "recurring": null, + "tax_behavior": "unspecified", + "tiers_mode": null, + "transform_quantity": null, + "type": "one_time", + "unit_amount": -48000, + "unit_amount_decimal": "-48000" + }, + "proration": false, + "quantity": 1, + "subscription": null, + "tax_rates": [], + "unit_amount": -48000, + "unit_amount_decimal": "-48000" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.1.json new file mode 100644 index 0000000000..5562844c0a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.1.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000001", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000001", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000001", + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "othello@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000001/rcpt_NORMALIZED000000000000000000001", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000001/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_AeSEGKvy4ijB7Tok7YgArl3LN", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "othello@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.2.json new file mode 100644 index 0000000000..a8e69943b2 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.confirm.2.json @@ -0,0 +1,166 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 48000, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [ + { + "amount": 48000, + "amount_captured": 48000, + "amount_refunded": 0, + "application": null, + "application_fee": null, + "application_fee_amount": null, + "balance_transaction": "txn_NORMALIZED00000000000002", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "calculated_statement_descriptor": "ZULIP STANDARD", + "captured": true, + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "destination": null, + "dispute": null, + "disputed": false, + "failure_code": null, + "failure_message": null, + "fraud_details": {}, + "id": "ch_NORMALIZED00000000000002", + "invoice": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "object": "charge", + "on_behalf_of": null, + "order": null, + "outcome": { + "network_status": "approved_by_network", + "reason": null, + "risk_level": "normal", + "risk_score": 0, + "seller_message": "Payment complete.", + "type": "authorized" + }, + "paid": true, + "payment_intent": "pi_NORMALIZED00000000000002", + "payment_method": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "payment_method_details": { + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "pass" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "installments": null, + "last4": "4242", + "network": "visa", + "three_d_secure": null, + "wallet": null + }, + "type": "card" + }, + "receipt_email": "hamlet@zulip.com", + "receipt_number": null, + "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000002", + "refunded": false, + "refunds": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" + }, + "review": null, + "shipping": null, + "source": null, + "source_transfer": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": false, + "object": "list", + "total_count": 1, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_8oYf3bkYGiYpa3EtjUw0vZDSt", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.1.json new file mode 100644 index 0000000000..cb8d5dafeb --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.1.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_8oYf3bkYGiYpa3EtjUw0vZDSt", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.2.json new file mode 100644 index 0000000000..f19cd881d6 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.create.2.json @@ -0,0 +1,62 @@ +{ + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000001" + }, + "client_secret": "pi_NORMALIZED00000000000001_secret_AeSEGKvy4ijB7Tok7YgArl3LN", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000001", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "othello@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.list.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.list.1.json new file mode 100644 index 0000000000..f2b44f23bd --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentIntent.list.1.json @@ -0,0 +1,69 @@ +{ + "data": [ + { + "amount": 48000, + "amount_capturable": 0, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "automatic", + "charges": { + "data": [], + "has_more": false, + "object": "list", + "total_count": 0, + "url": "/v1/charges?payment_intent=pi_NORMALIZED00000000000002" + }, + "client_secret": "pi_NORMALIZED00000000000002_secret_8oYf3bkYGiYpa3EtjUw0vZDSt", + "confirmation_method": "automatic", + "created": 1000000000, + "currency": "usd", + "customer": "cus_NORMALIZED0001", + "description": "Upgrade to Zulip Standard, $80.0 x 6", + "id": "pi_NORMALIZED00000000000002", + "invoice": null, + "last_payment_error": null, + "livemode": false, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "next_action": null, + "object": "payment_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "installments": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "receipt_email": "hamlet@zulip.com", + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": "Zulip Standard", + "statement_descriptor_suffix": null, + "status": "requires_payment_method", + "transfer_data": null, + "transfer_group": null + } + ], + "has_more": true, + "object": "list", + "url": "/v1/payment_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.1.json new file mode 100644 index 0000000000..bcde06d45d --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.1.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.2.json new file mode 100644 index 0000000000..f9c1ca53d9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--PaymentMethod.create.2.json @@ -0,0 +1,47 @@ +{ + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 3, + "exp_year": 2033, + "fingerprint": "NORMALIZED000001", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1000000000, + "customer": null, + "id": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "livemode": false, + "metadata": {}, + "object": "payment_method", + "type": "card" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.1.json new file mode 100644 index 0000000000..72ab719fe1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j_secret_K86N4ayt1CzrPlD8RgtvVeFPbqnpNtd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAyA4KHR4JzRvGJwV77sx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.2.json new file mode 100644 index 0000000000..02df65ea4a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.create.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqB9A4KHR4JzRv82aXMr0O_secret_K86NAw9lkvEUrQpMGTKwY26EwU3zDt8", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqB9A4KHR4JzRv82aXMr0O", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqB9A4KHR4JzRv8T9542zs", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.1.json new file mode 100644 index 0000000000..3087a006e1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.1.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAwA4KHR4JzRv9eQGrdUG_secret_K86NSzdwSqNYZ6eaeGgcBaZv9jhyRVL", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAwA4KHR4JzRv9eQGrdUG", + "last_setup_error": null, + "latest_attempt": null, + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": null, + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "requires_payment_method", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.2.json new file mode 100644 index 0000000000..ac10c03017 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.list.2.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j_secret_K86N4ayt1CzrPlD8RgtvVeFPbqnpNtd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAyA4KHR4JzRvGJwV77sx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/setup_intents" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.1.json new file mode 100644 index 0000000000..72ab719fe1 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.1.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j_secret_K86N4ayt1CzrPlD8RgtvVeFPbqnpNtd", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqAyA4KHR4JzRvqLH0Hs1j", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqAyA4KHR4JzRvGJwV77sx", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqAwA4KHR4JzRv62brIeAG", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.2.json new file mode 100644 index 0000000000..02df65ea4a --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--SetupIntent.retrieve.2.json @@ -0,0 +1,39 @@ +{ + "application": null, + "cancellation_reason": null, + "client_secret": "seti_1JTqB9A4KHR4JzRv82aXMr0O_secret_K86NAw9lkvEUrQpMGTKwY26EwU3zDt8", + "created": 1000000000, + "customer": "cus_NORMALIZED0001", + "description": null, + "id": "seti_1JTqB9A4KHR4JzRv82aXMr0O", + "last_setup_error": null, + "latest_attempt": "setatt_1JTqB9A4KHR4JzRv8T9542zs", + "livemode": false, + "mandate": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "next_action": null, + "object": "setup_intent", + "on_behalf_of": null, + "payment_method": "pm_1JTqB8A4KHR4JzRvvUaVtSb8", + "payment_method_options": { + "card": { + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "single_use_mandate": null, + "status": "succeeded", + "usage": "off_session" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.1.json new file mode 100644 index 0000000000..eda3529340 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.1.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01eXnyHfbDNgs5sFyjrqW1tMAJ7mdjy5PlFOZP5kA0tdrpRQ", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqAsA4KHR4JzRv5WaDLerO", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01eXnyHfbDNgs5sFyjrqW1tMAJ7mdjy5PlFOZP5kA0tdrpRQ#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.2.json new file mode 100644 index 0000000000..c2c1f009d9 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.create.2.json @@ -0,0 +1,46 @@ +{ + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02hUQdb2XihYa5LQtgQYMwWw9lVxBlPlAQ8orn7Tl3yAKYCy", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqAwA4KHR4JzRv9eQGrdUG", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02hUQdb2XihYa5LQtgQYMwWw9lVxBlPlAQ8orn7Tl3yAKYCy#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.1.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.1.json new file mode 100644 index 0000000000..91b4bf9209 --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.1.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED01eXnyHfbDNgs5sFyjrqW1tMAJ7mdjy5PlFOZP5kA0tdrpRQ", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "hamlet@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqAsA4KHR4JzRv5WaDLerO", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED01eXnyHfbDNgs5sFyjrqW1tMAJ7mdjy5PlFOZP5kA0tdrpRQ#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.2.json b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.2.json new file mode 100644 index 0000000000..27226d5dfd --- /dev/null +++ b/corporate/tests/stripe_fixtures/upgrade_race_condition_during_card_upgrade--checkout.Session.list.2.json @@ -0,0 +1,53 @@ +{ + "data": [ + { + "allow_promotion_codes": null, + "amount_subtotal": null, + "amount_total": null, + "automatic_tax": { + "enabled": false, + "status": null + }, + "billing_address_collection": null, + "cancel_url": "http://zulip.testserver/upgrade/", + "client_reference_id": null, + "currency": null, + "customer": "cus_NORMALIZED0001", + "customer_details": null, + "customer_email": null, + "id": "cs_test_NORMALIZED02hUQdb2XihYa5LQtgQYMwWw9lVxBlPlAQ8orn7Tl3yAKYCy", + "livemode": false, + "locale": null, + "metadata": { + "billing_modality": "charge_automatically", + "billing_schedule": "1", + "license_management": "automatic", + "licenses": "6", + "price_per_license": "8000", + "realm_str": "zulip", + "seat_count": "6", + "type": "upgrade", + "user_email": "othello@zulip.com" + }, + "mode": "setup", + "object": "checkout.session", + "payment_intent": null, + "payment_method_options": {}, + "payment_method_types": [ + "card" + ], + "payment_status": "no_payment_required", + "setup_intent": "seti_1JTqAwA4KHR4JzRv9eQGrdUG", + "shipping": null, + "shipping_address_collection": null, + "submit_type": null, + "subscription": null, + "success_url": "http://zulip.testserver/billing/event_status?stripe_session_id={CHECKOUT_SESSION_ID}", + "total_details": null, + "url": "https://checkout.stripe.com/pay/cs_test_NORMALIZED02hUQdb2XihYa5LQtgQYMwWw9lVxBlPlAQ8orn7Tl3yAKYCy#fidkdWxOYHwnPyd1blpxYHZxWjA0T0NCb2ZEMU5NVzFPf1dzRlZLQXBfNm9%2FUm9kXGcydWZXamJSYV9MMjdWPUBwdTdQXzVQbWFfdGl8dUB8YWRRSFFrRnI8VlFVTVF9UTNXUVJoVzNAf2hKNTVmdnxiaDZ3QicpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBaZmppcGhrJyknYGtkZ2lgVWlkZmBtamlhYHd2Jz9xd3BgeCUl" + } + ], + "has_more": true, + "object": "list", + "url": "/v1/checkout/sessions" +} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.1.json b/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.1.json deleted file mode 100644 index 650347743e..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "_message": "Your card was declined.", - "code": "card_declined", - "error": { - "charge": "ch_NORMALIZED00000000000001", - "code": "card_declined", - "decline_code": "generic_decline", - "doc_url": "https://stripe.com/docs/error-codes/card-declined", - "message": "Your card was declined.", - "param": null, - "payment_intent": null, - "payment_method": null, - "setup_intent": null, - "source": null, - "type": "card_error" - }, - "headers": { - "Connection": "keep-alive", - "Content-Length": "269", - "Content-Type": "application/json", - "Date": "NORMALIZED DATETIME", - "Server": "nginx", - "Strict-Transport-Security": "max-age=31556926; includeSubDomains; preload", - "access-control-allow-credentials": "true", - "access-control-allow-methods": "GET, POST, HEAD, OPTIONS, DELETE", - "access-control-allow-origin": "*", - "access-control-expose-headers": "Request-Id, Stripe-Manage-Version, X-Stripe-External-Auth-Required, X-Stripe-Privileged-Session-Required", - "access-control-max-age": "300", - "cache-control": "no-cache, no-store", - "idempotency-key": "00000000-0000-0000-0000-000000000000", - "original-request": "req_NORMALIZED0001", - "request-id": "req_NORMALIZED0001", - "stripe-should-retry": "false", - "stripe-version": "2020-08-27", - "x-stripe-c-cost": "6" - }, - "http_body": "{\n \"error\": {\n \"charge\": \"ch_NORMALIZED00000000000001\",\n \"code\": \"card_declined\",\n \"decline_code\": \"generic_decline\",\n \"doc_url\": \"https://stripe.com/docs/error-codes/card-declined\",\n \"message\": \"Your card was declined.\",\n \"type\": \"card_error\"\n }\n}\n", - "http_status": 402, - "json_body": { - "error": { - "charge": "ch_NORMALIZED00000000000001", - "code": "card_declined", - "decline_code": "generic_decline", - "doc_url": "https://stripe.com/docs/error-codes/card-declined", - "message": "Your card was declined.", - "type": "card_error" - } - }, - "param": null, - "request_id": "req_NORMALIZED0001" -} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.2.json b/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.2.json deleted file mode 100644 index e804e1f8fd..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Charge.create.2.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "amount": 184000, - "amount_captured": 184000, - "amount_refunded": 0, - "application": null, - "application_fee": null, - "application_fee_amount": null, - "balance_transaction": "txn_NORMALIZED00000000000001", - "billing_details": { - "address": { - "city": "Pacific", - "country": "United States", - "line1": "Under the sea,", - "line2": null, - "postal_code": "33333", - "state": null - }, - "email": null, - "name": "Ada Starr", - "phone": null - }, - "calculated_statement_descriptor": "STRIPE* ZULIP STANDARD", - "captured": true, - "created": 1000000000, - "currency": "usd", - "customer": "cus_NORMALIZED0001", - "description": "Upgrade to Zulip Standard, $80.0 x 23", - "destination": null, - "dispute": null, - "disputed": false, - "failure_code": null, - "failure_message": null, - "fraud_details": {}, - "id": "ch_NORMALIZED00000000000002", - "invoice": null, - "livemode": false, - "metadata": {}, - "object": "charge", - "on_behalf_of": null, - "order": null, - "outcome": { - "network_status": "approved_by_network", - "reason": null, - "risk_level": "normal", - "risk_score": 0, - "seller_message": "Payment complete.", - "type": "authorized" - }, - "paid": true, - "payment_intent": null, - "payment_method": "card_NORMALIZED00000000000001", - "payment_method_details": { - "card": { - "brand": "visa", - "checks": { - "address_line1_check": "pass", - "address_postal_code_check": "pass", - "cvc_check": "pass" - }, - "country": "US", - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "installments": null, - "last4": "4242", - "network": "visa", - "three_d_secure": null, - "wallet": null - }, - "type": "card" - }, - "receipt_email": "hamlet@zulip.com", - "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/acct_NORMALIZED000001/ch_NORMALIZED00000000000002/rcpt_NORMALIZED000000000000000000001", - "refunded": false, - "refunds": { - "data": [], - "has_more": false, - "object": "list", - "total_count": 0, - "url": "/v1/charges/ch_NORMALIZED00000000000002/refunds" - }, - "review": null, - "shipping": null, - "source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "source_transfer": null, - "statement_descriptor": "Zulip Standard", - "statement_descriptor_suffix": "Zulip Standard", - "status": "succeeded", - "transfer_data": null, - "transfer_group": null -} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.1.json b/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.1.json deleted file mode 100644 index ea9d4a470e..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.1.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": null, - "balance": 0, - "created": 1000000000, - "currency": null, - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "delinquent": false, - "description": "zulip (Zulip Dev)", - "discount": null, - "email": "hamlet@zulip.com", - "id": "cus_NORMALIZED0001", - "invoice_prefix": "NORMA01", - "invoice_settings": { - "custom_fields": null, - "default_payment_method": null, - "footer": null - }, - "livemode": false, - "metadata": { - "realm_id": "1", - "realm_str": "zulip" - }, - "name": null, - "next_invoice_sequence": 1, - "object": "customer", - "phone": null, - "preferred_locales": [], - "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, - "tax_exempt": "none" -} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.2.json b/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.2.json deleted file mode 100644 index ea9d4a470e..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Customer.retrieve.2.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "address": null, - "balance": 0, - "created": 1000000000, - "currency": null, - "default_source": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "delinquent": false, - "description": "zulip (Zulip Dev)", - "discount": null, - "email": "hamlet@zulip.com", - "id": "cus_NORMALIZED0001", - "invoice_prefix": "NORMA01", - "invoice_settings": { - "custom_fields": null, - "default_payment_method": null, - "footer": null - }, - "livemode": false, - "metadata": { - "realm_id": "1", - "realm_str": "zulip" - }, - "name": null, - "next_invoice_sequence": 1, - "object": "customer", - "phone": null, - "preferred_locales": [], - "shipping": null, - "sources": { - "data": [ - { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "pass", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "pass", - "brand": "Visa", - "country": "US", - "customer": "cus_NORMALIZED0001", - "cvc_check": "pass", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - } - ], - "has_more": false, - "object": "list", - "total_count": 1, - "url": "/v1/customers/cus_NORMALIZED0001/sources" - }, - "tax_exempt": "none" -} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.1.json b/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.1.json deleted file mode 100644 index 31a829cefe..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000002", - "funding": "credit", - "id": "card_NORMALIZED00000000000002", - "last4": "0341", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000001", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.2.json b/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.2.json deleted file mode 100644 index 762a023c64..0000000000 --- a/corporate/tests/stripe_fixtures/upgrade_where_first_card_fails--Token.create.2.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "card": { - "address_city": "Pacific", - "address_country": "United States", - "address_line1": "Under the sea,", - "address_line1_check": "unchecked", - "address_line2": null, - "address_state": null, - "address_zip": "33333", - "address_zip_check": "unchecked", - "brand": "Visa", - "country": "US", - "cvc_check": "unchecked", - "dynamic_last4": null, - "exp_month": 3, - "exp_year": 2033, - "fingerprint": "NORMALIZED000001", - "funding": "credit", - "id": "card_NORMALIZED00000000000001", - "last4": "4242", - "metadata": {}, - "name": "Ada Starr", - "object": "card", - "tokenization_method": null - }, - "client_ip": "0.0.0.0", - "created": 1000000000, - "id": "tok_NORMALIZED00000000000002", - "livemode": false, - "object": "token", - "type": "card", - "used": false -} diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.1.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.1.json new file mode 100644 index 0000000000..276fd1f723 --- /dev/null +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.1.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "zulip (Zulip Dev)", + "discount": null, + "email": "iago@zulip.com", + "id": "cus_NORMALIZED0001", + "invoice_prefix": "NORMA01", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "1", + "realm_str": "zulip" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.2.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.2.json new file mode 100644 index 0000000000..c3568a69d3 --- /dev/null +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Customer.modify.2.json @@ -0,0 +1,30 @@ +{ + "address": null, + "balance": 0, + "created": 1000000000, + "currency": null, + "default_source": null, + "delinquent": false, + "description": "lear (Lear & Co.)", + "discount": null, + "email": "king@lear.org", + "id": "cus_NORMALIZED0002", + "invoice_prefix": "NORMA02", + "invoice_settings": { + "custom_fields": null, + "default_payment_method": null, + "footer": null + }, + "livemode": false, + "metadata": { + "realm_id": "2", + "realm_str": "lear" + }, + "name": null, + "next_invoice_sequence": 1, + "object": "customer", + "phone": null, + "preferred_locales": [], + "shipping": null, + "tax_exempt": "none" +} diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.1.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.1.json index 50fa54e261..ec12d7bd23 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.1.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.2.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.2.json index cc6fed629a..f36e15d7c6 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.2.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.create.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.1.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.1.json index 031ec95514..aa4b9d6d3f 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.1.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.2.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.2.json index aee3bfc5c3..1e8577387d 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.2.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.finalize_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", @@ -125,5 +126,5 @@ "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, - "webhooks_delivered_at": 1000000000 + "webhooks_delivered_at": null } diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.1.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.1.json index 8e3e6a039e..3082a5de39 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.1.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.1.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.3.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.3.json index 3df5bb58ec..bf73341974 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.3.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.3.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.4.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.4.json index f184b521ca..0b79c11913 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.4.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.4.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.6.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.6.json index e68d8846c6..6cff5c4876 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.6.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.list.6.json @@ -2,7 +2,7 @@ "data": [ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -38,9 +38,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -74,6 +74,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.1.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.1.json index 4055609998..4b03f5ceab 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.1.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.1.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi", "id": "in_NORMALIZED00000000000001", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001pYxjh/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000001OUZwi/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.2.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.2.json index d08bc172ac..32c4eb6438 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.2.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--Invoice.void_invoice.2.json @@ -1,6 +1,6 @@ { "account_country": "US", - "account_name": null, + "account_name": "NORMALIZED-1", "account_tax_ids": null, "amount_due": 6400, "amount_paid": 0, @@ -36,9 +36,9 @@ "due_date": 1000000000, "ending_balance": 0, "footer": null, - "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm", + "hosted_invoice_url": "https://invoice.stripe.com/i/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C", "id": "in_NORMALIZED00000000000002", - "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002HMmgm/pdf", + "invoice_pdf": "https://pay.stripe.com/invoice/acct_NORMALIZED000001/invst_NORMALIZED0000000000000002dM54C/pdf", "last_finalization_error": null, "lines": { "data": [ @@ -72,6 +72,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.1.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.1.json index 2c843d7a5b..2e643034b5 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.1.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.1.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0001", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.2.json b/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.2.json index 983ea58d3c..fd9989403b 100644 --- a/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.2.json +++ b/corporate/tests/stripe_fixtures/void_all_open_invoices--InvoiceItem.create.2.json @@ -29,6 +29,7 @@ "object": "price", "product": "prod_NORMALIZED0002", "recurring": null, + "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "one_time", diff --git a/corporate/tests/test_stripe.py b/corporate/tests/test_stripe.py index 4163a9d284..a55bfa86e3 100644 --- a/corporate/tests/test_stripe.py +++ b/corporate/tests/test_stripe.py @@ -8,19 +8,7 @@ from dataclasses import dataclass from datetime import datetime, timedelta, timezone from decimal import Decimal from functools import wraps -from typing import ( - Any, - Callable, - Dict, - List, - Mapping, - Optional, - Sequence, - Tuple, - TypeVar, - Union, - cast, -) +from typing import Any, Callable, Dict, List, Mapping, Optional, Sequence, Tuple, TypeVar, cast from unittest.mock import Mock, patch import orjson @@ -30,6 +18,7 @@ from django.conf import settings from django.core import signing from django.http import HttpResponse from django.urls.resolvers import get_resolver +from django.utils.crypto import get_random_string from django.utils.timezone import now as timezone_now from corporate.lib.stripe import ( @@ -45,7 +34,7 @@ from corporate.lib.stripe import ( attach_discount_to_realm, catch_stripe_errors, compute_plan_parameters, - customer_has_credit_card_as_default_source, + customer_has_credit_card_as_default_payment_method, do_create_stripe_customer, downgrade_small_realms_behind_on_payments_as_needed, get_discount_for_realm, @@ -55,13 +44,14 @@ from corporate.lib.stripe import ( get_realms_to_default_discount_dict, invoice_plan, invoice_plans_as_needed, + is_free_trial_offer_enabled, is_realm_on_free_trial, is_sponsored_realm, make_end_of_cycle_updates_if_needed, next_month, process_initial_upgrade, sign_string, - stripe_customer_has_credit_card_as_default_source, + stripe_customer_has_credit_card_as_default_payment_method, stripe_get_customer, switch_realm_from_standard_to_plus_plan, unsign_string, @@ -76,7 +66,10 @@ from corporate.lib.stripe import ( from corporate.models import ( Customer, CustomerPlan, + Event, LicenseLedger, + PaymentIntent, + Session, ZulipSponsorshipRequest, get_current_plan_by_customer, get_current_plan_by_realm, @@ -108,21 +101,16 @@ CallableT = TypeVar("CallableT", bound=Callable[..., Any]) STRIPE_FIXTURES_DIR = "corporate/tests/stripe_fixtures" -# TODO: check that this creates a token similar to what is created by our -# actual Stripe Checkout flows -def stripe_create_token(card_number: str = "4242424242424242") -> stripe.Token: - return stripe.Token.create( + +def create_payment_method(card_number: str) -> stripe.PaymentMethod: + return stripe.PaymentMethod.create( + type="card", card={ "number": card_number, "exp_month": 3, "exp_year": 2033, "cvc": "333", - "name": "Ada Starr", - "address_line1": "Under the sea,", - "address_city": "Pacific", - "address_zip": "33333", - "address_country": "United States", - } + }, ) @@ -295,6 +283,8 @@ def normalize_fixture_data( MOCKED_STRIPE_FUNCTION_NAMES = [ f"stripe.{name}" for name in [ + "checkout.Session.create", + "checkout.Session.list", "Charge.create", "Charge.list", "Coupon.create", @@ -303,6 +293,9 @@ MOCKED_STRIPE_FUNCTION_NAMES = [ "Customer.list_balance_transactions", "Customer.retrieve", "Customer.save", + "Customer.list", + "Customer.modify", + "Event.list", "Invoice.create", "Invoice.finalize_invoice", "Invoice.list", @@ -312,8 +305,19 @@ MOCKED_STRIPE_FUNCTION_NAMES = [ "Invoice.void_invoice", "InvoiceItem.create", "InvoiceItem.list", + "PaymentIntent.confirm", + "PaymentIntent.create", + "PaymentIntent.list", + "PaymentIntent.retrieve", + "PaymentMethod.attach", + "PaymentMethod.create", + "PaymentMethod.detach", + "PaymentMethod.list", "Plan.create", "Product.create", + "SetupIntent.create", + "SetupIntent.list", + "SetupIntent.retrieve", "Subscription.create", "Subscription.delete", "Subscription.retrieve", @@ -330,6 +334,8 @@ def mock_stripe( generate_fixture = generate if generate_fixture is None: generate_fixture = settings.GENERATE_STRIPE_FIXTURES + if generate_fixture: # nocoverage + assert stripe.api_key for mocked_function_name in MOCKED_STRIPE_FUNCTION_NAMES: mocked_function = operator.attrgetter(mocked_function_name)(sys.modules[__name__]) if generate_fixture: @@ -339,7 +345,12 @@ def mock_stripe( else: side_effect = read_stripe_fixture(decorated_function.__name__, mocked_function_name) decorated_function = cast( - CallableT, patch(mocked_function_name, side_effect=side_effect)(decorated_function) + CallableT, + patch( + mocked_function_name, + side_effect=side_effect, + autospec=mocked_function_name.endswith(".refresh"), + )(decorated_function), ) @wraps(decorated_function) @@ -416,22 +427,121 @@ class StripeTestCase(ZulipTestCase): match = re.search(r"name=\"salt\" value=\"(\w+)\"", response.content.decode()) return match.group(1) if match else None + def get_test_card_number( + self, + attaches_to_customer: bool, + charge_succeeds: Optional[bool] = None, + card_provider: Optional[str] = None, + ) -> str: + if attaches_to_customer: + assert charge_succeeds is not None + if charge_succeeds: + if card_provider == "visa": + return "4242424242424242" + if card_provider == "mastercard": + return "5555555555554444" + raise AssertionError("Unreachable code path") + else: + return "4000000000000341" + else: + return "4000000000000002" + + def assert_details_of_valid_session_from_event_status_endpoint( + self, stripe_session_id: str, expected_details: Dict[str, Any] + ) -> None: + json_response = self.client_get( + "/json/billing/event/status", + { + "stripe_session_id": stripe_session_id, + }, + ) + self.assert_json_success(json_response) + self.assertEqual(json_response.json()["session"], expected_details) + + def assert_details_of_valid_payment_intent_from_event_status_endpoint( + self, + stripe_payment_intent_id: str, + expected_details: Dict[str, Any], + ) -> None: + json_response = self.client_get( + "/json/billing/event/status", + { + "stripe_payment_intent_id": stripe_payment_intent_id, + }, + ) + self.assert_json_success(json_response) + self.assertEqual(json_response.json()["payment_intent"], expected_details) + + def trigger_stripe_checkout_session_completed_webhook( + self, + payment_method: stripe.PaymentMethod, + stripe_session: Optional[stripe.checkout.Session] = None, + ) -> None: + [checkout_setup_intent] = stripe.SetupIntent.list(limit=1) + stripe_setup_intent = stripe.SetupIntent.create( + payment_method=payment_method.id, + confirm=True, + payment_method_types=checkout_setup_intent.payment_method_types, + customer=checkout_setup_intent.customer, + metadata=checkout_setup_intent.metadata, + usage=checkout_setup_intent.usage, + ) + if stripe_session is None: + [stripe_session] = stripe.checkout.Session.list(limit=1) + stripe_session_dict = stripe_session.to_dict_recursive() + stripe_session_dict["setup_intent"] = stripe_setup_intent.id + + event_payload = { + "id": "evt_{}".format(get_random_string(24)), + "object": "event", + "data": {"object": stripe_session_dict}, + "type": "checkout.session.completed", + } + + response = self.client_post( + "/stripe/webhook/", event_payload, content_type="application/json" + ) + assert response.status_code == 200 + + def send_stripe_webhook_event(self, event: stripe.Event) -> None: + response = self.client_post( + "/stripe/webhook/", event.to_dict_recursive(), content_type="application/json" + ) + assert response.status_code == 200 + + def send_stripe_webhook_events(self, most_recent_event: stripe.Event) -> None: + while True: + events_old_to_new = list(reversed(stripe.Event.list(ending_before=most_recent_event))) + if len(events_old_to_new) == 0: + break + for event in events_old_to_new: + self.send_stripe_webhook_event(event) + most_recent_event = events_old_to_new[-1] + + def send_last_stripe_webhook_event(self) -> None: + [last_event] = stripe.Event.list(limit=1) + self.send_stripe_webhook_event(last_event) + def upgrade( self, invoice: bool = False, talk_to_stripe: bool = True, + onboarding: bool = False, realm: Optional[Realm] = None, + payment_method: Optional[stripe.PaymentMethod] = None, + upgrade_page_response: HttpResponse = None, del_args: Sequence[str] = [], **kwargs: Any, ) -> HttpResponse: host_args = {} if realm is not None: # nocoverage: TODO host_args["HTTP_HOST"] = realm.host - response = self.client_get("/upgrade/", {}, **host_args) + if upgrade_page_response is None: + upgrade_page_response = self.client_get("/upgrade/", {}, **host_args) params: Dict[str, Any] = { "schedule": "annual", - "signed_seat_count": self.get_signed_seat_count_from_response(response), - "salt": self.get_salt_from_response(response), + "signed_seat_count": self.get_signed_seat_count_from_response(upgrade_page_response), + "salt": self.get_salt_from_response(upgrade_page_response), } if invoice: # send_invoice params.update( @@ -439,41 +549,92 @@ class StripeTestCase(ZulipTestCase): licenses=kwargs.get("licenses", 123), ) else: # charge_automatically - stripe_token = None - if not talk_to_stripe: - stripe_token = "token" - stripe_token = kwargs.get("stripe_token", stripe_token) - if stripe_token is None: - stripe_token = stripe_create_token().id params.update( billing_modality="charge_automatically", license_management="automatic", - stripe_token=stripe_token, + ) + + if onboarding: + params.update( + onboarding="true", ) params.update(kwargs) for key in del_args: if key in params: del params[key] - return self.client_post("/json/billing/upgrade", params, **host_args) + + if talk_to_stripe: + [last_event] = stripe.Event.list(limit=1) + + upgrade_json_response = self.client_post("/json/billing/upgrade", params, **host_args) + + if invoice or not talk_to_stripe: + return upgrade_json_response + + expected_session_details = {"status": "created"} + if is_free_trial_offer_enabled(): + if onboarding: + expected_session_details["type"] = "free_trial_upgrade_from_onboarding_page" + else: + expected_session_details["type"] = "free_trial_upgrade_from_billing_page" + else: + expected_session_details["type"] = "upgrade_from_billing_page" + expected_session_details[ + "stripe_payment_intent_id" + ] = PaymentIntent.objects.last().stripe_payment_intent_id + + self.assert_details_of_valid_session_from_event_status_endpoint( + upgrade_json_response.json()["stripe_session_id"], expected_session_details + ) + if payment_method is None: + payment_method = create_payment_method( + self.get_test_card_number( + attaches_to_customer=True, charge_succeeds=True, card_provider="visa" + ) + ) + self.trigger_stripe_checkout_session_completed_webhook(payment_method) + self.send_stripe_webhook_events(last_event) + return upgrade_json_response # Upgrade without talking to Stripe - def local_upgrade(self, *args: Any) -> None: + def local_upgrade( + self, + licenses: int, + automanage_licenses: bool, + billing_schedule: int, + charge_automatically: bool, + free_trial: bool, + ) -> None: class StripeMock(Mock): def __init__(self, depth: int = 1): super().__init__(spec=stripe.Card) self.id = "id" self.created = "1000" self.last4 = "4242" - if depth == 1: - self.source = StripeMock(depth=2) - def upgrade_func(*args: Any) -> Any: - return process_initial_upgrade(self.example_user("hamlet"), *args[:4]) + def upgrade_func( + licenses: int, + automanage_licenses: bool, + billing_schedule: int, + charge_automatically: bool, + free_trial: bool, + *mock_args: Any, + ) -> Any: + return process_initial_upgrade( + self.example_user("hamlet"), + licenses, + automanage_licenses, + billing_schedule, + charge_automatically, + free_trial, + ) for mocked_function_name in MOCKED_STRIPE_FUNCTION_NAMES: upgrade_func = patch(mocked_function_name, return_value=StripeMock())(upgrade_func) - upgrade_func(*args) + upgrade_func( + licenses, automanage_licenses, billing_schedule, charge_automatically, free_trial + ) class StripeTest(StripeTestCase): @@ -525,14 +686,30 @@ class StripeTest(StripeTestCase): # Click "Make payment" in Stripe Checkout with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.upgrade() + response = self.upgrade() + [payment_intent] = PaymentIntent.objects.all() + assert payment_intent.stripe_payment_intent_id is not None + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + "event_handler": { + "status": "succeeded", + }, + }, + ) + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + payment_intent.stripe_payment_intent_id, + {"status": "succeeded", "event_handler": {"status": "succeeded"}}, + ) # Check that we correctly created a Customer object in Stripe stripe_customer = stripe_get_customer( assert_is_not_none(Customer.objects.get(realm=user.realm).stripe_customer_id) ) - self.assertEqual(stripe_customer.default_source.id[:5], "card_") - self.assertTrue(stripe_customer_has_credit_card_as_default_source(stripe_customer)) + self.assertTrue(stripe_customer_has_credit_card_as_default_payment_method(stripe_customer)) self.assertEqual(stripe_customer.description, "zulip (Zulip Dev)") self.assertEqual(stripe_customer.discount, None) self.assertEqual(stripe_customer.email, user.delivery_email) @@ -632,7 +809,7 @@ class StripeTest(StripeTestCase): RealmAuditLog.STRIPE_CUSTOMER_CREATED, timestamp_to_datetime(stripe_customer.created), ), - (RealmAuditLog.STRIPE_CARD_CHANGED, timestamp_to_datetime(stripe_customer.created)), + (RealmAuditLog.STRIPE_CARD_CHANGED, self.now), (RealmAuditLog.CUSTOMER_PLAN_CREATED, self.now), ], ) @@ -670,7 +847,7 @@ class StripeTest(StripeTestCase): "January 2, 2013", f"${80 * self.seat_count}.00", f"Billing email: {user.delivery_email}", - "Visa ending in 4242", + "visa ending in 4242", "Update card", ]: self.assert_in_response(substring, response) @@ -695,7 +872,7 @@ class StripeTest(StripeTestCase): stripe_customer = stripe_get_customer( assert_is_not_none(Customer.objects.get(realm=user.realm).stripe_customer_id) ) - self.assertFalse(stripe_customer_has_credit_card_as_default_source(stripe_customer)) + self.assertFalse(stripe_customer_has_credit_card_as_default_payment_method(stripe_customer)) # It can take a second for Stripe to attach the source to the customer, and in # particular it may not be attached at the time stripe_get_customer is called above, # causing test flakes. @@ -832,12 +1009,23 @@ class StripeTest(StripeTestCase): self.assertFalse(Customer.objects.filter(realm=user.realm).exists()) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.upgrade() + response = self.upgrade() + self.assertEqual(PaymentIntent.objects.count(), 0) + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "free_trial_upgrade_from_billing_page", + "status": "completed", + "event_handler": {"status": "succeeded"}, + }, + ) stripe_customer = stripe_get_customer( assert_is_not_none(Customer.objects.get(realm=user.realm).stripe_customer_id) ) - self.assertEqual(stripe_customer.default_source.id[:5], "card_") + self.assertTrue( + stripe_customer_has_credit_card_as_default_payment_method(stripe_customer) + ) self.assertEqual(stripe_customer.description, "zulip (Zulip Dev)") self.assertEqual(stripe_customer.discount, None) self.assertEqual(stripe_customer.email, user.delivery_email) @@ -887,7 +1075,7 @@ class StripeTest(StripeTestCase): ), ( RealmAuditLog.STRIPE_CARD_CHANGED, - timestamp_to_datetime(stripe_customer.created), + self.now, ), (RealmAuditLog.CUSTOMER_PLAN_CREATED, self.now), ], @@ -921,7 +1109,7 @@ class StripeTest(StripeTestCase): "March 2, 2012", f"${80 * self.seat_count}.00", f"Billing email: {user.delivery_email}", - "Visa ending in 4242", + "visa ending in 4242", "Update card", ]: self.assert_in_response(substring, response) @@ -1026,6 +1214,69 @@ class StripeTest(StripeTestCase): invoice_plans_as_needed(add_months(free_trial_end_date, 12)) [invoice0, invoice1, invoice2] = stripe.Invoice.list(customer=stripe_customer.id) + @mock_stripe(tested_timestamp_fields=["created"]) + def test_free_trial_upgrade_by_card_from_onboarding_page(self, *mocks: Mock) -> None: + user = self.example_user("hamlet") + self.login_user(user) + + with self.settings(FREE_TRIAL_DAYS=60): + free_trial_end_date = self.now + timedelta(days=60) + self.assertNotEqual(user.realm.plan_type, Realm.PLAN_TYPE_STANDARD) + self.assertFalse(Customer.objects.filter(realm=user.realm).exists()) + + with patch("corporate.lib.stripe.timezone_now", return_value=self.now): + response = self.upgrade(onboarding=True) + self.assertEqual(PaymentIntent.objects.all().count(), 0) + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "free_trial_upgrade_from_onboarding_page", + "status": "completed", + "event_handler": {"status": "succeeded"}, + }, + ) + + stripe_customer = stripe_get_customer( + assert_is_not_none(Customer.objects.get(realm=user.realm).stripe_customer_id) + ) + self.assertTrue( + stripe_customer_has_credit_card_as_default_payment_method(stripe_customer) + ) + self.assertEqual(stripe_customer.description, "zulip (Zulip Dev)") + self.assertEqual(stripe_customer.discount, None) + self.assertEqual(stripe_customer.email, user.delivery_email) + metadata_dict = dict(stripe_customer.metadata) + self.assertEqual(metadata_dict["realm_str"], "zulip") + try: + int(metadata_dict["realm_id"]) + except ValueError: # nocoverage + raise AssertionError("realm_id is not a number") + self.assertFalse(stripe.Charge.list(customer=stripe_customer.id)) + self.assertFalse(stripe.Invoice.list(customer=stripe_customer.id)) + customer = Customer.objects.get(stripe_customer_id=stripe_customer.id, realm=user.realm) + customer = Customer.objects.get(stripe_customer_id=stripe_customer.id, realm=user.realm) + plan = CustomerPlan.objects.get( + customer=customer, + automanage_licenses=True, + price_per_license=8000, + fixed_price=None, + discount=None, + billing_cycle_anchor=self.now, + billing_schedule=CustomerPlan.ANNUAL, + invoiced_through=LicenseLedger.objects.first(), + next_invoice_date=free_trial_end_date, + tier=CustomerPlan.STANDARD, + status=CustomerPlan.FREE_TRIAL, + ) + LicenseLedger.objects.get( + plan=plan, + is_renewal=True, + event_time=self.now, + licenses=self.seat_count, + licenses_at_next_renewal=self.seat_count, + ) + # We don't test anything else since test_free_trial_upgrade_by_card does this already. + @mock_stripe(tested_timestamp_fields=["created"]) def test_free_trial_upgrade_by_invoice(self, *mocks: Mock) -> None: user = self.example_user("hamlet") @@ -1180,39 +1431,6 @@ class StripeTest(StripeTestCase): invoice_plans_as_needed(add_months(free_trial_end_date, 12)) [invoice0, invoice1] = stripe.Invoice.list(customer=stripe_customer.id) - @mock_stripe() - def test_billing_page_permissions(self, *mocks: Mock) -> None: - # Guest users can't access /upgrade page - self.login_user(self.example_user("polonius")) - response = self.client_get("/upgrade/", follow=True) - self.assertEqual(response.status_code, 404) - - # Check that non-admins can access /upgrade via /billing, when there is no Customer object - self.login_user(self.example_user("hamlet")) - response = self.client_get("/billing/") - self.assertEqual(response.status_code, 302) - self.assertEqual("/upgrade/", response.url) - # Check that non-admins can sign up and pay - self.upgrade() - # Check that the non-admin hamlet can still access /billing - response = self.client_get("/billing/") - self.assert_in_success_response(["Your current plan is"], response) - - # Check realm owners can access billing, even though they are not a billing admin - desdemona = self.example_user("desdemona") - desdemona.role = UserProfile.ROLE_REALM_OWNER - desdemona.save(update_fields=["role"]) - self.login_user(self.example_user("desdemona")) - response = self.client_get("/billing/") - self.assert_in_success_response(["Your current plan is"], response) - - # Check that member who is not a billing admin does not have access - self.login_user(self.example_user("cordelia")) - response = self.client_get("/billing/") - self.assert_in_success_response( - ["You must be an organization owner or a billing administrator"], response - ) - @mock_stripe(tested_timestamp_fields=["created"]) def test_upgrade_by_card_with_outdated_seat_count(self, *mocks: Mock) -> None: hamlet = self.example_user("hamlet") @@ -1220,7 +1438,10 @@ class StripeTest(StripeTestCase): new_seat_count = 23 # Change the seat count while the user is going through the upgrade flow with patch("corporate.lib.stripe.get_latest_seat_count", return_value=new_seat_count): - self.upgrade() + with patch( + "corporate.views.upgrade.get_latest_seat_count", return_value=self.seat_count + ): + self.upgrade() customer = Customer.objects.first() assert customer is not None stripe_customer_id: str = assert_is_not_none(customer.stripe_customer_id) @@ -1240,17 +1461,216 @@ class StripeTest(StripeTestCase): self.assertEqual(ledger_entry.licenses_at_next_renewal, new_seat_count) @mock_stripe() - def test_upgrade_where_first_card_fails(self, *mocks: Mock) -> None: + def test_upgrade_first_card_fails_and_retry_with_another_card_without_starting_from_begining( + self, *mocks: Mock + ) -> None: user = self.example_user("hamlet") self.login_user(user) # From https://stripe.com/docs/testing#cards: Attaching this card to # a Customer object succeeds, but attempts to charge the customer fail. with self.assertLogs("corporate.stripe", "INFO") as m: - self.upgrade(stripe_token=stripe_create_token("4000000000000341").id) + response = self.upgrade( + payment_method=create_payment_method( + self.get_test_card_number(attaches_to_customer=True, charge_succeeds=False) + ) + ) self.assertEqual( m.output, - ["INFO:corporate.stripe:Stripe card error: 402 card_error card_declined None"], + [ + "INFO:corporate.stripe:Stripe payment intent failed: zulip card_error card_declined None" + ], ) + + [payment_intent] = PaymentIntent.objects.all() + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + "event_handler": { + "status": "succeeded", + }, + }, + ) + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + payment_intent.stripe_payment_intent_id, + { + "status": "requires_payment_method", + "last_payment_error": { + "message": "Your card was declined.", + "description": "card_error", + }, + "event_handler": {"status": "succeeded"}, + }, + ) + # Check that we created a Customer object but no CustomerPlan + stripe_customer_id = Customer.objects.get(realm=get_realm("zulip")).stripe_customer_id + assert stripe_customer_id is not None + self.assertFalse(CustomerPlan.objects.exists()) + # Check that we created a Customer in stripe, a failed Charge, and no Invoices or Invoice Items + self.assertTrue(stripe_get_customer(stripe_customer_id)) + [charge] = stripe.Charge.list(customer=stripe_customer_id) + self.assertEqual(charge.failure_code, "card_declined") + self.assertFalse(stripe.Invoice.list(customer=stripe_customer_id)) + self.assertFalse(stripe.InvoiceItem.list(customer=stripe_customer_id)) + # Check that we correctly populated RealmAuditLog + audit_log_entries = list( + RealmAuditLog.objects.filter(acting_user=user) + .values_list("event_type", flat=True) + .order_by("id") + ) + self.assertEqual( + audit_log_entries, + [RealmAuditLog.STRIPE_CUSTOMER_CREATED, RealmAuditLog.STRIPE_CARD_CHANGED], + ) + # Check that we did not update Realm + realm = get_realm("zulip") + self.assertNotEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD) + # Check that we still get redirected to /upgrade + response = self.client_get("/billing/") + self.assertEqual(response.status_code, 302) + self.assertEqual("/upgrade/", response.url) + + [last_event] = stripe.Event.list(limit=1) + retry_payment_intent_json_response = self.client_post( + "/json/billing/session/start_retry_payment_intent_session", + { + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + }, + ) + self.assert_json_success(retry_payment_intent_json_response) + [payment_intent] = PaymentIntent.objects.all() + self.assert_details_of_valid_session_from_event_status_endpoint( + retry_payment_intent_json_response.json()["stripe_session_id"], + { + "type": "retry_upgrade_with_another_payment_method", + "status": "created", + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + }, + ) + self.trigger_stripe_checkout_session_completed_webhook( + create_payment_method( + self.get_test_card_number( + attaches_to_customer=True, charge_succeeds=True, card_provider="visa" + ) + ) + ) + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + payment_intent.stripe_payment_intent_id, + {"status": "processing"}, + ) + self.send_stripe_webhook_events(last_event) + + self.assert_details_of_valid_session_from_event_status_endpoint( + retry_payment_intent_json_response.json()["stripe_session_id"], + { + "type": "retry_upgrade_with_another_payment_method", + "status": "completed", + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + "event_handler": { + "status": "succeeded", + }, + }, + ) + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + payment_intent.stripe_payment_intent_id, + {"status": "succeeded", "event_handler": {"status": "succeeded"}}, + ) + + retry_payment_intent_json_response = self.client_post( + "/json/billing/session/start_retry_payment_intent_session", + { + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + }, + ) + self.assert_json_error(retry_payment_intent_json_response, "Payment already succeeded.") + + customer = Customer.objects.get(realm=get_realm("zulip")) + # It's impossible to create two Customers, but check that we didn't + # change stripe_customer_id + self.assertEqual(customer.stripe_customer_id, stripe_customer_id) + # Check that we successfully added a CustomerPlan, and have the right number of licenses + plan = CustomerPlan.objects.get(customer=customer) + ledger_entry = LicenseLedger.objects.get(plan=plan) + self.assertEqual(ledger_entry.licenses, self.seat_count) + self.assertEqual(ledger_entry.licenses_at_next_renewal, self.seat_count) + # Check the Charges and Invoices in Stripe + [charge0, charge1] = stripe.Charge.list(customer=stripe_customer_id) + self.assertEqual(8000 * self.seat_count, charge0.amount) + [stripe_invoice] = stripe.Invoice.list(customer=stripe_customer_id) + self.assertEqual( + [8000 * self.seat_count, -8000 * self.seat_count], + [item.amount for item in stripe_invoice.lines], + ) + # Check that we correctly populated RealmAuditLog + audit_log_entries = list( + RealmAuditLog.objects.filter(acting_user=user) + .values_list("event_type", flat=True) + .order_by("id") + ) + self.assertEqual( + audit_log_entries, + [ + RealmAuditLog.STRIPE_CUSTOMER_CREATED, + RealmAuditLog.STRIPE_CARD_CHANGED, + RealmAuditLog.STRIPE_CARD_CHANGED, + RealmAuditLog.CUSTOMER_PLAN_CREATED, + RealmAuditLog.REALM_PLAN_TYPE_CHANGED, + ], + ) + # Check that we correctly updated Realm + realm = get_realm("zulip") + self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD) + # Check that we can no longer access /upgrade + response = self.client_get("/upgrade/") + self.assertEqual(response.status_code, 302) + self.assertEqual("/billing/", response.url) + + @mock_stripe() + def test_upgrade_first_card_fails_and_restart_from_begining(self, *mocks: Mock) -> None: + user = self.example_user("hamlet") + self.login_user(user) + # From https://stripe.com/docs/testing#cards: Attaching this card to + # a Customer object succeeds, but attempts to charge the customer fail. + with self.assertLogs("corporate.stripe", "INFO") as m: + response = self.upgrade( + payment_method=create_payment_method( + self.get_test_card_number(attaches_to_customer=True, charge_succeeds=False) + ) + ) + self.assertEqual( + m.output, + [ + "INFO:corporate.stripe:Stripe payment intent failed: zulip card_error card_declined None" + ], + ) + + [payment_intent] = PaymentIntent.objects.all() + assert payment_intent.stripe_payment_intent_id is not None + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + "event_handler": { + "status": "succeeded", + }, + }, + ) + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + payment_intent.stripe_payment_intent_id, + { + "status": "requires_payment_method", + "last_payment_error": { + "message": "Your card was declined.", + "description": "card_error", + }, + "event_handler": {"status": "succeeded"}, + }, + ) + # Check that we created a Customer object but no CustomerPlan stripe_customer_id = Customer.objects.get(realm=get_realm("zulip")).stripe_customer_id assert stripe_customer_id is not None @@ -1283,7 +1703,24 @@ class StripeTest(StripeTestCase): # Try again, with a valid card, after they added a few users with patch("corporate.lib.stripe.get_latest_seat_count", return_value=23): with patch("corporate.views.upgrade.get_latest_seat_count", return_value=23): - self.upgrade() + response = self.upgrade() + [second_payment_intent, _] = PaymentIntent.objects.all().order_by("-id") + assert second_payment_intent.stripe_payment_intent_id is not None + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": second_payment_intent.stripe_payment_intent_id, + "event_handler": { + "status": "succeeded", + }, + }, + ) + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + second_payment_intent.stripe_payment_intent_id, + {"status": "succeeded", "event_handler": {"status": "succeeded"}}, + ) customer = Customer.objects.get(realm=get_realm("zulip")) # It's impossible to create two Customers, but check that we didn't # change stripe_customer_id @@ -1325,23 +1762,125 @@ class StripeTest(StripeTestCase): def test_upgrade_with_tampered_seat_count(self) -> None: hamlet = self.example_user("hamlet") self.login_user(hamlet) - response = self.upgrade(talk_to_stripe=False, salt="badsalt") + with self.assertLogs("corporate.stripe", "WARNING"): + response = self.upgrade(talk_to_stripe=False, salt="badsalt") self.assert_json_error_contains(response, "Something went wrong. Please contact") self.assertEqual(orjson.loads(response.content)["error_description"], "tampered seat count") - def test_upgrade_race_condition(self) -> None: + @mock_stripe() + def test_upgrade_race_condition_during_card_upgrade(self, *mocks: Mock) -> None: + hamlet = self.example_user("hamlet") + othello = self.example_user("othello") + + self.login_user(hamlet) + hamlet_upgrade_page_response = self.client_get("/upgrade/") + self.client_post( + "/json/billing/upgrade", + { + "billing_modality": "charge_automatically", + "schedule": "annual", + "signed_seat_count": self.get_signed_seat_count_from_response( + hamlet_upgrade_page_response + ), + "salt": self.get_salt_from_response(hamlet_upgrade_page_response), + "license_management": "automatic", + }, + ) + [hamlet_stripe_session] = stripe.checkout.Session.list(limit=1) + [hamlet_payment_intent] = stripe.PaymentIntent.list(limit=1) + + self.login_user(othello) + self.upgrade() + + self.login_user(hamlet) + # Checkout session cannot be started since the organization has been already upgraded. + with self.assertLogs("corporate.stripe", "WARNING"): + response = self.client_post( + "/json/billing/upgrade", + { + "billing_modality": "charge_automatically", + "schedule": "annual", + "signed_seat_count": self.get_signed_seat_count_from_response( + hamlet_upgrade_page_response + ), + "salt": self.get_salt_from_response(hamlet_upgrade_page_response), + "license_management": "automatic", + }, + ) + self.assert_json_error_contains( + response, + "The organization is already subscribed to a plan. Please reload the billing page.", + ) + payment_method = create_payment_method( + self.get_test_card_number( + attaches_to_customer=True, charge_succeeds=True, card_provider="visa" + ) + ) + + # Organization has been upgraded by the time hamlet completes the checkout session. + with self.assertLogs("corporate.stripe", "WARNING"): + self.trigger_stripe_checkout_session_completed_webhook( + payment_method, hamlet_stripe_session + ) + self.assert_details_of_valid_session_from_event_status_endpoint( + hamlet_stripe_session.id, + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": hamlet_payment_intent.id, + "event_handler": { + "status": "failed", + "error": { + "message": "The organization is already subscribed to a plan. Please reload the billing page.", + "description": "subscribing with existing subscription", + }, + }, + }, + ) + + # Organization has been upgraded by the time payment intent is successful. + stripe.PaymentIntent.confirm( + hamlet_payment_intent.id, + payment_method=payment_method.id, + off_session=True, + ) + with self.assertLogs("corporate.stripe", "WARNING"): + self.send_last_stripe_webhook_event() + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + hamlet_payment_intent.id, + { + "status": "succeeded", + "event_handler": { + "status": "failed", + "error": { + "message": "The organization is already subscribed to a plan. Please reload the billing page.", + "description": "subscribing with existing subscription", + }, + }, + }, + ) + charged_amount = self.seat_count * 8000 + customer = get_customer_by_realm(get_realm("zulip")) + assert customer is not None + assert customer.stripe_customer_id is not None + [invoice, _] = stripe.Invoice.list(customer=customer.stripe_customer_id) + self.assertEqual(invoice.total, -1 * charged_amount) + stripe_customer = stripe.Customer.retrieve(customer.stripe_customer_id) + self.assertEqual(stripe_customer.balance, -1 * charged_amount) + + def test_upgrade_race_condition_during_invoice_upgrade(self) -> None: hamlet = self.example_user("hamlet") self.login_user(hamlet) - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) with self.assertLogs("corporate.stripe", "WARNING") as m: with self.assertRaises(BillingError) as context: - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.assertEqual( "subscribing with existing subscription", context.exception.error_description ) self.assertEqual( m.output[0], - f"WARNING:corporate.stripe:Customer id> trying to upgrade, but has an active subscription", + "WARNING:corporate.stripe:Upgrade of zulip failed because of existing active plan.", ) self.assert_length(m.output, 1) @@ -1353,23 +1892,59 @@ class StripeTest(StripeTestCase): upgrade_params: Mapping[str, Any], del_args: Sequence[str] = [], ) -> None: - response = self.upgrade(talk_to_stripe=False, del_args=del_args, **upgrade_params) - self.assert_json_error_contains(response, error_message) if error_description: - self.assertEqual( - orjson.loads(response.content)["error_description"], error_description - ) + with self.assertLogs("corporate.stripe", "WARNING"): + response = self.upgrade( + talk_to_stripe=False, del_args=del_args, **upgrade_params + ) + self.assertEqual( + orjson.loads(response.content)["error_description"], error_description + ) + else: + response = self.upgrade(talk_to_stripe=False, del_args=del_args, **upgrade_params) + self.assert_json_error_contains(response, error_message) hamlet = self.example_user("hamlet") self.login_user(hamlet) check_error("Invalid billing_modality", "", {"billing_modality": "invalid"}) check_error("Invalid schedule", "", {"schedule": "invalid"}) check_error("Invalid license_management", "", {"license_management": "invalid"}) + check_error( - "Something went wrong. Please contact", - "autopay with no card", - {}, - del_args=["stripe_token"], + "You must invoice for at least 30 users.", + "not enough licenses", + {"billing_modality": "send_invoice", "licenses": -1}, + ) + check_error( + "You must invoice for at least 30 users.", + "not enough licenses", + {"billing_modality": "send_invoice"}, + ) + check_error( + "You must invoice for at least 30 users.", + "not enough licenses", + {"billing_modality": "send_invoice", "licenses": 25}, + ) + check_error( + "Invoices with more than 1000 licenses can't be processed from this page", + "too many licenses", + {"billing_modality": "send_invoice", "licenses": 10000}, + ) + + check_error( + "You must invoice for at least 6 users.", + "not enough licenses", + {"billing_modality": "charge_automatically", "license_management": "manual"}, + ) + + check_error( + "You must invoice for at least 6 users.", + "not enough licenses", + { + "billing_modality": "charge_automatically", + "license_management": "manual", + "licenses": 3, + }, ) def test_upgrade_license_counts(self) -> None: @@ -1384,16 +1959,18 @@ class StripeTest(StripeTestCase): else: del_args = [] upgrade_params["licenses"] = licenses - response = self.upgrade( - invoice=invoice, talk_to_stripe=False, del_args=del_args, **upgrade_params - ) + with self.assertLogs("corporate.stripe", "WARNING"): + response = self.upgrade( + invoice=invoice, talk_to_stripe=False, del_args=del_args, **upgrade_params + ) self.assert_json_error_contains(response, f"at least {min_licenses_in_response} users") self.assertEqual( orjson.loads(response.content)["error_description"], "not enough licenses" ) def check_max_licenses_error(licenses: int) -> None: - response = self.upgrade(invoice=True, talk_to_stripe=False, licenses=licenses) + with self.assertLogs("corporate.stripe", "WARNING"): + response = self.upgrade(invoice=True, talk_to_stripe=False, licenses=licenses) self.assert_json_error_contains( response, f"with more than {MAX_INVOICED_LICENSES} licenses" ) @@ -1410,9 +1987,16 @@ class StripeTest(StripeTestCase): del_args = [] upgrade_params["licenses"] = licenses with patch("corporate.views.upgrade.process_initial_upgrade"): - response = self.upgrade( - invoice=invoice, talk_to_stripe=False, del_args=del_args, **upgrade_params - ) + stripe_session = stripe.checkout.Session() + stripe_session.id = "stripe_session_id" + stripe_session.url = "stripe_session_url" + with patch( + "corporate.views.upgrade.setup_upgrade_checkout_session_and_payment_intent", + return_value=stripe_session, + ): + response = self.upgrade( + invoice=invoice, talk_to_stripe=False, del_args=del_args, **upgrade_params + ) self.assert_json_success(response) hamlet = self.example_user("hamlet") @@ -1454,7 +2038,8 @@ class StripeTest(StripeTestCase): hamlet = self.example_user("hamlet") self.login_user(hamlet) with patch( - "corporate.views.upgrade.process_initial_upgrade", side_effect=Exception + "corporate.views.upgrade.setup_upgrade_checkout_session_and_payment_intent", + side_effect=Exception, ), self.assertLogs("corporate.stripe", "WARNING") as m: response = self.upgrade(talk_to_stripe=False) self.assertIn("ERROR:corporate.stripe:Uncaught exception in billing", m.output[0]) @@ -1466,6 +2051,103 @@ class StripeTest(StripeTestCase): orjson.loads(response.content)["error_description"], "uncaught exception during upgrade" ) + @mock_stripe() + def test_checkout_session_completed_with_uncaught_exception(self, *mock_args: Any) -> None: + hamlet = self.example_user("hamlet") + self.login_user(hamlet) + + with patch( + "corporate.lib.stripe_event_handler.update_or_create_stripe_customer", + side_effect=Exception, + ), self.assertLogs("corporate.stripe", "WARNING"): + response = self.upgrade() + + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": PaymentIntent.objects.get().stripe_payment_intent_id, + "event_handler": { + "status": "failed", + "error": { + "message": "Something went wrong. Please contact desdemona+admin@zulip.com.", + "description": "uncaught exception in checkout.session.completed event handler", + }, + }, + }, + ) + + @mock_stripe() + def test_payment_intent_succeeded_event_with_uncaught_exception(self, *mock_args: Any) -> None: + hamlet = self.example_user("hamlet") + self.login_user(hamlet) + + with patch( + "corporate.lib.stripe_event_handler.process_initial_upgrade", side_effect=Exception + ), self.assertLogs("corporate.stripe", "WARNING"): + response = self.upgrade() + + [payment_intent] = PaymentIntent.objects.all().order_by("-id") + self.assert_details_of_valid_session_from_event_status_endpoint( + response.json()["stripe_session_id"], + { + "type": "upgrade_from_billing_page", + "status": "completed", + "stripe_payment_intent_id": payment_intent.stripe_payment_intent_id, + "event_handler": { + "status": "succeeded", + }, + }, + ) + + self.assert_details_of_valid_payment_intent_from_event_status_endpoint( + payment_intent.stripe_payment_intent_id, + { + "status": "succeeded", + "event_handler": { + "status": "failed", + "error": { + "message": "Something went wrong. Please contact desdemona+admin@zulip.com.", + "description": "uncaught exception in payment_intent.succeeded event handler", + }, + }, + }, + ) + + @mock_stripe() + def test_restart_payment_intent_session_errors(self, *mocks: Any) -> None: + user = self.example_user("hamlet") + self.login_user(user) + + json_response = self.client_post("/json/billing/session/start_retry_payment_intent_session") + self.assert_json_error(json_response, "Missing 'stripe_payment_intent_id' argument") + + json_response = self.client_post( + "/json/billing/session/start_retry_payment_intent_session", + {"stripe_payment_intent_id": "stripe_payment_intent_id"}, + ) + self.assert_json_error(json_response, "Please create a customer first.") + + upgrade_page_response = self.client_get("/upgrade/") + self.client_post( + "/json/billing/upgrade", + { + "billing_modality": "charge_automatically", + "schedule": "monthly", + "signed_seat_count": self.get_signed_seat_count_from_response( + upgrade_page_response + ), + "salt": self.get_salt_from_response(upgrade_page_response), + "license_management": "automatic", + }, + ) + response = self.client_post( + "/json/billing/session/start_retry_payment_intent_session", + {"stripe_payment_intent_id": "stripe_payment_intent_id"}, + ) + self.assert_json_error(response, "Invalid payment intent id.") + def test_request_sponsorship_form_with_invalid_url(self) -> None: user = self.example_user("hamlet") self.login_user(user) @@ -1771,9 +2453,7 @@ class StripeTest(StripeTestCase): plan.save(update_fields=["status"]) attach_discount_to_realm(user.realm, Decimal(25), acting_user=user) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - process_initial_upgrade( - user, self.seat_count, True, CustomerPlan.ANNUAL, stripe_create_token().id - ) + self.upgrade(license_management="automatic", billing_modality="charge_automatically") [charge, _] = stripe.Charge.list(customer=customer.stripe_customer_id) self.assertEqual(6000 * self.seat_count, charge.amount) stripe_customer_id = customer.stripe_customer_id @@ -1844,76 +2524,119 @@ class StripeTest(StripeTestCase): self.assertEqual(get_discount_for_realm(user.realm), 85) @mock_stripe() - def test_replace_payment_source(self, *mocks: Mock) -> None: + def test_replace_payment_method(self, *mocks: Mock) -> None: user = self.example_user("hamlet") self.login_user(user) self.upgrade() # Create an open invoice - stripe_customer = Customer.objects.first() - assert stripe_customer is not None - stripe_customer_id = stripe_customer.stripe_customer_id + customer = Customer.objects.first() + assert customer is not None + stripe_customer_id = customer.stripe_customer_id assert stripe_customer_id is not None stripe.InvoiceItem.create(amount=5000, currency="usd", customer=stripe_customer_id) stripe_invoice = stripe.Invoice.create(customer=stripe_customer_id) stripe.Invoice.finalize_invoice(stripe_invoice) RealmAuditLog.objects.filter(event_type=RealmAuditLog.STRIPE_CARD_CHANGED).delete() - # Replace with an invalid card - stripe_token = stripe_create_token(card_number="4000000000009987").id - with patch("stripe.Invoice.list") as mock_invoice_list, self.assertLogs( - "corporate.stripe", "INFO" - ) as m: - response = self.client_post( - "/json/billing/sources/change", - {"stripe_token": stripe_token}, - ) - self.assertEqual( - m.output, ["INFO:corporate.stripe:Stripe card error: 402 card_error card_declined "] - ) - mock_invoice_list.assert_not_called() - self.assertEqual(orjson.loads(response.content)["error_description"], "card error") - self.assert_json_error_contains(response, "Your card was declined") - for stripe_source in stripe_get_customer(stripe_customer_id).sources: - assert isinstance(stripe_source, stripe.Card) - self.assertEqual(stripe_source.last4, "4242") - self.assertFalse( - RealmAuditLog.objects.filter(event_type=RealmAuditLog.STRIPE_CARD_CHANGED).exists() + start_session_json_response = self.client_post( + "/json/billing/session/start_card_update_session" ) + self.assert_details_of_valid_session_from_event_status_endpoint( + start_session_json_response.json()["stripe_session_id"], + { + "type": "card_update_from_billing_page", + "status": "created", + }, + ) + with self.assertRaises(stripe.error.CardError): + # We don't have to handle this since the Stripe Checkout page would + # ask Customer to enter a valid card number. trigger_stripe_checkout_session_completed_webhook + # emulates what happens in the Stripe Checkout page. Adding this check mostly for coverage of + # create_payment_method. + self.trigger_stripe_checkout_session_completed_webhook( + create_payment_method(self.get_test_card_number(attaches_to_customer=False)) + ) - # Replace with a card that's valid, but charging the card fails - stripe_token = stripe_create_token(card_number="4000000000000341").id + start_session_json_response = self.client_post( + "/json/billing/session/start_card_update_session" + ) + self.assert_details_of_valid_session_from_event_status_endpoint( + start_session_json_response.json()["stripe_session_id"], + { + "type": "card_update_from_billing_page", + "status": "created", + }, + ) with self.assertLogs("corporate.stripe", "INFO") as m: - response = self.client_post( - "/json/billing/sources/change", - {"stripe_token": stripe_token}, + self.trigger_stripe_checkout_session_completed_webhook( + create_payment_method( + self.get_test_card_number(attaches_to_customer=True, charge_succeeds=False) + ) ) self.assertEqual( - m.output, - ["INFO:corporate.stripe:Stripe card error: 402 card_error card_declined None"], + m.output[0], + "INFO:corporate.stripe:Stripe card error: 402 card_error card_declined None", ) - self.assertEqual(orjson.loads(response.content)["error_description"], "card error") - self.assert_json_error_contains(response, "Your card was declined") - for stripe_source in stripe_get_customer(stripe_customer_id).sources: - assert isinstance(stripe_source, stripe.Card) - self.assertEqual(stripe_source.last4, "0341") - self.assertEqual( - len(list(stripe.Invoice.list(customer=stripe_customer_id, status="open"))), 1 - ) - self.assertEqual( - 1, RealmAuditLog.objects.filter(event_type=RealmAuditLog.STRIPE_CARD_CHANGED).count() + self.assert_details_of_valid_session_from_event_status_endpoint( + start_session_json_response.json()["stripe_session_id"], + { + "type": "card_update_from_billing_page", + "status": "completed", + "event_handler": { + "status": "failed", + "error": {"message": "Your card was declined.", "description": "card error"}, + }, + }, ) - # Replace with a valid card - stripe_token = stripe_create_token(card_number="5555555555554444").id - response = self.client_post("/json/billing/sources/change", {"stripe_token": stripe_token}) - self.assert_json_success(response) - number_of_sources = 0 - for stripe_source in stripe_get_customer(stripe_customer_id).sources: - assert isinstance(stripe_source, stripe.Card) - self.assertEqual(stripe_source.last4, "4444") - number_of_sources += 1 - # Verify that we replaced the previous card, rather than adding a new one - self.assertEqual(number_of_sources, 1) + response = self.client_get("/billing/") + self.assert_in_success_response(["payment method: visa ending in 0341"], response) + assert RealmAuditLog.objects.filter(event_type=RealmAuditLog.STRIPE_CARD_CHANGED).exists() + stripe_payment_methods = stripe.PaymentMethod.list(customer=stripe_customer_id, type="card") + self.assert_length(stripe_payment_methods, 2) + + for stripe_payment_method in stripe_payment_methods: + stripe.PaymentMethod.detach(stripe_payment_method.id) + response = self.client_get("/billing/") + self.assert_in_success_response( + ["payment method: No payment method on file"], response + ) + + start_session_json_response = self.client_post( + "/json/billing/session/start_card_update_session" + ) + self.assert_json_success(start_session_json_response) + self.trigger_stripe_checkout_session_completed_webhook( + create_payment_method( + self.get_test_card_number( + attaches_to_customer=True, charge_succeeds=True, card_provider="mastercard" + ) + ) + ) + self.assert_details_of_valid_session_from_event_status_endpoint( + start_session_json_response.json()["stripe_session_id"], + { + "type": "card_update_from_billing_page", + "status": "completed", + "event_handler": {"status": "succeeded"}, + }, + ) + + self.login_user(self.example_user("iago")) + response = self.client_get( + "/json/billing/event/status", + {"stripe_session_id": start_session_json_response.json()["stripe_session_id"]}, + ) + self.assert_json_error_contains( + response, "Must be a billing administrator or an organization owner" + ) + + self.login_user(self.example_user("hamlet")) + response = self.client_get("/billing/") + self.assert_in_success_response( + ["payment method: mastercard ending in 4444"], response + ) + self.assert_length(stripe.PaymentMethod.list(customer=stripe_customer_id, type="card"), 1) # Ideally we'd also test that we don't pay invoices with collection_method=='send_invoice' for stripe_invoice in stripe.Invoice.list(customer=stripe_customer_id): self.assertEqual(stripe_invoice.status, "paid") @@ -1925,7 +2648,7 @@ class StripeTest(StripeTestCase): user = self.example_user("hamlet") self.login_user(user) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) plan = get_current_plan_by_realm(user.realm) assert plan is not None self.assertEqual(plan.licenses(), self.seat_count) @@ -1946,7 +2669,7 @@ class StripeTest(StripeTestCase): self.assertEqual(plan.licenses_at_next_renewal(), None) with patch("corporate.views.billing_page.timezone_now", return_value=self.now): - mock_customer = Mock(email=user.delivery_email, default_source=None) + mock_customer = Mock(email=user.delivery_email) with patch( "corporate.views.billing_page.stripe_get_customer", return_value=mock_customer ): @@ -2332,7 +3055,7 @@ class StripeTest(StripeTestCase): user = self.example_user("hamlet") self.login_user(user) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) with self.assertLogs("corporate.stripe", "INFO") as m: with patch("corporate.views.billing_page.timezone_now", return_value=self.now): response = self.client_patch( @@ -2369,7 +3092,7 @@ class StripeTest(StripeTestCase): user = self.example_user("hamlet") self.login_user(user) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) with self.assertLogs("corporate.stripe", "INFO") as m: stripe_customer_id = Customer.objects.get(realm=user.realm).id new_plan = get_current_plan_by_realm(user.realm) @@ -2397,7 +3120,7 @@ class StripeTest(StripeTestCase): free_trial_end_date = self.now + timedelta(days=60) with self.settings(FREE_TRIAL_DAYS=60): with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, True) plan = CustomerPlan.objects.get() self.assertEqual(plan.next_invoice_date, free_trial_end_date) @@ -2444,7 +3167,7 @@ class StripeTest(StripeTestCase): user = self.example_user("hamlet") with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.login_user(user) with self.assertLogs("corporate.stripe", "INFO") as m: @@ -2462,10 +3185,10 @@ class StripeTest(StripeTestCase): "corporate.stripe", "WARNING" ) as m: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.assertEqual( m.output[0], - f"WARNING:corporate.stripe:Customer id> trying to upgrade, but has an active subscription", + "WARNING:corporate.stripe:Upgrade of zulip failed because of existing active plan.", ) self.assertEqual( context.exception.error_description, "subscribing with existing subscription" @@ -2477,7 +3200,7 @@ class StripeTest(StripeTestCase): self.assert_in_success_response(["Your organization is on the Zulip Free"], response) with patch("corporate.lib.stripe.timezone_now", return_value=self.next_year): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.assertEqual(Customer.objects.count(), 1) self.assertEqual(CustomerPlan.objects.count(), 2) @@ -2621,7 +3344,7 @@ class StripeTest(StripeTestCase): self.login_user(user) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) with patch("corporate.views.billing_page.timezone_now", return_value=self.now): result = self.client_patch("/json/billing/plan", {"licenses": 100}) @@ -2633,7 +3356,7 @@ class StripeTest(StripeTestCase): def test_update_plan_with_invalid_status(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.login_user(self.example_user("hamlet")) response = self.client_patch( @@ -2644,7 +3367,7 @@ class StripeTest(StripeTestCase): def test_update_plan_without_any_params(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.login_user(self.example_user("hamlet")) with patch("corporate.views.billing_page.timezone_now", return_value=self.now): @@ -2653,7 +3376,7 @@ class StripeTest(StripeTestCase): def test_update_plan_that_which_is_due_for_expiry(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.login_user(self.example_user("hamlet")) with self.assertLogs("corporate.stripe", "INFO") as m: @@ -2675,7 +3398,7 @@ class StripeTest(StripeTestCase): def test_update_plan_that_which_is_due_for_replacement(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.MONTHLY, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.MONTHLY, True, False) self.login_user(self.example_user("hamlet")) with self.assertLogs("corporate.stripe", "INFO") as m: @@ -2700,7 +3423,7 @@ class StripeTest(StripeTestCase): def test_deactivate_realm(self, mock_: Mock) -> None: user = self.example_user("hamlet") with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) plan = CustomerPlan.objects.get() self.assertEqual(plan.next_invoice_date, self.next_month) @@ -2745,7 +3468,7 @@ class StripeTest(StripeTestCase): user = self.example_user("hamlet") with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) do_deactivate_realm(get_realm("zulip"), acting_user=None) self.assertTrue(get_realm("zulip").deactivated) @@ -2756,7 +3479,7 @@ class StripeTest(StripeTestCase): self.assert_in_success_response(["Your organization is on the Zulip Free"], response) with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.assertEqual(Customer.objects.count(), 1) @@ -3095,20 +3818,181 @@ class StripeTest(StripeTestCase): self.assertEqual(realm_audit_log.extra_data, str(expected_extra_data)) @mock_stripe() - def test_customer_has_credit_card_as_default_source(self, *mocks: Mock) -> None: + def test_customer_has_credit_card_as_default_payment_method(self, *mocks: Mock) -> None: iago = self.example_user("iago") customer = Customer.objects.create(realm=iago.realm) - self.assertFalse(customer_has_credit_card_as_default_source(customer)) + self.assertFalse(customer_has_credit_card_as_default_payment_method(customer)) customer = do_create_stripe_customer(iago) - self.assertFalse(customer_has_credit_card_as_default_source(customer)) + self.assertFalse(customer_has_credit_card_as_default_payment_method(customer)) - customer = do_create_stripe_customer(iago, stripe_token=stripe_create_token().id) - self.assertTrue(customer_has_credit_card_as_default_source(customer)) + customer = do_create_stripe_customer( + iago, + payment_method=create_payment_method( + self.get_test_card_number( + attaches_to_customer=True, charge_succeeds=True, card_provider="visa" + ) + ).id, + ) + self.assertTrue(customer_has_credit_card_as_default_payment_method(customer)) -class RequiresBillingAccessTest(ZulipTestCase): - def setUp(self) -> None: +class StripeWebhookEndpointTest(ZulipTestCase): + def test_stripe_webhook_with_invalid_data(self) -> None: + result = self.client_post( + "/stripe/webhook/", + '["dsdsds"]', + content_type="application/json", + ) + self.assertEqual(result.status_code, 400) + + def test_stripe_webhook_for_session_completed_event(self) -> None: + valid_session_event_data = { + "id": "stripe_event_id", + "type": "checkout.session.completed", + "data": {"object": {"object": "checkout.session", "id": "stripe_session_id"}}, + } + with patch("corporate.views.webhook.handle_checkout_session_completed_event") as m: + result = self.client_post( + "/stripe/webhook/", + valid_session_event_data, + content_type="application/json", + ) + self.assert_length(Event.objects.all(), 0) + self.assertEqual(result.status_code, 200) + m.assert_not_called() + + customer = Customer.objects.create(realm=get_realm("zulip")) + Session.objects.create( + stripe_session_id="stripe_session_id", + customer=customer, + type=Session.UPGRADE_FROM_BILLING_PAGE, + ) + + self.assert_length(Event.objects.all(), 0) + with patch("corporate.views.webhook.handle_checkout_session_completed_event") as m: + result = self.client_post( + "/stripe/webhook/", + valid_session_event_data, + content_type="application/json", + ) + [event] = Event.objects.all() + self.assertEqual(result.status_code, 200) + strip_event = stripe.Event.construct_from(valid_session_event_data, stripe.api_key) + m.assert_called_once_with(strip_event.data.object, event) + + with patch("corporate.views.webhook.handle_checkout_session_completed_event") as m: + result = self.client_post( + "/stripe/webhook/", + valid_session_event_data, + content_type="application/json", + ) + self.assert_length(Event.objects.all(), 1) + self.assertEqual(result.status_code, 200) + m.assert_not_called() + + def test_stripe_webhook_for_payment_intent_events(self) -> None: + customer = Customer.objects.create(realm=get_realm("zulip")) + + for index, event_type in enumerate( + ["payment_intent.succeeded", "payment_intent.payment_failed"] + ): + handler_function_name = "handle_" + event_type.replace(".", "_") + "_event" + handler_function_path = f"corporate.views.webhook.{handler_function_name}" + + stripe_event_id = f"stripe_event_id_{index}" + stripe_payment_intent_id = f"stripe_payment_intent_id{index}" + + valid_session_event_data = { + "id": stripe_event_id, + "type": event_type, + "data": {"object": {"object": "payment_intent", "id": stripe_payment_intent_id}}, + } + + with patch(handler_function_path) as m: + result = self.client_post( + "/stripe/webhook/", + valid_session_event_data, + content_type="application/json", + ) + self.assert_length(Event.objects.filter(stripe_event_id=stripe_event_id), 0) + self.assertEqual(result.status_code, 200) + m.assert_not_called() + + PaymentIntent.objects.create( + stripe_payment_intent_id=stripe_payment_intent_id, + customer=customer, + status=PaymentIntent.REQUIRES_PAYMENT_METHOD, + ) + + self.assert_length(Event.objects.filter(stripe_event_id=stripe_event_id), 0) + with patch(handler_function_path) as m: + result = self.client_post( + "/stripe/webhook/", + valid_session_event_data, + content_type="application/json", + ) + [event] = Event.objects.filter(stripe_event_id=stripe_event_id) + self.assertEqual(result.status_code, 200) + strip_event = stripe.Event.construct_from(valid_session_event_data, stripe.api_key) + m.assert_called_once_with(strip_event.data.object, event) + + with patch(handler_function_path) as m: + result = self.client_post( + "/stripe/webhook/", + valid_session_event_data, + content_type="application/json", + ) + self.assert_length(Event.objects.filter(stripe_event_id=stripe_event_id), 1) + self.assertEqual(result.status_code, 200) + m.assert_not_called() + + +class EventStatusTest(StripeTestCase): + def test_event_status_json_endpoint_errors(self) -> None: + self.login_user(self.example_user("iago")) + + response = self.client_get("/json/billing/event/status") + self.assert_json_error_contains(response, "No customer for this organization!") + + Customer.objects.create(realm=get_realm("zulip"), stripe_customer_id="cus_123") + response = self.client_get( + "/json/billing/event/status", {"stripe_session_id": "invalid_session_id"} + ) + self.assert_json_error_contains(response, "Session not found") + + response = self.client_get( + "/json/billing/event/status", {"stripe_payment_intent_id": "invalid_payment_intent_id"} + ) + self.assert_json_error_contains(response, "Payment intent not found") + + response = self.client_get( + "/json/billing/event/status", + ) + self.assert_json_error_contains( + response, "Pass stripe_session_id or stripe_payment_intent_id" + ) + + def test_event_status_page(self) -> None: + self.login_user(self.example_user("polonius")) + + stripe_session_id = "cs_test_9QCz62mPTJQUwvhcwZHBpJMHmMZiLU512AQHU9g5znkx6NweU3j7kJvY" + response = self.client_get( + "/billing/event_status/", {"stripe_session_id": stripe_session_id} + ) + self.assert_in_success_response([f'data-stripe-session-id="{stripe_session_id}"'], response) + + stripe_payment_intent_id = "pi_1JGLpnA4KHR4JzRvUfkF9Tn7" + response = self.client_get( + "/billing/event_status/", {"stripe_payment_intent_id": stripe_payment_intent_id} + ) + self.assert_in_success_response( + [f'data-stripe-payment-intent-id="{stripe_payment_intent_id}"'], response + ) + + +class RequiresBillingAccessTest(StripeTestCase): + def setUp(self, *mocks: Mock) -> None: super().setUp() hamlet = self.example_user("hamlet") hamlet.is_billing_admin = True @@ -3118,81 +4002,87 @@ class RequiresBillingAccessTest(ZulipTestCase): desdemona.role = UserProfile.ROLE_REALM_OWNER desdemona.save(update_fields=["role"]) - def test_who_can_access_json_endpoints(self) -> None: - # Billing admins have access - self.login_user(self.example_user("hamlet")) - with patch("corporate.views.billing_page.do_replace_payment_source") as mocked1: - response = self.client_post("/json/billing/sources/change", {"stripe_token": "token"}) - self.assert_json_success(response) - mocked1.assert_called_once() + def test_json_endpoints_permissions(self) -> None: + guest = self.example_user("polonius") + member = self.example_user("othello") + realm_admin = self.example_user("iago") - # Realm owners have access, even if they are not billing admins - self.login_user(self.example_user("desdemona")) - with patch("corporate.views.billing_page.do_replace_payment_source") as mocked2: - response = self.client_post("/json/billing/sources/change", {"stripe_token": "token"}) - self.assert_json_success(response) - mocked2.assert_called_once() + billing_admin = self.example_user("hamlet") + billing_admin.is_billing_admin = True + billing_admin.save(update_fields=["is_billing_admin"]) - def test_who_cant_access_json_endpoints(self) -> None: - def verify_user_cant_access_endpoint( - username: str, - endpoint: str, - method: str, - request_data: Dict[str, Union[str, int]], + tested_endpoints = set() + + def check_users_cant_access( + users: List[UserProfile], error_message: str, + url: str, + method: str, + data: Dict[str, Any], ) -> None: + tested_endpoints.add(url) + for user in users: + self.login_user(user) + if method == "POST": + client_func: Any = self.client_post + elif method == "GET": + client_func = self.client_get + else: + client_func = self.client_patch + result = client_func( + url, + data, + content_type="application/json", + ) + self.assert_json_error_contains(result, error_message) - self.login_user(self.example_user(username)) - if method == "POST": - response = self.client_post(endpoint, request_data) - elif method == "PATCH": - response = self.client_patch(endpoint, request_data) - else: - raise AssertionError("Invalid method") - self.assert_json_error_contains(response, error_message) - - verify_user_cant_access_endpoint( - "polonius", + check_users_cant_access( + [guest], + "Must be an organization member", "/json/billing/upgrade", "POST", - { - "billing_modality": "charge_automatically", - "schedule": "annual", - "signed_seat_count": "signed count", - "salt": "salt", - }, - "Must be an organization member", + {}, ) - verify_user_cant_access_endpoint( - "polonius", + check_users_cant_access( + [guest], + "Must be an organization member", "/json/billing/sponsorship", "POST", - { - "organization-type": "event", - "description": "event description", - "website": "example.com", - }, - "Must be an organization member", + {}, ) - for username in ["cordelia", "iago"]: - self.login_user(self.example_user(username)) - verify_user_cant_access_endpoint( - username, - "/json/billing/sources/change", - "POST", - {"stripe_token": "token"}, - "Must be a billing administrator or an organization owner", - ) + check_users_cant_access( + [guest, member, realm_admin], + "Must be a billing administrator or an organization owner", + "/json/billing/plan", + "PATCH", + {}, + ) - verify_user_cant_access_endpoint( - username, - "/json/billing/plan", - "PATCH", - {"status": 1}, - "Must be a billing administrator or an organization owner", - ) + check_users_cant_access( + [guest, member, realm_admin], + "Must be a billing administrator or an organization owner", + "/json/billing/session/start_card_update_session", + "POST", + {}, + ) + + check_users_cant_access( + [guest], + "Must be an organization member", + "/json/billing/session/start_retry_payment_intent_session", + "POST", + {}, + ) + + check_users_cant_access( + [guest], + "Must be an organization member", + "/json/billing/event/status", + "GET", + {}, + ) # Make sure that we are testing all the JSON endpoints # Quite a hack, but probably fine for now @@ -3200,7 +4090,40 @@ class RequiresBillingAccessTest(ZulipTestCase): json_endpoints = { word.strip("\"'()[],$") for word in string_with_all_endpoints.split() if "json/" in word } - self.assert_length(json_endpoints, 4) + self.assert_length(json_endpoints, len(tested_endpoints)) + + @mock_stripe() + def test_billing_page_permissions(self, *mocks: Mock) -> None: + # Guest users can't access /upgrade page + self.login_user(self.example_user("polonius")) + response = self.client_get("/upgrade/", follow=True) + self.assertEqual(response.status_code, 404) + + # Check that non-admins can access /upgrade via /billing, when there is no Customer object + self.login_user(self.example_user("hamlet")) + response = self.client_get("/billing/") + self.assertEqual(response.status_code, 302) + self.assertEqual("/upgrade/", response.url) + # Check that non-admins can sign up and pay + self.upgrade() + # Check that the non-admin hamlet can still access /billing + response = self.client_get("/billing/") + self.assert_in_success_response(["Your current plan is"], response) + + # Check realm owners can access billing, even though they are not a billing admin + desdemona = self.example_user("desdemona") + desdemona.role = UserProfile.ROLE_REALM_OWNER + desdemona.save(update_fields=["role"]) + self.login_user(self.example_user("desdemona")) + response = self.client_get("/billing/") + self.assert_in_success_response(["Your current plan is"], response) + + # Check that member who is not a billing admin does not have access + self.login_user(self.example_user("cordelia")) + response = self.client_get("/billing/") + self.assert_in_success_response( + ["You must be an organization owner or a billing administrator"], response + ) class BillingHelpersTest(ZulipTestCase): @@ -3349,7 +4272,7 @@ class BillingHelpersTest(ZulipTestCase): with patch( "corporate.lib.stripe.do_create_stripe_customer", return_value="returned" ) as mocked1: - returned = update_or_create_stripe_customer(user, stripe_token="token") + returned = update_or_create_stripe_customer(user, payment_method="payment_method_id") mocked1.assert_called_once() self.assertEqual(returned, "returned") @@ -3358,14 +4281,14 @@ class BillingHelpersTest(ZulipTestCase): with patch( "corporate.lib.stripe.do_create_stripe_customer", return_value="returned" ) as mocked2: - returned = update_or_create_stripe_customer(user, stripe_token="token") + returned = update_or_create_stripe_customer(user, payment_method="payment_method_id") mocked2.assert_called_once() self.assertEqual(returned, "returned") customer.stripe_customer_id = "cus_12345" customer.save() # Customer exists, replace payment source - with patch("corporate.lib.stripe.do_replace_payment_source") as mocked3: + with patch("corporate.lib.stripe.do_replace_payment_method") as mocked3: returned_customer = update_or_create_stripe_customer( self.example_user("hamlet"), "token" ) @@ -3373,7 +4296,7 @@ class BillingHelpersTest(ZulipTestCase): self.assertEqual(returned_customer, customer) # Customer exists, do nothing - with patch("corporate.lib.stripe.do_replace_payment_source") as mocked4: + with patch("corporate.lib.stripe.do_replace_payment_method") as mocked4: returned_customer = update_or_create_stripe_customer(self.example_user("hamlet"), None) mocked4.assert_not_called() self.assertEqual(returned_customer, customer) @@ -3478,7 +4401,7 @@ class BillingHelpersTest(ZulipTestCase): class LicenseLedgerTest(StripeTestCase): def test_add_plan_renewal_if_needed(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) self.assertEqual(LicenseLedger.objects.count(), 1) plan = CustomerPlan.objects.get() # Plan hasn't renewed yet @@ -3508,7 +4431,7 @@ class LicenseLedgerTest(StripeTestCase): update_license_ledger_if_needed(realm, self.now) self.assertFalse(LicenseLedger.objects.exists()) # Test plan not automanaged - self.local_upgrade(self.seat_count + 1, False, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count + 1, False, CustomerPlan.ANNUAL, True, False) plan = CustomerPlan.objects.get() self.assertEqual(LicenseLedger.objects.count(), 1) self.assertEqual(plan.licenses(), self.seat_count + 1) @@ -3530,7 +4453,7 @@ class LicenseLedgerTest(StripeTestCase): def test_update_license_ledger_for_automanaged_plan(self) -> None: realm = get_realm("zulip") with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) plan = CustomerPlan.objects.first() assert plan is not None self.assertEqual(plan.licenses(), self.seat_count) @@ -3579,7 +4502,7 @@ class LicenseLedgerTest(StripeTestCase): realm = get_realm("zulip") with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count + 1, False, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count + 1, False, CustomerPlan.ANNUAL, True, False) plan = get_current_plan_by_realm(realm) assert plan is not None @@ -3635,7 +4558,7 @@ class LicenseLedgerTest(StripeTestCase): update_license_ledger_for_manual_plan(plan, self.now) def test_user_changes(self) -> None: - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) user = do_create_user("email", "password", get_realm("zulip"), "name", acting_user=None) do_deactivate_user(user, acting_user=None) do_reactivate_user(user, acting_user=None) @@ -3660,7 +4583,7 @@ class LicenseLedgerTest(StripeTestCase): class InvoiceTest(StripeTestCase): def test_invoicing_status_is_started(self) -> None: - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) plan = CustomerPlan.objects.first() assert plan is not None plan.invoicing_status = CustomerPlan.STARTED @@ -3669,7 +4592,7 @@ class InvoiceTest(StripeTestCase): invoice_plan(assert_is_not_none(CustomerPlan.objects.first()), self.now) def test_invoice_plan_without_stripe_customer(self) -> None: - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL) + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, False, False) plan = get_current_plan_by_realm(get_realm("zulip")) assert plan and plan.customer plan.customer.stripe_customer_id = None @@ -3780,7 +4703,7 @@ class InvoiceTest(StripeTestCase): def test_no_invoice_needed(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) plan = CustomerPlan.objects.first() assert plan is not None self.assertEqual(plan.next_invoice_date, self.next_month) @@ -3793,7 +4716,7 @@ class InvoiceTest(StripeTestCase): def test_invoice_plans_as_needed(self) -> None: with patch("corporate.lib.stripe.timezone_now", return_value=self.now): - self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, "token") + self.local_upgrade(self.seat_count, True, CustomerPlan.ANNUAL, True, False) plan = CustomerPlan.objects.first() assert plan is not None self.assertEqual(plan.next_invoice_date, self.next_month) diff --git a/corporate/urls.py b/corporate/urls.py index 4fae5b72d1..a0edfa0506 100644 --- a/corporate/urls.py +++ b/corporate/urls.py @@ -4,9 +4,15 @@ from django.conf.urls import include from django.urls import path from django.views.generic import TemplateView -from corporate.views.billing_page import billing_home, replace_payment_source, update_plan +from corporate.views.billing_page import billing_home, update_plan +from corporate.views.event_status import event_status, event_status_page +from corporate.views.session import ( + start_card_update_stripe_session, + start_retry_payment_intent_session, +) from corporate.views.support import support_request from corporate.views.upgrade import initial_upgrade, sponsorship, upgrade +from corporate.views.webhook import stripe_webhook from zerver.lib.rest import rest_path i18n_urlpatterns: Any = [ @@ -15,16 +21,23 @@ i18n_urlpatterns: Any = [ path("zephyr-mirror/", TemplateView.as_view(template_name="corporate/zephyr-mirror.html")), path("jobs/", TemplateView.as_view(template_name="corporate/jobs.html")), # Billing - path("billing/", billing_home), + path("billing/", billing_home, name="billing_home"), path("upgrade/", initial_upgrade, name="initial_upgrade"), path("support/", support_request), + path("billing/event_status/", event_status_page, name="event_status_page"), + path("stripe/webhook/", stripe_webhook, name="stripe_webhook"), ] v1_api_and_json_patterns = [ rest_path("billing/upgrade", POST=upgrade), rest_path("billing/sponsorship", POST=sponsorship), rest_path("billing/plan", PATCH=update_plan), - rest_path("billing/sources/change", POST=replace_payment_source), + rest_path("billing/session/start_card_update_session", POST=start_card_update_stripe_session), + rest_path( + "billing/session/start_retry_payment_intent_session", + POST=start_retry_payment_intent_session, + ), + rest_path("billing/event/status", GET=event_status), ] # Make a copy of i18n_urlpatterns so that they appear without prefix for English diff --git a/corporate/views/billing_page.py b/corporate/views/billing_page.py index f4d105b873..3dad1ea04d 100644 --- a/corporate/views/billing_page.py +++ b/corporate/views/billing_page.py @@ -1,5 +1,5 @@ import logging -from typing import Any, Dict, Optional, Union +from typing import Any, Dict, Optional import stripe from django.conf import settings @@ -10,10 +10,8 @@ from django.utils.timezone import now as timezone_now from django.utils.translation import gettext as _ from corporate.lib.stripe import ( - STRIPE_PUBLISHABLE_KEY, cents_to_dollar_string, do_change_plan_status, - do_replace_payment_source, downgrade_at_the_end_of_billing_cycle, downgrade_now_without_creating_additional_invoices, get_latest_seat_count, @@ -42,17 +40,16 @@ billing_logger = logging.getLogger("corporate.stripe") # Should only be called if the customer is being charged automatically def payment_method_string(stripe_customer: stripe.Customer) -> str: - stripe_source: Optional[Union[stripe.Card, stripe.Source]] = stripe_customer.default_source - # In case of e.g. an expired card - if stripe_source is None: # nocoverage + default_payment_method = stripe_customer.invoice_settings.default_payment_method + if default_payment_method is None: return _("No payment method on file") - if stripe_source.object == "card": - assert isinstance(stripe_source, stripe.Card) + + if default_payment_method.type == "card": return _("{brand} ending in {last4}").format( - brand=stripe_source.brand, - last4=stripe_source.last4, + brand=default_payment_method.card.brand, + last4=default_payment_method.card.last4, ) - # There might be one-off stuff we do for a particular customer that + # There might be oneoff stuff we do for a particular customer that # would land them here. E.g. by default we don't support ACH for # automatic payments, but in theory we could add it for a customer via # the Stripe dashboard. @@ -144,7 +141,6 @@ def billing_home( renewal_amount=cents_to_dollar_string(renewal_cents), payment_method=payment_method, charge_automatically=charge_automatically, - publishable_key=STRIPE_PUBLISHABLE_KEY, stripe_email=stripe_customer.email, CustomerPlan=CustomerPlan, onboarding=onboarding, @@ -251,14 +247,3 @@ def update_plan( return json_success() raise JsonableError(_("Nothing to change.")) - - -@require_billing_access -@has_request_variables -def replace_payment_source( - request: HttpRequest, - user: UserProfile, - stripe_token: str = REQ(), -) -> HttpResponse: - do_replace_payment_source(user, stripe_token, pay_invoices=True) - return json_success() diff --git a/corporate/views/event_status.py b/corporate/views/event_status.py new file mode 100644 index 0000000000..1f9a02f6be --- /dev/null +++ b/corporate/views/event_status.py @@ -0,0 +1,63 @@ +import logging +from typing import Optional + +from django.http import HttpRequest, HttpResponse +from django.shortcuts import render +from django.utils.translation import gettext as _ + +from corporate.models import PaymentIntent, Session, get_customer_by_realm +from zerver.decorator import require_organization_member, zulip_login_required +from zerver.lib.exceptions import JsonableError +from zerver.lib.request import REQ, has_request_variables +from zerver.lib.response import json_success +from zerver.models import UserProfile + +billing_logger = logging.getLogger("corporate.stripe") + + +@require_organization_member +@has_request_variables +def event_status( + request: HttpRequest, + user: UserProfile, + stripe_session_id: Optional[str] = REQ(default=None), + stripe_payment_intent_id: Optional[str] = REQ(default=None), +) -> HttpResponse: + customer = get_customer_by_realm(user.realm) + if customer is None: + raise JsonableError(_("No customer for this organization!")) + + if stripe_session_id is not None: + try: + session = Session.objects.get(stripe_session_id=stripe_session_id, customer=customer) + except Session.DoesNotExist: + raise JsonableError(_("Session not found")) + + if session.type == Session.CARD_UPDATE_FROM_BILLING_PAGE and not user.has_billing_access: + raise JsonableError(_("Must be a billing administrator or an organization owner")) + return json_success(data={"session": session.to_dict()}) + + if stripe_payment_intent_id is not None: + payment_intent = PaymentIntent.objects.filter( + stripe_payment_intent_id=stripe_payment_intent_id, + customer=customer, + ).last() + + if payment_intent is None: + raise JsonableError(_("Payment intent not found")) + return json_success(data={"payment_intent": payment_intent.to_dict()}) + raise JsonableError(_("Pass stripe_session_id or stripe_payment_intent_id")) + + +@zulip_login_required +@has_request_variables +def event_status_page( + request: HttpRequest, + stripe_session_id: str = REQ(default=""), + stripe_payment_intent_id: str = REQ(default=""), +) -> HttpResponse: + context = { + "stripe_session_id": stripe_session_id, + "stripe_payment_intent_id": stripe_payment_intent_id, + } + return render(request, "corporate/event_status.html", context=context) diff --git a/corporate/views/session.py b/corporate/views/session.py new file mode 100644 index 0000000000..15a24126a5 --- /dev/null +++ b/corporate/views/session.py @@ -0,0 +1,95 @@ +import logging + +import stripe +from django.http import HttpRequest, HttpResponse +from django.utils.translation import gettext as _ + +from corporate.models import PaymentIntent, Session, get_customer_by_realm +from zerver.decorator import require_billing_access, require_organization_member +from zerver.lib.exceptions import JsonableError +from zerver.lib.request import REQ, has_request_variables +from zerver.lib.response import json_success +from zerver.models import UserProfile + +billing_logger = logging.getLogger("corporate.stripe") + + +@require_billing_access +@has_request_variables +def start_card_update_stripe_session(request: HttpRequest, user: UserProfile) -> HttpResponse: + customer = get_customer_by_realm(user.realm) + assert customer + stripe_session = stripe.checkout.Session.create( + cancel_url=f"{user.realm.uri}/billing/", + customer=customer.stripe_customer_id, + metadata={ + "type": "card_update", + }, + mode="setup", + payment_method_types=["card"], + success_url=f"{user.realm.uri}/billing/event_status?stripe_session_id={{CHECKOUT_SESSION_ID}}", + ) + Session.objects.create( + stripe_session_id=stripe_session.id, + customer=customer, + type=Session.CARD_UPDATE_FROM_BILLING_PAGE, + ) + return json_success( + data={ + "stripe_session_url": stripe_session.url, + "stripe_session_id": stripe_session.id, + } + ) + + +@require_organization_member +@has_request_variables +def start_retry_payment_intent_session( + request: HttpRequest, user: UserProfile, stripe_payment_intent_id: str = REQ() +) -> HttpResponse: + customer = get_customer_by_realm(user.realm) + if customer is None: + raise JsonableError(_("Please create a customer first.")) + + try: + payment_intent = PaymentIntent.objects.get( + stripe_payment_intent_id=stripe_payment_intent_id, customer=customer + ) + except PaymentIntent.DoesNotExist: + raise JsonableError(_("Invalid payment intent id.")) + + stripe_payment_intent = stripe.PaymentIntent.retrieve(stripe_payment_intent_id) + + if stripe_payment_intent.status == "succeeded": + raise JsonableError(_("Payment already succeeded.")) + + if ( + stripe_payment_intent.status == "processing" + ): # nocoverage: Hard to arrive at this state using card + raise JsonableError(_("Payment processing.")) + + metadata = stripe_payment_intent.metadata + stripe_session = stripe.checkout.Session.create( + cancel_url=f"{user.realm.uri}/upgrade/", + customer=customer.stripe_customer_id, + metadata=metadata, + setup_intent_data={"metadata": metadata}, + mode="setup", + payment_method_types=["card"], + success_url=f"{user.realm.uri}/billing/event_status?stripe_session_id={{CHECKOUT_SESSION_ID}}", + ) + session = Session.objects.create( + stripe_session_id=stripe_session.id, + customer=customer, + type=Session.RETRY_UPGRADE_WITH_ANOTHER_PAYMENT_METHOD, + ) + + session.payment_intent = payment_intent + session.save(update_fields=["payment_intent"]) + session.save() + return json_success( + data={ + "stripe_session_id": stripe_session.id, + "stripe_session_url": stripe_session.url, + } + ) diff --git a/corporate/views/upgrade.py b/corporate/views/upgrade.py index df603304ad..d3462810b5 100644 --- a/corporate/views/upgrade.py +++ b/corporate/views/upgrade.py @@ -2,6 +2,7 @@ import logging from decimal import Decimal from typing import Any, Dict, Optional +import stripe from django import forms from django.conf import settings from django.core import signing @@ -13,19 +14,24 @@ from django.urls import reverse from corporate.lib.stripe import ( DEFAULT_INVOICE_DAYS_UNTIL_DUE, MIN_INVOICED_LICENSES, - STRIPE_PUBLISHABLE_KEY, BillingError, + compute_plan_parameters, + ensure_realm_does_not_have_active_plan, get_latest_seat_count, + is_free_trial_offer_enabled, is_sponsored_realm, process_initial_upgrade, sign_string, unsign_string, + update_or_create_stripe_customer, update_sponsorship_status, validate_licenses, ) from corporate.lib.support import get_support_url from corporate.models import ( CustomerPlan, + PaymentIntent, + Session, ZulipSponsorshipRequest, get_current_plan_by_customer, get_customer_by_realm, @@ -58,23 +64,87 @@ def check_upgrade_parameters( schedule: str, license_management: Optional[str], licenses: Optional[int], - has_stripe_token: bool, seat_count: int, ) -> None: if billing_modality not in VALID_BILLING_MODALITY_VALUES: # nocoverage - raise BillingError("unknown billing_modality") + raise BillingError("unknown billing_modality", "") if schedule not in VALID_BILLING_SCHEDULE_VALUES: # nocoverage raise BillingError("unknown schedule") if license_management not in VALID_LICENSE_MANAGEMENT_VALUES: # nocoverage raise BillingError("unknown license_management") + validate_licenses(billing_modality == "charge_automatically", licenses, seat_count) - charge_automatically = False - if billing_modality == "charge_automatically": - charge_automatically = True - if not has_stripe_token: - raise BillingError("autopay with no card") - validate_licenses(charge_automatically, licenses, seat_count) +def setup_upgrade_checkout_session_and_payment_intent( + user: UserProfile, + seat_count: int, + licenses: int, + license_management: str, + billing_schedule: int, + billing_modality: str, + onboarding: bool, +) -> stripe.checkout.Session: + customer = update_or_create_stripe_customer(user) + assert customer is not None # for mypy + free_trial = is_free_trial_offer_enabled() + _, _, _, price_per_license = compute_plan_parameters( + CustomerPlan.STANDARD, + license_management == "automatic", + billing_schedule, + customer.default_discount, + free_trial, + ) + metadata = { + "billing_modality": billing_modality, + "billing_schedule": billing_schedule, + "licenses": licenses, + "license_management": license_management, + "price_per_license": price_per_license, + "seat_count": seat_count, + "type": "upgrade", + "user_email": user.delivery_email, + "realm_id": user.realm.id, + "realm_str": user.realm.string_id, + } + if free_trial: + if onboarding: + session_type = Session.FREE_TRIAL_UPGRADE_FROM_ONBOARDING_PAGE + else: + session_type = Session.FREE_TRIAL_UPGRADE_FROM_BILLING_PAGE + payment_intent = None + else: + session_type = Session.UPGRADE_FROM_BILLING_PAGE + stripe_payment_intent = stripe.PaymentIntent.create( + amount=price_per_license * licenses, + currency="usd", + customer=customer.stripe_customer_id, + description=f"Upgrade to Zulip Standard, ${price_per_license/100} x {licenses}", + receipt_email=user.delivery_email, + confirm=False, + statement_descriptor="Zulip Standard", + metadata=metadata, + ) + payment_intent = PaymentIntent.objects.create( + customer=customer, + stripe_payment_intent_id=stripe_payment_intent.id, + status=PaymentIntent.get_status_integer_from_status_text(stripe_payment_intent.status), + ) + stripe_session = stripe.checkout.Session.create( + cancel_url=f"{user.realm.uri}/upgrade/", + customer=customer.stripe_customer_id, + mode="setup", + payment_method_types=["card"], + metadata=metadata, + setup_intent_data={"metadata": metadata}, + success_url=f"{user.realm.uri}/billing/event_status?stripe_session_id={{CHECKOUT_SESSION_ID}}", + ) + session = Session.objects.create( + customer=customer, stripe_session_id=stripe_session.id, type=session_type + ) + if payment_intent is not None: + session.payment_intent = payment_intent + session.save(update_fields=["payment_intent"]) + return stripe_session @require_organization_member @@ -86,13 +156,13 @@ def upgrade( schedule: str = REQ(str_validator=check_string_in(VALID_BILLING_SCHEDULE_VALUES)), signed_seat_count: str = REQ(), salt: str = REQ(), + onboarding: bool = REQ(default=False, json_validator=check_bool), license_management: Optional[str] = REQ( default=None, str_validator=check_string_in(VALID_LICENSE_MANAGEMENT_VALUES) ), licenses: Optional[int] = REQ(json_validator=check_int, default=None), - stripe_token: Optional[str] = REQ(default=None), ) -> HttpResponse: - + ensure_realm_does_not_have_active_plan(user.realm) try: seat_count = unsign_seat_count(signed_seat_count, salt) if billing_modality == "charge_automatically" and license_management == "automatic": @@ -101,43 +171,61 @@ def upgrade( schedule = "annual" license_management = "manual" check_upgrade_parameters( - billing_modality, - schedule, - license_management, - licenses, - stripe_token is not None, - seat_count, + billing_modality, schedule, license_management, licenses, seat_count ) - assert licenses is not None + assert licenses is not None and license_management is not None automanage_licenses = license_management == "automatic" + charge_automatically = billing_modality == "charge_automatically" billing_schedule = {"annual": CustomerPlan.ANNUAL, "monthly": CustomerPlan.MONTHLY}[ schedule ] - process_initial_upgrade(user, licenses, automanage_licenses, billing_schedule, stripe_token) - except BillingError as e: - if not settings.TEST_SUITE: # nocoverage - billing_logger.warning( - "BillingError during upgrade: %s. user=%s, realm=%s (%s), billing_modality=%s, " - "schedule=%s, license_management=%s, licenses=%s, has stripe_token: %s", - e.error_description, - user.id, - user.realm.id, - user.realm.string_id, - billing_modality, - schedule, - license_management, + if charge_automatically: + stripe_checkout_session = setup_upgrade_checkout_session_and_payment_intent( + user, + seat_count, licenses, - stripe_token is not None, + license_management, + billing_schedule, + billing_modality, + onboarding, ) - raise + return json_success( + data={ + "stripe_session_url": stripe_checkout_session.url, + "stripe_session_id": stripe_checkout_session.id, + } + ) + else: + process_initial_upgrade( + user, + licenses, + automanage_licenses, + billing_schedule, + False, + is_free_trial_offer_enabled(), + ) + return json_success(data={}) + + except BillingError as e: + billing_logger.warning( + "BillingError during upgrade: %s. user=%s, realm=%s (%s), billing_modality=%s, " + "schedule=%s, license_management=%s, licenses=%s", + e.error_description, + user.id, + user.realm.id, + user.realm.string_id, + billing_modality, + schedule, + license_management, + licenses, + ) + raise e except Exception: billing_logger.exception("Uncaught exception in billing:", stack_info=True) error_message = BillingError.CONTACT_SUPPORT.format(email=settings.ZULIP_ADMINISTRATOR) error_description = "uncaught exception during upgrade" raise BillingError(error_description, error_message) - else: - return json_success() @zulip_login_required @@ -172,7 +260,6 @@ def initial_upgrade( signed_seat_count, salt = sign_string(str(seat_count)) context: Dict[str, Any] = { "realm": user.realm, - "publishable_key": STRIPE_PUBLISHABLE_KEY, "email": user.delivery_email, "seat_count": seat_count, "signed_seat_count": signed_seat_count, diff --git a/corporate/views/webhook.py b/corporate/views/webhook.py new file mode 100644 index 0000000000..1eed6e1039 --- /dev/null +++ b/corporate/views/webhook.py @@ -0,0 +1,98 @@ +import json +import logging + +import stripe +from django.conf import settings +from django.contrib.contenttypes.models import ContentType +from django.http import HttpRequest, HttpResponse +from django.views.decorators.csrf import csrf_exempt + +from corporate.lib.stripe_event_handler import ( + handle_checkout_session_completed_event, + handle_payment_intent_payment_failed_event, + handle_payment_intent_succeeded_event, +) +from corporate.models import Event, PaymentIntent, Session +from zproject.config import get_secret + +billing_logger = logging.getLogger("corporate.stripe") + + +@csrf_exempt +def stripe_webhook(request: HttpRequest) -> HttpResponse: + stripe_webhook_endpoint_secret = get_secret("stripe_webhook_endpoint_secret", "") + if ( + stripe_webhook_endpoint_secret and not settings.TEST_SUITE + ): # nocoverage: We can't verify the signature in test suite since we fetch the events + # from Stripe events API and manually post to the webhook endpoint. + try: + stripe_event = stripe.Webhook.construct_event( + request.body, + request.META.get("HTTP_STRIPE_SIGNATURE"), + stripe_webhook_endpoint_secret, + ) + except ValueError: + return HttpResponse(status=400) + except stripe.error.SignatureVerificationError: + return HttpResponse(status=400) + else: + assert not settings.PRODUCTION + try: + stripe_event = stripe.Event.construct_from(json.loads(request.body), stripe.api_key) + except Exception: + return HttpResponse(status=400) + + if stripe_event.type not in [ + "checkout.session.completed", + "payment_intent.succeeded", + "payment_intent.payment_failed", + ]: + return HttpResponse(status=200) + + if Event.objects.filter(stripe_event_id=stripe_event.id).exists(): + return HttpResponse(status=200) + + event = Event(stripe_event_id=stripe_event.id, type=stripe_event.type) + + if stripe_event.type == "checkout.session.completed": + stripe_session = stripe_event.data.object + assert isinstance(stripe_session, stripe.checkout.Session) + try: + session = Session.objects.get(stripe_session_id=stripe_session.id) + except Session.DoesNotExist: + return HttpResponse(status=200) + event.content_type = ContentType.objects.get_for_model(Session) + event.object_id = session.id + event.save() + handle_checkout_session_completed_event(stripe_session, event) + elif stripe_event.type == "payment_intent.succeeded": + stripe_payment_intent = stripe_event.data.object + assert isinstance(stripe_payment_intent, stripe.PaymentIntent) + try: + payment_intent = PaymentIntent.objects.get( + stripe_payment_intent_id=stripe_payment_intent.id + ) + except PaymentIntent.DoesNotExist: + # PaymentIntent that was not manually created from the billing system. + # Could be an Invoice getting paid which is is not an event we are interested in. + return HttpResponse(status=200) + event.content_type = ContentType.objects.get_for_model(PaymentIntent) + event.object_id = payment_intent.id + event.save() + handle_payment_intent_succeeded_event(stripe_payment_intent, event) + elif stripe_event.type == "payment_intent.payment_failed": + stripe_payment_intent = stripe_event.data.object + try: + assert isinstance(stripe_payment_intent, stripe.PaymentIntent) + payment_intent = PaymentIntent.objects.get( + stripe_payment_intent_id=stripe_payment_intent.id + ) + except PaymentIntent.DoesNotExist: + # PaymentIntent that was not manually created from the billing system. + # Could be an Invoice getting paid which is is not an event we are interested in. + return HttpResponse(status=200) + event.content_type = ContentType.objects.get_for_model(PaymentIntent) + event.object_id = payment_intent.id + event.save() + handle_payment_intent_payment_failed_event(stripe_payment_intent, event) + return HttpResponse(status=200) diff --git a/docs/subsystems/billing.md b/docs/subsystems/billing.md index 3057888f5e..f895e4e385 100644 --- a/docs/subsystems/billing.md +++ b/docs/subsystems/billing.md @@ -1,20 +1,68 @@ -# Billing +# Billing (Development) -Zulip uses a third party (Stripe) for billing, so working on the billing -system requires a little bit of setup. +This section deals with developing and testing the billing system. -To set up the development environment to work on the billing code: +## Common setup - Create a Stripe account + - Make sure that the country of your Stripe account is set to USA when you create the account. + - You might probably need to use a VPN for this. - Ensure that the [API version](https://stripe.com/docs/api/versioning) of your Stripe account is same as `STRIPE_API_VERSION` defined in `corporate/lib/stripe.py`. You can upgrade to a higher version from the Stripe dashboard. -- Go to , and add the - publishable key and secret key as `stripe_publishable_key` and - `stripe_secret_key` to `zproject/dev-secrets.conf`. +- Set the private API key. + - Go to + - Add `stripe_secret_key` to `zproject/dev-secrets.conf`. -Nearly all the billing-relevant code lives in `corporate/`. +## Manual testing + +Manual testing involves testing the various flows like upgrade, card change etc manually through the browser. This is the bare minimum testing that you need to do when you review a PR or is working on adding a new feature. + +### Setup + +Apart from the common setup mentioned above, you also need to setup your dev environment to receive webhook events +from Stripe. + +- Install Stripe CLI by following the instructions at in your machine locally. +- Login to Stripe CLI by `stripe login` +- Run run the Stripe CLI to forward all the Stripe webhook events to our billing system webhook endpoint. + `stripe listen --forward-to http://localhost:9991/stripe/webhook/` +- Wait for the `stripe listen` command in the previous step to output the webhook signing secret. + - The signing secret would be used by our billing system to verify that the events that are sent to our webhook endpoint is sent by Stripe and not by an intruder. In production, there is no Stripe CLI, so the step for configuring this is a bit different. See the production section for more details. +- Copy the webhook signing secret and set it as `stripe_webhook_endpoint_secret` in `zproject/dev-secrets.conf`. +- The billing system is now all set to receive webhook events from Stripe. + +### Test card numbers + +Stripe provides various card numbers to test for specific responses from Stripe. Thee commonly used ones are mentioned in the documentation below wherever appropriate. The full list is available at + +### Flows to test + +These are the flows that you can test manually from the browser. + +- Upgrade a Zulip organization + - Flows to test + - When free trial is not enabled, ie `FREE_TRIAL_DAYS` is not set to any value in `dev_settings.py`. Free trial is rarely enabled. So when you are manually testing make sure that `FREE_TRIAL_DAYS` is not set to any value unless you want to test the free trial functionality. + - Using a valid card number like `4242 4242 4242 4242` + - Using an invalid card number like `4000000000000341` which will add the card to the Customer account but charge fails. + - Retry the upgrade by adding a new card by clicking on the retry upgrade link. + - Retry the upgrade from scratch. + - Upgrade an organization when free trial is enabled. You can set `FREE_TRIAL_DAYS` to a number greater than `0` in `dev_settings.py` to enable free trial. This is a setting that is not commonly used. + - There are two different flows to test here. + - Right after the organization is created by following the instructions in the onboarding page. + - Make sure that after the upgrade is complete the billing page shows a link to go to the organization. + - By manually going to billing page and upgrading the organization. + - What to test? + - The flows work from start to end as expected. + - We show appropriate success and error messages to users. + - Charges are made or not made(free trial) as expected. You can check this through the Stripe dashboard. Though not that super important since we check these in automated tests anyway. + - Testing that involves renewal and all is not possible through manual testing. It is taken care of in backend tests. +- Change the card + - Flows to test + - Go to the billing page of an organization that is upgraded using card. Then try changing the card to another valid card like `5555555555554444`. + - Make sure that the flow completes without any error and the new card details is now shown in the billing page instead of the old card. + - You can also try adding a card number that results in it getting attached to the customer but charges fails. But to test that you need pending invoices since we try to pay pending invoices when the card is changed. It's taken care of in backend tests so it's not super necessary to test manually. ## Upgrading Stripe API versions diff --git a/frontend_tests/node_tests/billing.js b/frontend_tests/node_tests/billing.js index deddc32c70..6a7df0085f 100644 --- a/frontend_tests/node_tests/billing.js +++ b/frontend_tests/node_tests/billing.js @@ -14,10 +14,6 @@ const dom = new JSDOM(template, {pretendToBeVisual: true}); const document = dom.window.document; const location = set_global("location", {}); -const StripeCheckout = set_global("StripeCheckout", { - configure: () => {}, -}); - const helpers = mock_esm("../../static/js/billing/helpers", { set_tab: () => {}, }); @@ -25,91 +21,45 @@ const helpers = mock_esm("../../static/js/billing/helpers", { const billing = zrequire("billing/billing"); run_test("initialize", ({override}) => { - let token_func; - let set_tab_called = false; override(helpers, "set_tab", (page_name) => { assert.equal(page_name, "billing"); set_tab_called = true; }); + $.get_initialize_function()(); + assert.ok(set_tab_called); +}); +run_test("card_update", ({override}) => { + override(helpers, "set_tab", () => {}); let create_ajax_request_called = false; - function card_change_ajax( - url, - form_name, - stripe_token, - ignored_inputs, - method, - success_callback, - ) { - assert.equal(url, "/json/billing/sources/change"); + function card_change_ajax(url, form_name, ignored_inputs, method, success_callback) { + assert.equal(url, "/json/billing/session/start_card_update_session"); assert.equal(form_name, "cardchange"); - assert.equal(stripe_token, "stripe_token"); assert.deepEqual(ignored_inputs, []); assert.equal(method, "POST"); location.replace = (new_location) => { - assert.equal(new_location, "/billing"); + assert.equal(new_location, "https://stripe_session_url"); }; - success_callback(); + success_callback({stripe_session_url: "https://stripe_session_url"}); create_ajax_request_called = true; } - let open_func_called = false; - const open_func = (config_opts) => { - assert.equal(config_opts.name, "Zulip"); - assert.equal(config_opts.zipCode, true); - assert.equal(config_opts.billingAddress, true); - assert.equal(config_opts.panelLabel, "Update card"); - assert.equal(config_opts.label, "Update card"); - assert.equal(config_opts.allowRememberMe, false); - assert.equal(config_opts.email, "{{stripe_email}}"); - - token_func("stripe_token"); - open_func_called = true; - }; - - let stripe_checkout_configure_called = false; - override(StripeCheckout, "configure", (config_opts) => { - assert.equal(config_opts.image, "/static/images/logo/zulip-icon-128x128.png"); - assert.equal(config_opts.locale, "auto"); - assert.equal(config_opts.key, "{{publishable_key}}"); - token_func = config_opts.token; - stripe_checkout_configure_called = true; - - return { - open: open_func, - }; - }); - - $("#payment-method").data = (key) => - document.querySelector("#payment-method").getAttribute("data-" + key); - $.get_initialize_function()(); - assert.ok(set_tab_called); - assert.ok(stripe_checkout_configure_called); - const e = { - preventDefault: () => {}, - }; const update_card_click_handler = $("#update-card-button").get_on_handler("click"); with_field(helpers, "create_ajax_request", card_change_ajax, () => { - update_card_click_handler(e); + update_card_click_handler({preventDefault: () => {}}); assert.ok(create_ajax_request_called); - assert.ok(open_func_called); }); +}); - create_ajax_request_called = false; - function plan_change_ajax( - url, - form_name, - stripe_token, - ignored_inputs, - method, - success_callback, - ) { +run_test("planchange", ({override}) => { + override(helpers, "set_tab", () => {}); + let create_ajax_request_called = false; + function plan_change_ajax(url, form_name, ignored_inputs, method, success_callback) { assert.equal(url, "/json/billing/plan"); assert.equal(form_name, "planchange"); - assert.equal(stripe_token, undefined); assert.deepEqual(ignored_inputs, []); assert.equal(method, "PATCH"); location.replace = (new_location) => { @@ -119,25 +69,22 @@ run_test("initialize", ({override}) => { create_ajax_request_called = true; } + $.get_initialize_function()(); const change_plan_status_click_handler = $("#change-plan-status").get_on_handler("click"); with_field(helpers, "create_ajax_request", plan_change_ajax, () => { - change_plan_status_click_handler(e); + change_plan_status_click_handler({preventDefault: () => {}}); assert.ok(create_ajax_request_called); }); +}); +run_test("licensechange", ({override}) => { + override(helpers, "set_tab", () => {}); + let create_ajax_request_called = false; create_ajax_request_called = false; - function license_change_ajax( - url, - form_name, - stripe_token, - ignored_inputs, - method, - success_callback, - ) { + function license_change_ajax(url, form_name, ignored_inputs, method, success_callback) { assert.equal(url, "/json/billing/plan"); assert.equal(form_name, "licensechange"); - assert.equal(stripe_token, undefined); assert.deepEqual(ignored_inputs, ["licenses_at_next_renewal"]); assert.equal(method, "PATCH"); location.replace = (new_location) => { @@ -156,10 +103,12 @@ run_test("initialize", ({override}) => { create_update_license_request_called = true; }); + $.get_initialize_function()(); + const confirm_license_update_click_handler = $("#confirm-license-update-button").get_on_handler( "click", ); - confirm_license_update_click_handler(e); + confirm_license_update_click_handler({preventDefault: () => {}}); assert.ok(create_update_license_request_called); let confirm_license_modal_shown = false; @@ -176,13 +125,13 @@ run_test("initialize", ({override}) => { create_update_license_request_called = false; const update_licenses_button_click_handler = $("#update-licenses-button").get_on_handler("click"); - update_licenses_button_click_handler(e); + update_licenses_button_click_handler({preventDefault: () => {}}); assert.ok(create_update_license_request_called); assert.ok(!confirm_license_modal_shown); $("#new_licenses_input").val = () => 25; create_update_license_request_called = false; - update_licenses_button_click_handler(e); + update_licenses_button_click_handler({preventDefault: () => {}}); assert.ok(!create_update_license_request_called); assert.ok(confirm_license_modal_shown); @@ -203,14 +152,12 @@ run_test("initialize", ({override}) => { function licenses_at_next_renewal_change_ajax( url, form_name, - stripe_token, ignored_inputs, method, success_callback, ) { assert.equal(url, "/json/billing/plan"); assert.equal(form_name, "licensechange"); - assert.equal(stripe_token, undefined); assert.deepEqual(ignored_inputs, ["licenses"]); assert.equal(method, "PATCH"); location.replace = (new_location) => { @@ -220,7 +167,7 @@ run_test("initialize", ({override}) => { create_ajax_request_called = true; } with_field(helpers, "create_ajax_request", licenses_at_next_renewal_change_ajax, () => { - update_next_renewal_licenses_button_click_handler(e); + update_next_renewal_licenses_button_click_handler({preventDefault: () => {}}); assert.ok(create_ajax_request_called); }); }); diff --git a/frontend_tests/node_tests/billing_helpers.js b/frontend_tests/node_tests/billing_helpers.js index fb1f22a957..a08a8e6877 100644 --- a/frontend_tests/node_tests/billing_helpers.js +++ b/frontend_tests/node_tests/billing_helpers.js @@ -28,11 +28,11 @@ const location = set_global("location", dom.window.location); const helpers = zrequire("billing/helpers"); run_test("create_ajax_request", ({override}) => { - const form_loading_indicator = "#autopay_loading_indicator"; - const form_input_section = "#autopay-input-section"; - const form_success = "#autopay-success"; - const form_error = "#autopay-error"; - const form_loading = "#autopay-loading"; + const form_loading_indicator = "#invoice_loading_indicator"; + const form_input_section = "#invoice-input-section"; + const form_success = "#invoice-success"; + const form_error = "#invoice-error"; + const form_loading = "#invoice-loading"; const zulip_limited_section = "#zulip-limited-section"; const free_trial_alert_message = "#free-trial-alert-message"; @@ -108,7 +108,7 @@ run_test("create_ajax_request", ({override}) => { state.free_trial_alert_message_hide += 1; }; - $("#autopay-form").serializeArray = () => jquery("#autopay-form").serializeArray(); + $("#invoice-form").serializeArray = () => jquery("#invoice-form").serializeArray(); let success_callback_called = false; const success_callback = (response) => { @@ -128,13 +128,11 @@ run_test("create_ajax_request", ({override}) => { assert.equal(type, "PATCH"); assert.equal(url, "/json/billing/upgrade"); - assert.equal(Object.keys(data).length, 7); - assert.equal(data.stripe_token, "stripe_token_id"); - assert.equal(data.seat_count, "{{ seat_count }}"); + assert.equal(Object.keys(data).length, 5); assert.equal(data.signed_seat_count, "{{ signed_seat_count }}"); assert.equal(data.salt, "{{ salt }}"); - assert.equal(data.billing_modality, "charge_automatically"); - assert.equal(data.schedule, "monthly"); + assert.equal(data.billing_modality, "send_invoice"); + assert.equal(data.schedule, "annual"); assert.equal(data.licenses, ""); assert.ok(!("license_management" in data)); @@ -170,8 +168,7 @@ run_test("create_ajax_request", ({override}) => { helpers.create_ajax_request( "/json/billing/upgrade", - "autopay", - {id: "stripe_token_id"}, + "invoice", ["license_management"], "PATCH", success_callback, diff --git a/frontend_tests/node_tests/event_status.js b/frontend_tests/node_tests/event_status.js new file mode 100644 index 0000000000..53deaa1f81 --- /dev/null +++ b/frontend_tests/node_tests/event_status.js @@ -0,0 +1,345 @@ +"use strict"; + +const {strict: assert} = require("assert"); + +const {set_global, zrequire, mock_esm} = require("../zjsunit/namespace"); +const {run_test} = require("../zjsunit/test"); +const $ = require("../zjsunit/zjquery"); + +const event_status = zrequire("billing/event_status"); +const helpers = mock_esm("../../static/js/billing/helpers"); + +run_test("initialize_retry_with_another_card_link_click_handler", ({override}) => { + override(helpers, "create_ajax_request", (url, form_name, ignored_inputs, method, callback) => { + assert.equal(url, "/json/billing/session/start_retry_payment_intent_session"); + assert.equal(form_name, "restartsession"); + assert.deepEqual(ignored_inputs, []); + assert.equal(method, "POST"); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal(new_location, "stripe_session_url"); + }, + }, + }); + callback({stripe_session_url: "stripe_session_url"}); + }); + event_status.initialize_retry_with_another_card_link_click_handler(); + const retry_click_handler = $("#retry-with-another-card-link").get_on_handler("click"); + retry_click_handler({preventDefault: () => {}}); +}); + +run_test("check_status", async ({override}) => { + $("#data").attr("data-stripe-session-id", "stripe_session_id"); + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "created", + }, + }; + }); + let completed = await event_status.check_status(); + assert.ok(!completed); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + event_handler: { + status: "started", + }, + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(!completed); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + type: "upgrade_from_billing_page", + stripe_payment_intent_id: "spid_1A", + event_handler: { + status: "succeeded", + }, + }, + }; + }); + set_global("setTimeout", (callback_func) => { + callback_func(); + }); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal( + new_location, + "/billing/event_status?stripe_payment_intent_id=spid_1A", + ); + }, + }, + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-success").text(), + "We have received your billing details. Attempting to create charge...", + ); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + type: "retry_upgrade_with_another_payment_method", + stripe_payment_intent_id: "spid_1B", + event_handler: { + status: "succeeded", + }, + }, + }; + }); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal( + new_location, + "/billing/event_status?stripe_payment_intent_id=spid_1B", + ); + }, + }, + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-success").text(), + "We have received your billing details. Attempting to create charge...", + ); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + type: "free_trial_upgrade_from_billing_page", + event_handler: { + status: "succeeded", + }, + }, + }; + }); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal(new_location, "/billing"); + }, + }, + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-success").text(), + "Your free trial of Zulip Standard has been activated. You would be redirected to the billing page soon.", + ); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + type: "free_trial_upgrade_from_onboarding_page", + event_handler: { + status: "succeeded", + }, + }, + }; + }); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal(new_location, "/billing?onboarding=true"); + }, + }, + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-success").text(), + "Your free trial of Zulip Standard has been activated. You would be redirected to the billing page soon.", + ); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + type: "card_update_from_billing_page", + event_handler: { + status: "succeeded", + }, + }, + }; + }); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal(new_location, "/billing#payment-method"); + }, + }, + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-success").text(), + "Your card has been updated. You would be redirected to the billing page soon.", + ); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_session_id: "stripe_session_id"}); + return { + session: { + status: "completed", + type: "card_update_from_billing_page", + event_handler: { + status: "failed", + error: { + message: "Something went wrong.", + }, + }, + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal($("#webhook-error").text(), "Something went wrong."); + + $("#data").attr("data-stripe-session-id", ""); + $("#data").attr("data-stripe-payment-intent-id", "stripe_payment_intent_id"); + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_payment_intent_id: "stripe_payment_intent_id"}); + return { + payment_intent: { + status: "requires_payment_method", + last_payment_error: { + message: "Your Card was declined.", + }, + event_handler: { + status: "succeeded", + }, + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-error").html(), + 'Your Card was declined.
You can try adding another card or or retry the upgrade.', + ); + assert.ok($("#retry-with-another-card-link").get_on_handler("click")); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_payment_intent_id: "stripe_payment_intent_id"}); + return { + payment_intent: { + status: "requires_payment_method", + last_payment_error: { + message: "Your Card was declined.", + }, + event_handler: { + status: "failed", + error: { + message: "Something went wrong.", + }, + }, + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal($("#webhook-error").text(), "Something went wrong."); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_payment_intent_id: "stripe_payment_intent_id"}); + return { + payment_intent: { + status: "requires_payment_method", + event_handler: { + status: "started", + }, + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(!completed); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_payment_intent_id: "stripe_payment_intent_id"}); + return { + payment_intent: { + status: "succeeded", + event_handler: { + status: "succeeded", + }, + }, + }; + }); + set_global("window", { + location: { + replace: (new_location) => { + assert.equal(new_location, "/billing/"); + }, + }, + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal( + $("#webhook-success").text(), + "Charge created successfully. Your organization has been upgraded. Redirecting to billing page...", + ); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_payment_intent_id: "stripe_payment_intent_id"}); + return { + payment_intent: { + status: "succeeded", + event_handler: { + status: "failed", + error: { + message: "Something went wrong.", + }, + }, + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(completed); + assert.equal($("#webhook-error").text(), "Something went wrong."); + + override($, "get", async (url, data) => { + assert.equal(url, "/json/billing/event/status"); + assert.deepEqual(data, {stripe_payment_intent_id: "stripe_payment_intent_id"}); + return { + payment_intent: { + status: "requires_action", + }, + }; + }); + completed = await event_status.check_status(); + assert.ok(!completed); +}); diff --git a/frontend_tests/node_tests/upgrade.js b/frontend_tests/node_tests/upgrade.js index c445246fbf..f6e00b2db4 100644 --- a/frontend_tests/node_tests/upgrade.js +++ b/frontend_tests/node_tests/upgrade.js @@ -16,10 +16,6 @@ const dom = new JSDOM(template, {pretendToBeVisual: true}); const document = dom.window.document; const location = set_global("location", {}); -const StripeCheckout = set_global("StripeCheckout", { - configure: noop, -}); - const helpers = zrequire("../js/billing/helpers"); zrequire("../js/billing/upgrade"); @@ -29,7 +25,6 @@ run_test("initialize", ({override}) => { page_params.seat_count = 8; page_params.percent_off = 20; - let token_func; override(helpers, "set_tab", (page_name) => { assert.equal(page_name, "upgrade"); }); @@ -37,22 +32,21 @@ run_test("initialize", ({override}) => { let create_ajax_request_form_call_count = 0; helpers.__Rewire__( "create_ajax_request", - (url, form_name, stripe_token, ignored_inputs, type, success_callback) => { + (url, form_name, ignored_inputs, type, success_callback) => { create_ajax_request_form_call_count += 1; switch (form_name) { case "autopay": assert.equal(url, "/json/billing/upgrade"); - assert.equal(stripe_token, "stripe_add_card_token"); assert.deepEqual(ignored_inputs, []); assert.equal(type, "POST"); location.replace = (new_location) => { - assert.equal(new_location, "/billing"); + assert.equal(new_location, "https://stripe_session_url"); }; - success_callback(); + // mock redirectToCheckout and verify its called + success_callback({stripe_session_url: "https://stripe_session_url"}); break; case "invoice": assert.equal(url, "/json/billing/upgrade"); - assert.equal(stripe_token, undefined); assert.deepEqual(ignored_inputs, []); assert.equal(type, "POST"); location.replace = (new_location) => { @@ -62,7 +56,6 @@ run_test("initialize", ({override}) => { break; case "sponsorship": assert.equal(url, "/json/billing/sponsorship"); - assert.equal(stripe_token, undefined); assert.deepEqual(ignored_inputs, []); assert.equal(type, "POST"); location.replace = (new_location) => { @@ -76,29 +69,6 @@ run_test("initialize", ({override}) => { }, ); - const open_func = (config_opts) => { - assert.equal(config_opts.name, "Zulip"); - assert.equal(config_opts.zipCode, true); - assert.equal(config_opts.billingAddress, true); - assert.equal(config_opts.panelLabel, "Make payment"); - assert.equal(config_opts.label, "Add card"); - assert.equal(config_opts.allowRememberMe, false); - assert.equal(config_opts.email, "{{ email }}"); - assert.equal(config_opts.description, "Zulip Cloud Standard"); - token_func("stripe_add_card_token"); - }; - - StripeCheckout.configure = (config_opts) => { - assert.equal(config_opts.image, "/static/images/logo/zulip-icon-128x128.png"); - assert.equal(config_opts.locale, "auto"); - assert.equal(config_opts.key, "{{ publishable_key }}"); - token_func = config_opts.token; - - return { - open: open_func, - }; - }; - override(helpers, "show_license_section", (section) => { assert.equal(section, "automatic"); }); @@ -118,7 +88,8 @@ run_test("initialize", ({override}) => { $("#autopay-form").data = (key) => document.querySelector("#autopay-form").getAttribute("data-" + key); - $.get_initialize_function()(); + const initialize_function = $.get_initialize_function(); + initialize_function(); const e = { preventDefault: noop, @@ -197,8 +168,6 @@ run_test("initialize", ({override}) => { }); run_test("autopay_form_fields", () => { - assert.equal(document.querySelector("#autopay-form").dataset.key, "{{ publishable_key }}"); - assert.equal(document.querySelector("#autopay-form").dataset.email, "{{ email }}"); assert.equal( document.querySelector("#autopay-form [name=seat_count]").value, "{{ seat_count }}", diff --git a/static/js/billing/billing.js b/static/js/billing/billing.js index 4ae00803a4..bd982a4798 100644 --- a/static/js/billing/billing.js +++ b/static/js/billing/billing.js @@ -6,7 +6,6 @@ export function create_update_license_request() { helpers.create_ajax_request( "/json/billing/plan", "licensechange", - undefined, ["licenses_at_next_renewal"], "PATCH", () => window.location.replace("/billing"), @@ -16,34 +15,17 @@ export function create_update_license_request() { export function initialize() { helpers.set_tab("billing"); - const stripe_key = $("#payment-method").data("key"); - const card_change_handler = StripeCheckout.configure({ - key: stripe_key, - image: "/static/images/logo/zulip-icon-128x128.png", - locale: "auto", - token(stripe_token) { - helpers.create_ajax_request( - "/json/billing/sources/change", - "cardchange", - stripe_token, - [], - "POST", - () => window.location.replace("/billing"), - ); - }, - }); - $("#update-card-button").on("click", (e) => { - const email = $("#payment-method").data("email"); - card_change_handler.open({ - name: "Zulip", - zipCode: true, - billingAddress: true, - panelLabel: "Update card", - email, - label: "Update card", - allowRememberMe: false, - }); + const success_callback = (response) => { + window.location.replace(response.stripe_session_url); + }; + helpers.create_ajax_request( + "/json/billing/session/start_card_update_session", + "cardchange", + [], + "POST", + success_callback, + ); e.preventDefault(); }); @@ -72,7 +54,6 @@ export function initialize() { helpers.create_ajax_request( "/json/billing/plan", "licensechange", - undefined, ["licenses"], "PATCH", () => window.location.replace("/billing"), @@ -80,13 +61,8 @@ export function initialize() { }); $("#change-plan-status").on("click", (e) => { - helpers.create_ajax_request( - "/json/billing/plan", - "planchange", - undefined, - [], - "PATCH", - () => window.location.replace("/billing"), + helpers.create_ajax_request("/json/billing/plan", "planchange", [], "PATCH", () => + window.location.replace("/billing"), ); e.preventDefault(); }); diff --git a/static/js/billing/event_status.js b/static/js/billing/event_status.js new file mode 100644 index 0000000000..ce82a69ce0 --- /dev/null +++ b/static/js/billing/event_status.js @@ -0,0 +1,165 @@ +import $ from "jquery"; + +import * as loading from "../loading"; + +import * as helpers from "./helpers"; + +function update_status_and_redirect(status_message, redirect_to) { + $("#webhook-loading").hide(); + $("#webhook-success").show(); + $("#webhook-success").text(status_message); + setTimeout(() => { + window.location.replace(redirect_to); + }, 5000); +} + +function show_error_message(message) { + $("#webhook-loading").hide(); + $("#webhook-error").show(); + $("#webhook-error").text(message); +} + +function show_html_error_message(rendered_message) { + $("#webhook-loading").hide(); + $("#webhook-error").show(); + $("#webhook-error").html(rendered_message); +} + +function handle_session_complete_event(session) { + let message = ""; + let redirect_to = ""; + switch (session.type) { + case "upgrade_from_billing_page": + case "retry_upgrade_with_another_payment_method": + message = "We have received your billing details. Attempting to create charge..."; + redirect_to = `/billing/event_status?stripe_payment_intent_id=${session.stripe_payment_intent_id}`; + break; + case "free_trial_upgrade_from_billing_page": + message = + "Your free trial of Zulip Standard has been activated. You would be redirected to the billing page soon."; + redirect_to = "/billing"; + break; + case "free_trial_upgrade_from_onboarding_page": + message = + "Your free trial of Zulip Standard has been activated. You would be redirected to the billing page soon."; + redirect_to = "/billing?onboarding=true"; + break; + case "card_update_from_billing_page": + message = + "Your card has been updated. You would be redirected to the billing page soon."; + redirect_to = "/billing#payment-method"; + } + update_status_and_redirect(message, redirect_to); +} + +async function stripe_checkout_session_status_check(stripe_session_id) { + const response = await $.get("/json/billing/event/status", {stripe_session_id}); + if (response.session.status === "created") { + return false; + } + if (response.session.event_handler.status === "started") { + return false; + } + if (response.session.event_handler.status === "succeeded") { + handle_session_complete_event(response.session); + return true; + } + if (response.session.event_handler.status === "failed") { + show_error_message(response.session.event_handler.error.message); + return true; + } + + return false; +} + +export function initialize_retry_with_another_card_link_click_handler() { + $("#retry-with-another-card-link").on("click", (e) => { + e.preventDefault(); + $("#webhook-error").hide(); + helpers.create_ajax_request( + "/json/billing/session/start_retry_payment_intent_session", + "restartsession", + [], + "POST", + (response) => { + window.location.replace(response.stripe_session_url); + }, + ); + }); +} + +export async function stripe_payment_intent_status_check(stripe_payment_intent_id) { + const response = await $.get("/json/billing/event/status", {stripe_payment_intent_id}); + + switch (response.payment_intent.status) { + case "requires_payment_method": + if (response.payment_intent.event_handler.status === "succeeded") { + show_html_error_message( + response.payment_intent.last_payment_error.message + + "
" + + 'You can try adding another card or or retry the upgrade.', + ); + initialize_retry_with_another_card_link_click_handler(); + return true; + } + if (response.payment_intent.event_handler.status === "failed") { + show_error_message(response.payment_intent.event_handler.error.message); + return true; + } + return false; + case "succeeded": + if (response.payment_intent.event_handler.status === "succeeded") { + update_status_and_redirect( + "Charge created successfully. Your organization has been upgraded. Redirecting to billing page...", + "/billing/", + ); + return true; + } + if (response.payment_intent.event_handler.status === "failed") { + show_error_message(response.payment_intent.event_handler.error.message); + return true; + } + return false; + default: + return false; + } +} + +export async function check_status() { + if ($("#data").attr("data-stripe-session-id")) { + return await stripe_checkout_session_status_check( + $("#data").attr("data-stripe-session-id"), + ); + } + return await stripe_payment_intent_status_check( + $("#data").attr("data-stripe-payment-intent-id"), + ); +} + +async function start_status_polling() { + let completed = false; + try { + completed = await check_status(); + } catch { + setTimeout(start_status_polling, 5000); + } + if (!completed) { + setTimeout(start_status_polling, 5000); + } +} + +async function initialize() { + const form_loading = "#webhook-loading"; + const form_loading_indicator = "#webhook_loading_indicator"; + + loading.make_indicator($(form_loading_indicator), { + text: "Processing ...", + abs_positioned: true, + }); + $(form_loading).show(); + await start_status_polling(); +} + +$(() => { + initialize(); +}); diff --git a/static/js/billing/helpers.js b/static/js/billing/helpers.js index 854746cf4e..c9314fa72a 100644 --- a/static/js/billing/helpers.js +++ b/static/js/billing/helpers.js @@ -6,7 +6,6 @@ import {page_params} from "../page_params"; export function create_ajax_request( url, form_name, - stripe_token = null, ignored_inputs = [], type = "POST", success_callback, @@ -32,9 +31,6 @@ export function create_ajax_request( $(free_trial_alert_message).hide(); const data = {}; - if (stripe_token) { - data.stripe_token = stripe_token.id; - } for (const item of form.serializeArray()) { if (ignored_inputs.includes(item.name)) { diff --git a/static/js/billing/upgrade.js b/static/js/billing/upgrade.js index 4b9301cf4f..b7ecc22f22 100644 --- a/static/js/billing/upgrade.js +++ b/static/js/billing/upgrade.js @@ -6,23 +6,6 @@ import * as helpers from "./helpers"; export const initialize = () => { helpers.set_tab("upgrade"); - - const add_card_handler = StripeCheckout.configure({ - key: $("#autopay-form").data("key"), - image: "/static/images/logo/zulip-icon-128x128.png", - locale: "auto", - token(stripe_token) { - helpers.create_ajax_request( - "/json/billing/upgrade", - "autopay", - stripe_token, - [], - "POST", - () => window.location.replace("/billing"), - ); - }, - }); - $("#add-card-button").on("click", (e) => { const license_management = $("input[type=radio][name=license_management]:checked").val(); if ( @@ -30,17 +13,17 @@ export const initialize = () => { ) { return; } - add_card_handler.open({ - name: "Zulip", - zipCode: true, - billingAddress: true, - panelLabel: "Make payment", - email: $("#autopay-form").data("email"), - label: "Add card", - allowRememberMe: false, - description: "Zulip Cloud Standard", - }); e.preventDefault(); + const success_callback = (response) => { + window.location.replace(response.stripe_session_url); + }; + helpers.create_ajax_request( + "/json/billing/upgrade", + "autopay", + [], + "POST", + success_callback, + ); }); $("#invoice-button").on("click", (e) => { @@ -48,7 +31,7 @@ export const initialize = () => { return; } e.preventDefault(); - helpers.create_ajax_request("/json/billing/upgrade", "invoice", undefined, [], "POST", () => + helpers.create_ajax_request("/json/billing/upgrade", "invoice", [], "POST", () => window.location.replace("/billing"), ); }); @@ -58,13 +41,8 @@ export const initialize = () => { return; } e.preventDefault(); - helpers.create_ajax_request( - "/json/billing/sponsorship", - "sponsorship", - undefined, - [], - "POST", - () => window.location.replace("/"), + helpers.create_ajax_request("/json/billing/sponsorship", "sponsorship", [], "POST", () => + window.location.replace("/"), ); }); diff --git a/static/styles/portico/billing.css b/static/styles/portico/billing.css index 7240fbcbe6..368aa93666 100644 --- a/static/styles/portico/billing.css +++ b/static/styles/portico/billing.css @@ -193,6 +193,8 @@ display: none; } + #restartsession-loading, + #webhook-loading, #sponsorship-loading, #planchange-loading, #licensechange-loading, @@ -204,6 +206,8 @@ text-align: center; } + #restartsession-success, + #webhook-success, #sponsorship-success, #planchange-success, #licensechange-success, @@ -214,6 +218,8 @@ display: none; } + #restartsession-error, + #webhook-error, #sponsorship-error, #planchange-error, #licensechange-error, @@ -245,6 +251,8 @@ stroke: hsl(0, 0%, 100%); } + #restartsession_loading_indicator, + #webhook_loading_indicator, #sponsorship_loading_indicator, #planchange_loading_indicator, #licensechange_loading_indicator, @@ -254,6 +262,8 @@ margin: 10px auto; } + #restartsession_loading_indicator_box_container, + #webhook_loading_indicator_box_container, #sponsorship_loading_indicator_box_container, #planchange_loading_indicator_box_container, #licensechange_loading_indicator_box_container, @@ -264,6 +274,8 @@ left: 50%; } + #restartsession_loading_indicator_box, + #webhook_loading_indicator_box, #sponsorship_loading_indicator_box, #planchange_loading_indicator_box, #licensechange_loading_indicator_box, @@ -277,6 +289,8 @@ border-radius: 6px; } + #restartsession_loading_indicator .loading_indicator_text, + #webhook_loading_indicator .loading_indicator_text, #sponsorship_loading_indicator .loading_indicator_text, #planchange_loading_indicator .loading_indicator_text, #licensechange_loading_indicator .loading_indicator_text, @@ -293,8 +307,8 @@ } } -input[name="licenses"]::-webkit-outer-spin-button, -input[name="licenses"]::-webkit-inner-spin-button { +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { appearance: none; margin: 0; } diff --git a/stubs/stripe/__init__.pyi b/stubs/stripe/__init__.pyi index 328105a627..bc5b2704a1 100644 --- a/stubs/stripe/__init__.pyi +++ b/stubs/stripe/__init__.pyi @@ -7,9 +7,16 @@ import stripe.api_requestor as api_requestor import stripe.error as error import stripe.util as util from stripe.api_resources.list_object import SubscriptionListObject +from stripe.checkout import Session +from typing_extensions import Literal api_key: Optional[str] +class InvoiceSettings: + custom_field: List[str] + default_payment_method: Optional[PaymentMethod] + footer: str + class Customer: default_source: Union[Card, Source] created: int @@ -23,6 +30,7 @@ class Customer: description: str discount: Optional[Discount] metadata: Dict[str, str] + invoice_settings: InvoiceSettings @staticmethod def retrieve(customer_id: str = ..., expand: Optional[List[str]] = ...) -> Customer: ... @staticmethod @@ -30,10 +38,13 @@ class Customer: description: str = ..., email: str = ..., metadata: Dict[str, Any] = ..., - source: Optional[str] = ..., + payment_method: Optional[str] = ..., coupon: Optional[str] = ..., ) -> Customer: ... @staticmethod + def modify(customer_id: str, invoice_settings: Dict[str, Any]) -> Customer: + pass + @staticmethod def save(customer: Customer) -> Customer: ... @staticmethod def delete_discount(customer: Customer) -> None: ... @@ -43,6 +54,7 @@ class Customer: def create_balance_transaction( customer_id: str, amount: int, currency: str, description: str ) -> None: ... + def refresh(self, customer: Customer) -> Customer: ... class Invoice: id: str @@ -85,8 +97,7 @@ class Invoice: @staticmethod def void_invoice(id: str) -> None: ... def get(self, key: str) -> Any: ... - @staticmethod - def refresh(invoice: Invoice) -> Invoice: ... + def refresh(self, invoice: Invoice) -> Invoice: ... class Subscription: created: int @@ -164,6 +175,7 @@ class Charge: receipt_email: str source: Source statement_descriptor: str + payment_method_details: PaymentMethod @staticmethod def list(customer: Optional[str]) -> List[Charge]: ... @staticmethod @@ -195,3 +207,127 @@ class InvoiceItem: class InvoiceLineItem: amount: int def get(self, key: str) -> Any: ... + +class SetupIntent: + id: str + + customer: str + metadata: Dict[str, Any] + payment_method: str + payment_method_types: List[str] + usage: str + @staticmethod + def create( + confirm: bool = ..., + usage: str = ..., + customer: Optional[str] = None, + description: Optional[str] = None, + metadata: Optional[Dict[str, Any]] = None, + payment_method: Optional[str] = None, + payment_method_types: List[str] = ..., + ) -> SetupIntent: ... + @staticmethod + def list(limit: int = ...) -> List[SetupIntent]: ... + @staticmethod + def retrieve(setup_intent_id: str, expand: Optional[List[str]] = ...) -> SetupIntent: ... + +PaymentIntentStatuses = Literal[ + "requires_payment_method", + "requires_confirmation", + "requires_action", + "processing", + "requires_capture", + "canceled", + "succeeded", +] + +class LastPaymentError: + def get(self, key: Literal["code", "message", "type", "param"]) -> Optional[str]: ... + +class PaymentIntent: + id: str + amount: int + charges: List[Charge] + customer: str + metadata: Dict[str, str] + status: PaymentIntentStatuses + last_payment_error: LastPaymentError + @staticmethod + def create( + amount: int, + currency: str, + confirm: bool = ..., + customer: Optional[str] = None, + description: Optional[str] = None, + payment_method: Optional[str] = None, + off_session: Optional[bool] = None, + receipt_email: Optional[str] = None, + statement_descriptor: Optional[str] = None, + metadata: Optional[Dict[str, Any]] = None, + ) -> PaymentMethod: ... + @staticmethod + def confirm( + payment_intent_id: str, + payment_method: Optional[str] = None, + off_session: Optional[bool] = None, + ) -> PaymentIntent: ... + @staticmethod + def list(limit: int = ...) -> List[PaymentIntent]: ... + @staticmethod + def retrieve(payment_intent_id: str) -> PaymentIntent: ... + +PaymentMethodTypes = Literal[ + "acss_debit", + "afterpay_clearpay", + "alipay", + "au_becs_debit", + "bacs_debit", + "bancontact", + "boleto", + "card", + "eps", + "fpx", + "giropay", + "grabpay", + "ideal", + "oxxo", + "p24", + "sepa_debit", + "sofort", + "wechat_pay", +] + +class PaymentMethod: + id: str + status: str + card: Card + type: PaymentMethodTypes + @staticmethod + def create( + type: PaymentMethodTypes, card: Optional[Dict[str, Any]] = None + ) -> PaymentMethod: ... + @staticmethod + def detach(payment_method_id: str) -> PaymentMethod: ... + @staticmethod + def list(customer: Customer, type: str, limit: int = ...) -> List[PaymentMethod]: ... + +EventTypes = Literal[ + "checkout.session.completed", "payment_intent.succeeded", "payment_intent.payment_failed" +] + +class EventData: + object: Union[Session, PaymentIntent] + +class Event: + id: str + type: EventTypes + data: EventData + @staticmethod + def construct_from(values: Dict[Any, Any], key: Optional[str]) -> Event: ... + @staticmethod + def list(limit: int = ..., ending_before: Optional[Event] = None) -> List[Event]: ... + def to_dict_recursive(self) -> Dict[str, Any]: ... + +class Webhook: + @staticmethod + def construct_event(payload: bytes, request_signature: str, webhook_secret: str) -> Event: ... diff --git a/stubs/stripe/checkout/__init__.pyi b/stubs/stripe/checkout/__init__.pyi new file mode 100644 index 0000000000..f4b7f6ac17 --- /dev/null +++ b/stubs/stripe/checkout/__init__.pyi @@ -0,0 +1,22 @@ +from typing import Any, Dict, List, Optional + +class Session: + id: str + + customer: str + metadata: Dict[str, Any] + setup_intent: str + url: str + @staticmethod + def create( + cancel_url: str, + success_url: str, + mode: str, + payment_method_types: List[str], + customer: Optional[str] = None, + metadata: Optional[Dict[str, Any]] = None, + setup_intent_data: Optional[Dict[str, Any]] = None, + ) -> Session: ... + @staticmethod + def list(limit: int = ...) -> List[Session]: ... + def to_dict_recursive(self) -> Dict[str, Any]: ... diff --git a/stubs/stripe/error/__init__.pyi b/stubs/stripe/error/__init__.pyi index a1d53918a8..2f08b5afca 100644 --- a/stubs/stripe/error/__init__.pyi +++ b/stubs/stripe/error/__init__.pyi @@ -55,3 +55,5 @@ class APIConnectionError(StripeError): code: Optional[str] = None, should_retry: bool = False, ) -> None: ... + +class SignatureVerificationError(StripeError): ... diff --git a/templates/corporate/billing.html b/templates/corporate/billing.html index 9eae6f15ce..b3d56994ac 100644 --- a/templates/corporate/billing.html +++ b/templates/corporate/billing.html @@ -3,7 +3,6 @@ {% block customhead %} - {% endblock %} {% block content %} @@ -62,16 +61,14 @@ {% endif %}

-
+

Billing email: {{ stripe_email }}

Current payment method: {{ payment_method }}

{% if charge_automatically %} - + {% endif %}
@@ -85,7 +82,7 @@
- Card updated. The page will now reload. + Redirecting to Stripe checkout page for updating Card details.
diff --git a/templates/corporate/event_status.html b/templates/corporate/event_status.html new file mode 100644 index 0000000000..3135b5c91d --- /dev/null +++ b/templates/corporate/event_status.html @@ -0,0 +1,52 @@ +{% extends "zerver/portico.html" %} +{% set entrypoint = "billing-event-status" %} + +{% block customhead %} + +{% endblock %} + +{% block content %} + +
+ + {% include 'zerver/billing_nav.html' %} + +
+
+ +
+
+
+
+
+
+
+ +
+
+ +
+ + +
+
Redirecting to Stripe Checkout
+
+
+ +
+
+
+
+
+
+{% endblock %} diff --git a/templates/corporate/upgrade.html b/templates/corporate/upgrade.html index bd28a3e273..4291e394c1 100644 --- a/templates/corporate/upgrade.html +++ b/templates/corporate/upgrade.html @@ -3,7 +3,6 @@ {% block customhead %} - {% endblock %} {% block content %} @@ -41,11 +40,14 @@
-
+ + {% if onboarding %} + + {% endif %} {% if onboarding and free_trial_days %}

Not ready to start your trial? Continue with the Zulip Cloud Free plan.


@@ -153,8 +155,8 @@
-
- Upgrade complete! The page will now reload. +
+ Redirecting to Stripe Checkout...
@@ -257,7 +259,7 @@
-
+
Request received! The page will now reload.
diff --git a/tools/linter_lib/custom_check.py b/tools/linter_lib/custom_check.py index df1cebff99..e9dbaf7358 100644 --- a/tools/linter_lib/custom_check.py +++ b/tools/linter_lib/custom_check.py @@ -617,6 +617,7 @@ html_rules: List["Rule"] = [ "templates/corporate/billing.html", "templates/zerver/hello.html", "templates/corporate/upgrade.html", + "templates/corporate/event_status.html", }, "bad_lines": [ '' diff --git a/tools/test-js-with-node b/tools/test-js-with-node index 89d1d82d91..43fc5a055c 100755 --- a/tools/test-js-with-node +++ b/tools/test-js-with-node @@ -186,6 +186,7 @@ EXEMPT_FILES = { "static/js/zform.js", "static/js/zulip.js", "static/js/zulip_test.js", + "static/js/billing/event_status.js", "static/shared/js/poll_data.js", } diff --git a/tools/webpack.assets.json b/tools/webpack.assets.json index 1b543b933c..475bba27dd 100644 --- a/tools/webpack.assets.json +++ b/tools/webpack.assets.json @@ -25,6 +25,13 @@ "./static/js/loading", "./static/styles/portico/billing.css" ], + "billing-event-status": [ + "./static/js/bundles/portico", + "./static/styles/portico/landing_page.css", + "./static/js/billing/event_status.js", + "./static/js/billing/helpers", + "./static/styles/portico/billing.css" + ], "portico": ["./static/js/bundles/portico"], "error-styles": [ "./static/third/bootstrap/css/bootstrap.css",