0

Am trying to verify user transaction on paystack. After a user makes payment, I want what to append the reference to the Api URL to check if the payment was succcessful. If the payment is successful then save the model.

import requests
from django.conf import settings


class Paystack:
    PAYSTACK_SECRET_KEY = "sk_test_3cd83d64a1de3a7334bdad47e3fdfa01bf16a059"
    base_url = "https://api.paystack.co"

    def verify_payment(self, reference, *args, **kwargs):
        path = f'/transaction/verify/{reference}'

        headers ={
              "Authorization": f"Bearer {self.PAYSTACK_SECRET_KEY}",
              "Content-Type":'application/json'
        }
        url = self.base_url + path
        response = requests.get(url, headers=headers)

        if response.status_code == 200:
              response_data = response.json()
              return response_data['status'], response_data['data']
        response_data = response.json()
        return response_data["status"], response_data["message"]

def process_payment(request, slug, amount, award, votes):
    reason = request.GET.get('reason')
    transaction_id = request.GET.get('reference')
    amount = (str(int(amount) / 100))
    paystack = Paystack()
    status = paystack.process_payment(self.reference)
    if status == "success":
        transaction = SuccessfulTransactionHistory(
            nominee_name=slug,
            transaction_id=transaction_id,
            amount=amount,
            award=award
        )
        transaction.save()
        Nomination.objects.filter(slug=slug).update(votes=F('votes') + votes)
        Award.objects.filter(slug=award).update(amount=F('amount') + amount)
        return redirect('vote:paymentsuccess', slug=slug)
    else:
        context = {
            'error': reason
        }
        transaction = FailedTransactionHistory(
            nominee_name=slug,
            transaction_id=transaction_id,
            amount=amount,
            award=award
        )
        transaction.save()
        return render(request, 'payment_error.html', context=context)

This is the eeror i get

AttributeError at /payment/Paul/000000000020/halotech-award-8/1/

'Paystack' object has no attribute 'process_payment'

spiritman
  • 47
  • 1
  • 8

1 Answers1

0

verify_payment vs process_payment.

    def verify_payment(self, reference, *args, **kwargs):
    status = paystack.process_payment(self.reference)
John S
  • 76
  • 2