I'm having the local variable referenced before assignment error and I have tried a lot of ways that I can use to fix this. Any help would be greatly appreciated
This is my Views.py (the error after the top of the second if statement)
def call_back_url(request):
reference = request.GET.get('reference')
# We need to fetch the reference from PAYMENT
check_pay = PayHistory.objects.filter(paystack_charge_id=reference).exists()
if check_pay == False:
# This means payment was not made error should be thrown here...
print("Error")
else:
payment = PayHistory.objects.get(paystack_charge_id=reference)
# We need to fetch this to verify if the payment was successful.
def verify_payment(request):
url = 'https://api.paystack.co/transaction/verify/'+reference
headers = {
'Authorization': 'Bearer '+settings.PAYSTACK_SECRET_KEY,
'Content-Type' : 'application/json',
'Accept': 'application/json',
}
datum = {
"reference": payment.paystack_charge_id
}
x = requests.get(url, data=json.dumps(datum), headers=headers)
if x.status_code != 200:
return str(x.status_code)
results = x.json()
return results
initialized = verify_payment(request)
if initialized['data']['status'] == 'success':
PayHistory.objects.filter(paystack_charge_id=initialized['data']['reference']).update(paid=True)
new_payment = PayHistory.objects.get(paystack_charge_id=initialized['data']['reference'])
instance = Membership.objects.get(id=new_payment.payment_for.id)
sub = UserMembership.objects.filter(reference_code=initialized['data']['reference']).update(membership=instance)
user_membership = UserMembership.objects.get(reference_code=initialized['data']['reference'])
Subscription.objects.create(user_membership=user_membership, expires_in=dt.now().date() + timedelta(days=user_membership.membership.duration))
return redirect('subscribed')
return render(request, 'payment.html')
def subscribed(request):
return render(request, 'subscribed.html')
try:
def verify_payment(request):
url = 'https://api.paystack.co/transaction/verify/'+reference
headers = {
'Authorization': 'Bearer '+settings.PAYSTACK_SECRET_KEY,
'Content-Type' : 'application/json',
'Accept': 'application/json',
}
datum = {
"reference": payment.paystack_charge_id
}
x = requests.get(url, data=json.dumps(datum), headers=headers)
if x.status_code != 200:
return str(x.status_code)
results = x.json()
return results
def call_back_url(request):
reference = request.GET.get('reference')
# We need to fetch the reference from PAYMENT
check_pay = PayHistory.objects.filter(paystack_charge_id=reference).exists()
if check_pay == False:
# This means payment was not made error should be thrown here...
print("Error")
else:
payment = PayHistory.objects.get(paystack_charge_id=reference)
# We need to fetch this to verify if the payment was successful.
initialized = verify_payment(request)
if initialized['data']['status'] == 'success':
PayHistory.objects.filter(paystack_charge_id=initialized['data']['reference']).update(paid=True)
new_payment = PayHistory.objects.get(paystack_charge_id=initialized['data']['reference'])
instance = Membership.objects.get(id=new_payment.payment_for.id)
sub = UserMembership.objects.filter(reference_code=initialized['data']['reference']).update(membership=instance)
user_membership = UserMembership.objects.get(reference_code=initialized['data']['reference'])
Subscription.objects.create(user_membership=user_membership, expires_in=dt.now().date() + timedelta(days=user_membership.membership.duration))
return redirect('subscribed')
return render(request, 'payment.html')
def subscribed(request):
return render(request, 'subscribed.html')