π¨βπ»Payment Notification
@require_POST
@csrf_exempt
def payvessel_payment_done(request):
payload = request.body
payvessel_signature = request.META.get('HTTP_PAYVESSEL_HTTP_SIGNATURE')
#this line maybe be differ depends on your server
#ip_address = u'{}'.format(request.META.get('HTTP_X_FORWARDED_FOR'))
ip_address = u'{}'.format(request.META.get('REMOTE_ADDR'))
secret = bytes("PVSECRET-", 'utf-8')
hashkey = hmac.new(secret,request.body, hashlib.sha512).hexdigest()
ipAddress = ["3.255.23.38", "162.246.254.36"];
if payvessel_signature == hashkey and ip_address in ipAddress:
data = json.loads(payload)
amount = float(data['order']["amount"])
settlementAmount = float(data['order']["settlement_amount"])
fee = float(data['order']["fee"])
reference = data['transaction']["reference"]
description = data['order']["description"]
settlementAmount = settlementAmount
###check if reference already exist in your payment transaction table
if not paymentgateway.objects.filter(reference=reference).exists():
#fund user wallet here
return JsonResponse({"message": "success",},status=200)
else:
return JsonResponse({"message": "transaction already exist",},status=200)
else:
return JsonResponse({"message": "Permission denied, invalid hash or ip address.",},status=400) Last updated