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..24f9eca 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('http://localhost:3000/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() diff --git a/frontend/components/cart/checkout/Gateway.vue b/frontend/components/cart/checkout/Gateway.vue index e38d385..177b3ed 100644 --- a/frontend/components/cart/checkout/Gateway.vue +++ b/frontend/components/cart/checkout/Gateway.vue @@ -24,7 +24,7 @@ const emit = defineEmits(); @click="emit('select', null)" :class=" isSelected - ? 'ring-2 ring-offset-2 ring-black border-black' + ? 'ring-2 ring-offset-2 ring-blue-500 border-blue-500' : 'border-slate-200' " class="w-full p-5 border rounded-xl flex flex-col gap-4 transition-all cursor-pointer relative overflow-hidden" @@ -41,7 +41,7 @@ const emit = defineEmits(); > diff --git a/frontend/components/cart/checkout/PaymentPendingModal.vue b/frontend/components/cart/checkout/PaymentPendingModal.vue index 9446c24..b6ff9b6 100644 --- a/frontend/components/cart/checkout/PaymentPendingModal.vue +++ b/frontend/components/cart/checkout/PaymentPendingModal.vue @@ -43,21 +43,14 @@ const visible = computed({ class="bg-custom-conic size-[200%] absolute -top-1/2 -left-1/2 animate-spin [animation-duration:3s] z-[1]" >
-