From 929c6168a429cd42efffc1d4f6e5cfa7a15b9b9c Mon Sep 17 00:00:00 2001 From: i701 Date: Wed, 23 Apr 2025 10:03:04 +0500 Subject: [PATCH] Refactor payment verification to use PAYMENT_BASE_URL from environment variables and improve error handling for missing configuration --- .env.example | 2 +- billing/views.py | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index f610463..f4c95ba 100644 --- a/.env.example +++ b/.env.example @@ -15,7 +15,7 @@ EMAIL_PORT= EMAIL_USERNAME= EMAIL_PASSWORD= -PAYMENT_VERIFY_BASE_URL="" +PAYMENT_BASE_URL="" FRONTEND_URL="" SMS_API_URL="" diff --git a/billing/views.py b/billing/views.py index 776b0f9..fa00d0f 100644 --- a/billing/views.py +++ b/billing/views.py @@ -4,7 +4,7 @@ from datetime import timedelta from django.utils import timezone import requests -from decouple import config + from rest_framework import generics, status from rest_framework.response import Response @@ -13,6 +13,19 @@ from api.mixins import StaffEditorPermissionMixin from .models import Device, Payment from .serializers import PaymentSerializer, UpdatePaymentSerializer +from apibase.env import env, BASE_DIR +from django.utils.timezone import localtime +import os + +env.read_env(os.path.join(BASE_DIR, ".env")) + +PAYMENT_BASE_URL = env("PAYMENT_BASE_URL", default=None) +if not PAYMENT_BASE_URL: + raise ValueError( + "PAYMENT_BASE_URL is not set. Please set it in your environment variables." + ) +print("PAYMENT_BASE_URL from env:", PAYMENT_BASE_URL) + class InsufficientFundsError(Exception): pass @@ -145,7 +158,7 @@ class VerifyPaymentView(StaffEditorPermissionMixin, generics.UpdateAPIView): "benefName": f"{user.first_name} {user.last_name}", "accountNo": user.acc_no, "absAmount": payment.amount, - "time": (timezone.now() + timedelta(minutes=5)).strftime( + "time": localtime(timezone.now() + timedelta(minutes=5)).strftime( "%Y-%m-%d %H:%M" ), } @@ -180,9 +193,9 @@ class VerifyPaymentView(StaffEditorPermissionMixin, generics.UpdateAPIView): return True def verify_transfer_payment(self, data, payment): - print("verifying transfer payment...") + print(data) response = requests.post( - f"{config('PAYMENT_VERIFY_BASE_URL')}/verify-payment", + f"{PAYMENT_BASE_URL}/verify-payment", json=data, headers={"Content-Type": "application/json"}, )