diff --git a/artshow/manage.py b/artshow/manage.py index 386567e..b3f2c12 100644 --- a/artshow/manage.py +++ b/artshow/manage.py @@ -350,8 +350,8 @@ def make_payment(request, artist_id): artist, f'Art Show space reservation for {artist}', payment_remaining, - request.build_absolute_uri(reverse('artshow-manage-payment-square', - args=(artist_id,))), + settings.SITE_ROOT_URL + reverse('artshow-manage-payment-square', + args=(artist_id,)), ) if payment_url is not None: return redirect(payment_url) diff --git a/artshow/square.py b/artshow/square.py index f9bb0df..8092940 100644 --- a/artshow/square.py +++ b/artshow/square.py @@ -5,6 +5,7 @@ from decimal import Decimal from django.http import HttpResponse +from django.urls import reverse from django.utils.timezone import now from django.views.decorators.csrf import csrf_exempt @@ -72,11 +73,14 @@ def process_payment_created_or_updated(body): payment_id = payment['id'] payment_amount = Decimal(payment['total_money']['amount'] / 100) - square_payment = SquarePayment.objects.get(order_id=order_id) - square_payment.amount = payment_amount - square_payment.payment_type_id = settings.ARTSHOW_PAYMENT_RECEIVED_PK - square_payment.payment_id = payment_id - square_payment.save() + try: + square_payment = SquarePayment.objects.get(order_id=order_id) + square_payment.amount = payment_amount + square_payment.payment_type_id = settings.ARTSHOW_PAYMENT_RECEIVED_PK + square_payment.payment_id = payment_id + square_payment.save() + except SquarePayment.DoesNotExist: + logger.info(f'Got webhook for unknown order: {order_id}') def process_webhook(body): @@ -91,7 +95,7 @@ def webhook(request): body, request.headers['x-square-hmacsha256-signature'], settings.ARTSHOW_SQUARE_SIGNATURE_KEY, - settings.ARTSHOW_SQUARE_NOTIFICATION_URL) + settings.SITE_ROOT_URL + reverse('square-webhook')) if not valid: logger.debug('Received invalid webhook!') diff --git a/artshowjockey/settings.py b/artshowjockey/settings.py index 30a0d9c..bdd6ece 100644 --- a/artshowjockey/settings.py +++ b/artshowjockey/settings.py @@ -263,7 +263,6 @@ ARTSHOW_SQUARE_ACCESS_TOKEN = env.str('ACCESS_TOKEN', default='') ARTSHOW_SQUARE_SIGNATURE_KEY = env.str('SIGNATURE_KEY', default='') ARTSHOW_SQUARE_ENVIRONMENT = env.str('ENVIRONMENT', default='sandbox') - ARTSHOW_SQUARE_NOTIFICATION_URL = env.str('NOTIFICATION_URL', default='') SITE_ID = 1 SITE_NAME = ARTSHOW_SHOW_NAME