def forwards(apps, schema_editor): stripe = get_stripe_client() Organization = apps.get_model('organizations', 'Organization') for organization in Organization.objects.all().iterator(): try: if organization.stripe_subscription_id: subscription = stripe.Subscription.retrieve(organization.stripe_subscription_id) subscription.delete() organization.stripe_subscription_id = None organization.plan_name = None StripeOrganizationSync().execute(organization, "create_or_update") subscription = stripe.Subscription.create( customer=organization.stripe_customer_id, items=[ { "plan": settings.STRIPE_DEFAULT_PLAN_ID, }, ] ) organization.plan_name = settings.STRIPE_DEFAULT_PLAN_ID organization.stripe_subscription_id = subscription.get('id') organization.save() except Exception: continue
def update_source(self, request, pk): organization = self.get_object() stripe = get_stripe_client() data = request.data token = data.get('token').get('id') customer = stripe.Customer.retrieve(organization.stripe_customer_id) customer.source = token customer.save() return Response(customer)
def forwards(apps, schema_editor): if settings.STRIPE_ENABLE_SYNC: stripe = get_stripe_client() has_more = True customers = stripe.Customer.list() total_customers = 0 while has_more: last_customer_id = None has_more = customers.has_more for customer in customers.data: last_customer_id = customer.id total_customers += 1 if not customer.subscriptions.data or customer.subscriptions.data[ 0].plan.id != "basic": customer.delete() if has_more: customers = stripe.Customer.list( starting_after=last_customer_id) print("Total Customers: %s" % total_customers)
def update_subscription(self, request, pk): organization = self.get_object() stripe = get_stripe_client() data = request.data new_plan = data.get('plan') subscription = stripe.Subscription.retrieve( organization.stripe_subscription_id) item_id = subscription['items']['data'][0].id stripe.Subscription.modify( organization.stripe_subscription_id, items=[{ "id": item_id, "plan": new_plan, }], ) subscription.save() organization.plan_name = new_plan organization.save() return Response(subscription)
def billing(self, request, pk): organization = self.get_object() stripe = get_stripe_client() data = { 'subscription': None, 'customer': None, 'invoices': None, } if organization.stripe_subscription_id: data['subscription'] = stripe.Subscription.retrieve( organization.stripe_subscription_id) if organization.stripe_customer_id: data['customer'] = stripe.Customer.retrieve( organization.stripe_customer_id) if organization.stripe_customer_id and organization.stripe_subscription_id: data['invoices'] = stripe.Invoice.list( limit=5, customer=organization.stripe_customer_id) return Response(data)
def __init__(self): self.stripe = get_stripe_client()