mirror of https://github.com/zulip/zulip.git
billing: Expand default_source object when retrieving customer.
This commit is contained in:
parent
1225bfd6ee
commit
b88613fd0b
|
@ -91,7 +91,7 @@ def catch_stripe_errors(func: CallableT) -> CallableT:
|
|||
|
||||
@catch_stripe_errors
|
||||
def get_stripe_customer(stripe_customer_id: str) -> stripe.Customer:
|
||||
stripe_customer = stripe.Customer.retrieve(stripe_customer_id)
|
||||
stripe_customer = stripe.Customer.retrieve(stripe_customer_id, expand=["default_source"])
|
||||
if PRINT_STRIPE_FIXTURE_DATA:
|
||||
print(''.join(['"retrieve_customer": ', str(stripe_customer), ','])) # nocoverage
|
||||
return stripe_customer
|
||||
|
@ -113,15 +113,6 @@ def extract_current_subscription(stripe_customer: stripe.Customer) -> Any:
|
|||
return stripe_subscription
|
||||
return None
|
||||
|
||||
@catch_stripe_errors
|
||||
def payment_source(stripe_customer: stripe.Customer) -> Optional[stripe.Card]:
|
||||
if stripe_customer.default_source is None:
|
||||
return None # nocoverage -- no way to get here yet
|
||||
for source in stripe_customer.sources.data:
|
||||
if source.id == stripe_customer.default_source:
|
||||
return source
|
||||
raise AssertionError("Default source not in sources.")
|
||||
|
||||
@catch_stripe_errors
|
||||
def do_create_customer_with_payment_source(user: UserProfile, stripe_token: str) -> stripe.Customer:
|
||||
realm = user.realm
|
||||
|
|
|
@ -138,7 +138,31 @@
|
|||
"account_balance": 0,
|
||||
"created": 1529990750,
|
||||
"currency": "usd",
|
||||
"default_source": "card_1Ch9gVGh0CmXqmnwv94RombT",
|
||||
"default_source": {
|
||||
"address_city": "Pacific",
|
||||
"address_country": "United States",
|
||||
"address_line1": "Under the sea",
|
||||
"address_line1_check": "pass",
|
||||
"address_line2": null,
|
||||
"address_state": "FL",
|
||||
"address_zip": "33333",
|
||||
"address_zip_check": "pass",
|
||||
"brand": "Visa",
|
||||
"country": "US",
|
||||
"customer": "cus_D7OT2jf5YAtZQL",
|
||||
"cvc_check": "pass",
|
||||
"dynamic_last4": null,
|
||||
"exp_month": 3,
|
||||
"exp_year": 2033,
|
||||
"fingerprint": "6dAXT9VZvwro65EK",
|
||||
"funding": "credit",
|
||||
"id": "card_1Ch9gVGh0CmXqmnwv94RombT",
|
||||
"last4": "4242",
|
||||
"metadata": {},
|
||||
"name": "Ada Starr",
|
||||
"object": "card",
|
||||
"tokenization_method": null
|
||||
},
|
||||
"delinquent": false,
|
||||
"description": "zulip (Zulip Dev)",
|
||||
"discount": null,
|
||||
|
|
|
@ -27,8 +27,8 @@ from zerver.models import UserProfile, Realm
|
|||
from zerver.views.push_notifications import validate_token
|
||||
from zilencer.lib.stripe import STRIPE_PUBLISHABLE_KEY, StripeError, \
|
||||
do_create_customer_with_payment_source, do_subscribe_customer_to_plan, \
|
||||
get_stripe_customer, get_upcoming_invoice, payment_source, \
|
||||
get_seat_count, extract_current_subscription, sign_string, unsign_string
|
||||
get_stripe_customer, get_upcoming_invoice, get_seat_count, \
|
||||
extract_current_subscription, sign_string, unsign_string
|
||||
from zilencer.models import RemotePushDeviceToken, RemoteZulipServer, \
|
||||
Customer, Plan
|
||||
|
||||
|
@ -249,9 +249,8 @@ def billing_home(request: HttpRequest) -> HttpResponse:
|
|||
prorated_charges = 0
|
||||
|
||||
payment_method = None
|
||||
source = payment_source(stripe_customer)
|
||||
if source is not None:
|
||||
payment_method = "Card ending in %(last4)s" % {'last4': source.last4}
|
||||
if stripe_customer.default_source is not None:
|
||||
payment_method = "Card ending in %(last4)s" % {'last4': stripe_customer.default_source.last4}
|
||||
|
||||
context.update({
|
||||
'plan_name': plan_name,
|
||||
|
|
Loading…
Reference in New Issue