예제 #1
0
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
예제 #2
0
 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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
 def __init__(self):
     self.stripe = get_stripe_client()