Adding stripe integration

This commit is contained in:
Nathan Chapman 2022-08-20 13:51:50 -06:00
parent 27a0f94c4e
commit c62dbcacf8
3 changed files with 48 additions and 2 deletions

View File

@ -0,0 +1,29 @@
# Generated by Django 4.0.2 on 2022-08-07 19:40
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('core', '0010_product_stripe_id'),
]
operations = [
migrations.AddField(
model_name='product',
name='stripe_price_id',
field=models.CharField(blank=True, max_length=255),
),
migrations.CreateModel(
name='Subscription',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('stripe_id', models.CharField(blank=True, max_length=255)),
('customer', models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subscription', to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -53,6 +53,7 @@ class Product(models.Model):
blank=True, blank=True,
null=True, null=True,
) )
stripe_price_id = models.CharField(max_length=255, blank=True)
weight = MeasurementField( weight = MeasurementField(
measurement=Weight, measurement=Weight,
unit_choices=WeightUnits.CHOICES, unit_choices=WeightUnits.CHOICES,

View File

@ -22,12 +22,28 @@ def product_saved(sender, instance, created, **kwargs):
logger.info('Product was saved') logger.info('Product was saved')
if created or not instance.stripe_id: if created or not instance.stripe_id:
stripe.api_key = settings.STRIPE_API_KEY stripe.api_key = settings.STRIPE_API_KEY
response = stripe.Product.create( prod_response = stripe.Product.create(
name=instance.name, name=instance.name,
description=instance.description description=instance.description
) )
instance.stripe_id = response['id'] price_response = stripe.Price.create(
unit_amount=int(instance.price * 100),
currency=settings.DEFAULT_CURRENCY,
product=prod_response['id']
)
instance.stripe_id = prod_response['id']
instance.stripe_price_id = price_response['id']
instance.save() instance.save()
else:
stripe.Product.modify(
instance.stripe_id,
name=instance.name,
description=instance.description
)
stripe.Price.modify(
instance.stripe_price_id,
unit_amount=int(instance.price * 100)
)
@receiver(post_save, sender=Order, dispatch_uid="order_created") @receiver(post_save, sender=Order, dispatch_uid="order_created")