Add set_default_card and set_default_card_from_stripe methods
This commit is contained in:
parent
4dd407da67
commit
a6d28bff86
1 changed files with 34 additions and 2 deletions
|
@ -10,6 +10,7 @@ from django.utils.functional import cached_property
|
|||
from membership.models import StripeCustomer, CustomUser
|
||||
from utils.mixins import AssignPermissionsMixin
|
||||
from utils.models import BillingAddress
|
||||
from utils.stripe_utils import StripeUtils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -201,11 +202,12 @@ class UserCardDetail(AssignPermissionsMixin, models.Model):
|
|||
|
||||
@classmethod
|
||||
def create(cls, stripe_customer=None, last4=None, brand=None,
|
||||
fingerprint=None, exp_month=None, exp_year=None, card_id=None):
|
||||
fingerprint=None, exp_month=None, exp_year=None, card_id=None,
|
||||
preferred=False):
|
||||
instance = cls.objects.create(
|
||||
stripe_customer=stripe_customer, last4=last4, brand=brand,
|
||||
fingerprint=fingerprint, exp_month=exp_month, exp_year=exp_year,
|
||||
card_id=card_id
|
||||
card_id=card_id, preferred=preferred
|
||||
)
|
||||
instance.assign_permissions(stripe_customer.user)
|
||||
return instance
|
||||
|
@ -262,3 +264,33 @@ class UserCardDetail(AssignPermissionsMixin, models.Model):
|
|||
card_id=card_details['card_id']
|
||||
)
|
||||
return card_detail
|
||||
|
||||
def set_default_card(self, stripe_api_cus_id, stripe_source_id):
|
||||
"""
|
||||
Sets the given stripe source as the default source for the given
|
||||
Stripe customer
|
||||
:param stripe_api_cus_id: Stripe customer id
|
||||
:param stripe_source_id: The Stripe source id
|
||||
:return:
|
||||
"""
|
||||
stripe_utils = StripeUtils()
|
||||
cus_response = stripe_utils.get_customer(stripe_api_cus_id)
|
||||
cu = cus_response['response_object']
|
||||
cu.default_source = stripe_source_id
|
||||
cu.save()
|
||||
self._save_default_card(stripe_api_cus_id, stripe_source_id)
|
||||
|
||||
def set_default_card_from_stripe(self, stripe_api_cus_id):
|
||||
stripe_utils = StripeUtils()
|
||||
cus_response = stripe_utils.get_customer(stripe_api_cus_id)
|
||||
cu = cus_response['response_object']
|
||||
default_source = cu.default_source
|
||||
self._save_default_card(stripe_api_cus_id, default_source)
|
||||
|
||||
def _save_default_card(self, stripe_api_cus_id, card_id):
|
||||
stripe_cust = StripeCustomer.objects.get(stripe_id=stripe_api_cus_id)
|
||||
user_card_detail = UserCardDetail.objects.get(
|
||||
stripe_customer=stripe_cust, card_id=card_id
|
||||
)
|
||||
user_card_detail.preferred = True
|
||||
user_card_detail.save()
|
Loading…
Reference in a new issue