Rishi Gupta
1a7a449572
billing: Add backend support for downgrading.
2019-04-11 23:27:42 -07:00
Rishi Gupta
babaaf82fe
billing: Update json endpoints test to allow more flexibility.
...
Slight loss in functionality, but doing the mocks correctly for every view
will be more work than the test is worth.
2019-04-11 23:20:29 -07:00
Rishi Gupta
a529080f01
billing: Rename add_plan_renewal_to_license_ledger_if_needed.
2019-04-11 23:20:29 -07:00
Rishi Gupta
2270d4d192
billing: Try paying invoices when user puts a new card on file.
...
Previously, when users got a "payment failed" email from Stripe (e.g. if
their card failed on renewal), they would enter in a new card on
/billing#payment-method, and wouldn't find out if the card worked till
Stripe retried the payment 4 days later.
2019-04-05 13:36:03 -07:00
Rishi Gupta
5d970cc09b
billing: Upgrade to Stripe API version 2019-03-14.
...
No breaking changes.
2019-04-05 11:24:45 -07:00
Vishnu Ks
ca1276961d
billing: Create get_discount_for_realm function.
2019-03-11 12:01:11 -07:00
Anders Kaseorg
f5197518a9
analytics/zilencer/zproject: Remove unused imports.
...
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2019-02-02 17:31:45 -08:00
Rishi Gupta
55179f913c
billing: Remove references to Customer.has_billing_relationship.
2019-01-31 15:12:43 -08:00
Vishnu Ks
18ffec626f
billing: Use -- instead of : in fixture files.
...
It's not safe to use ":" in filenames.
Fixes #11320
2019-01-31 12:26:00 -08:00
Rishi Gupta
a37558b021
billing: Update get_seat_count to incorporate guests.
2019-01-30 10:35:01 -08:00
Rishi Gupta
60f2213451
billing: Change seat count to 6 in tests.
...
We were about to make it 7 anyway by changing the definition of
get_seat_count. Hopefully 6 will be a bit more future proof.
2019-01-30 10:35:01 -08:00
Rishi Gupta
81745ba171
billing: Show licenses_used and better renewal information on /billing.
2019-01-29 07:38:24 -08:00
Rishi Gupta
a5324b6ea7
billing: Add a test for a race condition in process_initial_upgrade.
2019-01-29 07:01:31 -08:00
Rishi Gupta
9018ef5175
billing: Do not require a Stripe account to store Customer discounts.
2019-01-29 06:09:11 -08:00
Rishi Gupta
21b51ba8d1
billing: Remove mix option from backend.
2019-01-29 06:09:11 -08:00
Rishi Gupta
4aa2ac1b52
billing: Add functions for automatic invoicing of plans.
2019-01-28 16:04:11 -08:00
Rishi Gupta
421cda0e34
billing: Adding invoicing fields to CustomerPlan.
2019-01-28 16:04:11 -08:00
Rishi Gupta
fe280fc38c
billing: Create StripeTestCase.
2019-01-28 16:04:11 -08:00
Rishi Gupta
83a7595feb
billing: Update next_renewal_date to take an event_time.
...
Also changes a < into a <= in add_plan_renewal_to_license_ledger_if_needed.
2019-01-28 16:04:11 -08:00
Rishi Gupta
7c11fe819a
billing: Update license ledger when users are added and removed.
2019-01-28 16:04:11 -08:00
Rishi Gupta
ad7a7b246e
billing: Move license management from CustomerPlan into its own table.
2019-01-19 16:00:44 +05:30
Rishi Gupta
112eb01728
billing: Remove PLAN_NAMES and other legacy code.
2019-01-18 11:46:17 +05:30
Rishi Gupta
955dfc6397
billing: Remove references to Realm.has_seat_based_plan.
2018-12-24 10:27:56 -08:00
Rishi Gupta
653416ab23
billing: Update /billing to work with new subscription model.
2018-12-23 00:18:21 -08:00
Rishi Gupta
e7220fd71f
billing: Do subscription management in-house instead of with Stripe Billing.
...
This is a major rewrite of the billing system. It moves subscription
information off of stripe Subscriptions and into a local CustomerPlan
table.
To keep this manageable, it leaves several things unimplemented
(downgrading, etc), and a variety of other TODOs in the code. There are also
some known regressions, e.g. error-handling on /upgrade is broken.
2018-12-22 13:39:30 -08:00
Rishi Gupta
5633049292
billing: Restructure validation of upgrade parameters.
2018-12-22 13:30:15 -08:00
Rishi Gupta
b4a28f3147
billing: Rename seat_count to licenses where appropriate.
2018-12-22 13:30:15 -08:00
Rishi Gupta
7ab1406962
billing: Prepare for moving Plan to CustomerPlan.billing_schedule.
2018-12-22 13:30:15 -08:00
Rishi Gupta
7b5d15d254
billing: Move discount to local Customer object.
...
A lot of the seemingly unrelated test fixture changes are because we're
removing a query to stripe in the upgrade path, in cases when the user's
realm has an existing Customer object.
2018-12-22 13:30:15 -08:00
Rishi Gupta
8ec91fc42d
billing: Remove process_downgrade.
2018-12-22 13:30:15 -08:00
Rishi Gupta
84a31ca800
billing: Remove BillingProcessor.
...
Leaving the model in place, so that we can do the database migration by
hand.
2018-12-22 13:30:15 -08:00
Vishnu Ks
0fd6ff722b
billing: Migrate /upgrade endpoint to JSON.
...
The fixture changes are because self.upgrade formerly used to cause a page load
of /billing, which in turn calls Customer.retrieve.
If we ran the full test suite with GENERATE_STRIPE_FIXTURES=True, we would
likely see several more Customer.retrieve.N.json's being deleted. But
keeping them there for now to keep the diff small.
2018-12-13 17:01:12 -08:00
Rishi Gupta
b245c661da
billing: Change do_change_plan_type to take a realm instead of a user.
...
More often than not, changes in plan type are not directly due to user
action.
2018-12-13 13:26:24 -08:00
Vishnu Ks
a8113ae296
billing: Remove dont_mock argument from mock_stripe.
2018-12-04 12:19:57 -08:00
Rishi Gupta
c21a05a3b1
billing: Zero out timestamps that aren't being tested.
...
f52e9d1
ended up not going far enough. Keeping f52e9d1
in place in case we
ever want to go back to that sort of solution.
Also removes the keep argument from test_billing_quantity_changes_end_to_end,
since that test is actually testing the arguments to
stripe.Subscription.save(), not what is returned by Stripe.
2018-12-03 16:25:21 -08:00
Rishi Gupta
2453ab2a21
billing: Normalize a few more fields in normalize_fixture_data.
2018-12-03 16:24:16 -08:00
Rishi Gupta
84f7a779c4
billing: Take advantage of re match notation in normalize_fixture_data.
...
No change in behavior; just visual code cleanup.
2018-12-03 16:24:16 -08:00
Rishi Gupta
f52e9d143b
billing: Further normalize timestamps in tests.
...
Hopefully this will make it easier still to look at diffs with
GENERATE_STRIPE_FIXTURES = True.
2018-12-03 16:24:16 -08:00
Vishnu Ks
24917f2e9b
billing: Maintain a global list of stripe functions to mock.
...
Looks like payment_method_string was missing a Customer.save before. Not
sure how it was passing tests in that case.
2018-12-03 11:38:54 -08:00
Vishnu Ks
0191bb593a
billing: Make test functions accept *mocks instead of separate args.
2018-12-02 13:42:38 -08:00
Vishnu Ks
48618adf13
billing: Normalize several additional keys in mock_stripe.
...
Reran every test with GENERATE_STRIPE_FIXTURES = True, which also caused a
few fixtures to get updates unrelated to these changes (likely due to API
updates that hadn't been previously applied).
2018-12-02 13:32:19 -08:00
Rishi Gupta
c9c842ae2b
billing: Add randomness to idempotency key while testing.
...
Makes it easier to test or regenerate fixtures for
test_billing_quantity_changes_end_to_end with generate=True.
2018-11-30 23:14:52 -08:00
Rishi Gupta
c59da02936
billing: Reflect discounts on /upgrade.
2018-11-30 11:19:07 -08:00
Rishi Gupta
16b7737da3
billing: Fix enforcement of seat_count in tests.
2018-11-30 11:19:07 -08:00
Rishi Gupta
5a47ac96de
billing: Fix test flake in test_payment_method_string.
2018-11-30 11:19:07 -08:00
Rishi Gupta
5fdc2e5161
billing: Ensure seat_count is always 8 in billing tests.
2018-11-28 23:08:27 -08:00
Rishi Gupta
f3ecb05762
billing: Rename stripeToken to stripe_token.
...
When we started the billing system we started by following conventions used
in the Stripe documentation, but in hindsight it makes more sense to follow
conventions used in the Zulip codebase.
2018-11-28 22:29:29 -08:00
Rishi Gupta
d302fae31b
billing: Rename self.quantity to self.seat_count in tests.
2018-11-28 22:29:29 -08:00
Rishi Gupta
10d3d94a2a
billing: Use common pathway for upgrading in tests.
2018-11-28 22:29:29 -08:00
Rishi Gupta
b3b1b47fb0
billing: Remove references to legacy stripe_fixtures.json.
2018-11-28 22:29:29 -08:00