from rest_framework.response import Response
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import api_view
import logging
import requests
logger = logging.getLogger(__name__)
@api_view(['POST'])
@csrf_exempt
def wallet_top_up_view(request, *args, **kwargs):
try:
# Required variables
amount = float(request.data.get('amount', 600.0))
ko_test_email = '
space1...@gmail.com'
ko_test_name = 'Kaka Olawale'
# Required API variables/parameters
api_url = '
https://api.flutterwave.com/v3/charges?type=card'
qms_redirect_url = '
http://localhost:8000/api/payment/success/'
qms_ref = 'Welcome to Quickmed Platform, kindly proceed with payment'
secret_key = 'FLWSECK_TEST-869279d145197389f77808be9187e4a3-X' # Replace with your actual secret key
card_number = '5531886652142950'
cvv = '564'
expiry_month = '09'
expiry_year = '32'
headers = {
'Authorization': f'Bearer {secret_key}',
'Content-Type': 'application/json',
}
payload = {
"tx_ref": qms_ref,
"amount": amount,
"currency": "NGN",
"redirect_url": qms_redirect_url,
"order_id": "your_order_id",
"order_ref": "your_order_reference",
"payment_type": "card",
"customer": {
"email": ko_test_email,
"name": ko_test_name,
},
"card": {
"number": card_number,
"cvv": cvv,
"expiry_month": expiry_month,
"expiry_year": expiry_year,
}
}
# Make the POST request and store in the response variable
response =
requests.post(api_url, headers=headers, json=payload)
# Check if the response was successful
if response.ok:
payment_link = response.json().get("data").get("link")
return Response({"payment_link": payment_link}, status=201)
else:
return Response({"error": "Payment failed"}, status=response.status_code)
except Exception as e:
logger.exception("An error occurred in WalletTopUpView")
return JsonResponse({"error": str(e)}, status=500)