Инициируйте пост-запрос оплаты paypal, возвращающий ошибку 404, но отображение url в бэкенде django корректно, синтаксических ошибок во фронтенде React нет
Мой сайт на React и Django развернут на render, когда я запускаю службу backend из render, инициирующий платежный url paypal отображается там, я также проверил Django urls, но когда я отправляю post запрос из frontend, я получаю 404 ошибку, и яyour text
проверил правильно, у меня нет синтаксических ошибок, я отправляю правильные данные в backend, forward slash есть.
Я использую режим песочницы, я удалил идентификатор клиента и идентификатор секрета из settings.py и поместил их в переменную окружения render, так что вот как я получаю к ним доступ:
-
<<<1><>>PAYPAL_CLIENT_ID
- = os.getenv('PAYPAL_CLIENT_ID')<<<2><>>
- PAYPAL_SECRET_CLIENT = os.getenv('PAYPAL_SECRET_CLIENT')
у меня такое ощущение, что всякий раз, когда я нажимаю на кнопку «оплатить с помощью Paypal», чтобы отправить запрос, что-то блокирует ее, поэтому возникает ошибка 404.
- ссылка на сайт, пожалуйста, вы можете использовать поддельные фильтр расширение для входа и помочь мне проверить проблему Также :
- Отсутствие проблем с CORS-POLICY
- Url фронтенда правильно помещен в разрешенные origins
- REACT_BASE_URL также правильно размещен в моих settings.py и views.py
Я просто не знаю, в чем проблема, я до сих пор пробовал все, любой, кто может помочь мне, я ценю спасибо
код бэкенда
@api_view(['POST'])
def initiate_paypal_payment(request):
if request.method == 'POST' and request.user.is_authenticated:
tx_ref = str(uuid.uuid4())
user = request.user
cart_id = request.data.get('cart_id')
#checking if cart_id is available
if not cart_id:
return Response({"error": "Cart ID is required"}, status=status.HTTP_400_BAD_REQUEST)
try:
cart = Cart.objects.get(cart_id=cart_id)
except Cart.DoesNotExist:
return Response({"error": "Cart not found"}, status=status.HTTP_404_NOT_FOUND)
from decimal import Decimal
amount = sum(Decimal(cake.cake.price) * Decimal(cake.quantity) for cake in cart.cakes.all())
tax = amount * Decimal('0.18')
total = amount + tax
payment = paypalrestsdk.Payment({
"intent": "sale",
"payer": {"payment method": "paypal"},
"redirect_urls": {
"return_url": f"{BASE_URL}/status?paymentStatus=success&tx_ref={tx_ref}",
"cancel_url": f"{BASE_URL}/status?paymentStatus=cancel"
},
"transactions": [{
"item_list": {
"items": [{
"name": "Cart-item",
"sku": "cart",
"price": f"{total:.2f}",
"currency": "USD",
"quantity": 1
}]
},
"amount": {
"total": f"{total:.2f}",
"currency": "USD"
},
"description": f"Payment for cart items for user"
}]
})
transaction, created = Transaction.objects.get_or_create(
tx_ref=tx_ref,
cart=cart,
user=user,
amount=total,
status='pending',
)
if payment.create():
for link in payment.links:
if link.rel == 'approval_url':
return Response({'approvalUrl': str(link.href)}, status=status.HTTP_201_CREATED)
return Response({'error': payment.error}, status=status.HTTP_400_BAD_REQUEST)