BO 1.35+2 webhook payment

This commit is contained in:
Tibor Bossanyi (Freelancer) 2022-01-15 17:08:39 +01:00
parent 636d505564
commit a7e0aecf6e
3 changed files with 60 additions and 8 deletions

View File

@ -2,7 +2,6 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _
from ..models.sports import Sport
from ..models.exercises import Exercises
class Customer(models.Model):
customer_id = models.BigAutoField(primary_key=True)

View File

@ -2,12 +2,12 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _
class ProductTypes(models.TextChoices):
SUBS = "subscription"
IN_APP_CURR = "in-app-currency"
class Product(models.Model):
class ProductTypes(models.TextChoices):
SUBS = "subscription"
IN_APP_CURR = "in-app-currency"
WEB = "web"
product_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=50)
description = models.TextField(max_length=1000, blank=True, null=True)
@ -18,11 +18,13 @@ class Product(models.Model):
product_id_android = models.CharField(max_length=50, blank=True, null=True)
price_ios = models.DecimalField(max_length=12, decimal_places=2, max_digits=12, blank=True)
price_android = models.DecimalField(max_length=12, decimal_places=2, max_digits=12, blank=True)
price_web = models.DecimalField(max_length=12, decimal_places=2, max_digits=12, blank=True)
class Meta:
db_table = 'product'
verbose_name = _("Product")
verbose_name_plural = _("Products")
app_label = 'controlling'
def __str__(self):
return self.name
@ -35,8 +37,12 @@ class Purchase(models.Model):
date_add = models.DateField(blank=True, null=True)
purchase_sum = models.DecimalField(decimal_places=2, max_digits=7)
currency = models.CharField(max_length=3)
expiring = models.DateField(blank=True, null=True)
class Meta:
db_table = 'purchase'
verbose_name = _("Purchase")
verbose_name_plural = _("Purchases")
verbose_name_plural = _("Purchases")
def __str__(self):
return self.name

View File

@ -1,8 +1,55 @@
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json
import os
from datetime import date, timedelta, datetime
import pytz
SETTING = os.environ['WORKOUTTEST_SETTING']
if SETTING == "PROD":
from aitrainer_backoffice.aitrainer_backoffice.models.customer import Customer
from aitrainer_backoffice.aitrainer_backoffice.models.product import Product, Purchase
else:
from aitrainer_backoffice.models.customer import Customer
from aitrainer_backoffice.models.product import Product, Purchase
@csrf_exempt
def webhook(request):
if request.method == 'POST':
print("Data received from Webhook is: ", request.body)
return HttpResponse("Webhook received!")
json_object = json.loads(request.body)
if ( json_object['status'] == True ):
qs_customer = Customer.objects.filter(email = json_object['email'])
if ( qs_customer.count() > 0):
qs_product = Product.objects.filter(price_web = json_object['price'])
today = date.today()
cet = pytz.timezone('Europe/Budapest')
customer_id = qs_customer[0].customer_id
for product in qs_product:
expiring = date.today() + timedelta(days=1095)
if ( json_object['price'] == 26970):
qs_purchase = Purchase.objects.filter(customer_id = customer_id, product_id =product.pk)
if ( qs_purchase.count() < 2 ):
expiring = date.today() + timedelta(days=30)
print("insert purchase: " + product.name + " exp: " + str(expiring))
purchase = Purchase(
customer_id = qs_customer[0].customer_id,
product_id = product.pk,
date_add = datetime.now(tz=cet),
purchase_sum = product.price_web,
currency = "HUF",
expiring = expiring
)
purchase.save()
return HttpResponse("OK")