From bcc5bf23f5edc01fae76044fec553295c2984bc7 Mon Sep 17 00:00:00 2001 From: Parsa Nazer Date: Fri, 11 Apr 2025 20:57:33 +0330 Subject: [PATCH] add callback url --- backend/account/admin.py | 2 +- backend/order/urls.py | 3 ++- backend/order/views.py | 21 +++++++++++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/backend/account/admin.py b/backend/account/admin.py index b223804..b27d4c9 100644 --- a/backend/account/admin.py +++ b/backend/account/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from .models import * -from unfold.admin import ModelAdmin, TabularInline +from unfold.admin import TabularInline from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from import_export.admin import ImportExportModelAdmin from unfold.contrib.import_export.forms import ExportForm, ImportForm, SelectableFieldsExportForm diff --git a/backend/order/urls.py b/backend/order/urls.py index 31d4db3..479a357 100644 --- a/backend/order/urls.py +++ b/backend/order/urls.py @@ -11,6 +11,7 @@ urlpatterns = [ path('cart/all', CartItemClear.as_view()), path('cart/item/', CartItemViews.as_view(), name='change-item-cart'), path('cart/payment', PaymentView.as_view(), name='payment'), - path('callback', callback_view, name='callback-gateway'), + # path('callback', callback_view, name='callback-gateway'), + path('transaction/', CallbackView.as_view(), name='callback-gateway'), path('', OrderGetView.as_view(), name='order-get'), ] diff --git a/backend/order/views.py b/backend/order/views.py index 335c647..901930c 100644 --- a/backend/order/views.py +++ b/backend/order/views.py @@ -222,8 +222,7 @@ class PaymentView(APIView): ) bank.set_request(request) bank.set_amount(amount) - bank.set_client_callback_url(reverse("callback-gateway")) - print(reverse('callback-gateway')) + bank.set_client_callback_url('https://heymlz.com/transaction') bank.set_mobile_number(user_mobile_number) bank_record = bank.ready() @@ -270,6 +269,24 @@ def callback_view(request): +class CallbackView(APIView): + def get(self, request, tracking_code): + if not tracking_code: + return Response({'detail': 'کد تریسکد درست نمیباشد.'}) + + try: + bank_record = bank_models.Bank.objects.get(tracking_code=tracking_code) + except bank_models.Bank.DoesNotExist: + return Response({'detail': 'کد تریسکد معتبر نمیباشد.'}, status=status.HTTP_400_BAD_REQUEST) + + if bank_record.is_success: + return Response({"detail" : "پرداخت با موفقیت انجام شد."}, status=status.HTTP_200_OK) + + return Response( + {"detail": "پرداخت با شکست مواجه شده است. اگر پول کم شده است ظرف مدت ۴۸ ساعت پول به حساب شما بازخواهد گشت."}, status=status.HTTP_404_NOT_FOUND + ) + + class SetAddressSerilizer(serializers.Serializer): address_id = serializers.IntegerField()