예제 #1
0
def sync(request):
    keys = RazorpayKeys.objects.first()
    payment = RazorpayPayments(keys.api_key, keys.api_secret)
    invoices = Invoice.objects.all()
    for invoice in invoices:
        if invoice.status != 'paid':
            invoice_details = payment.fetch_invoices(invoice.invoice_id)
            invoice.status = invoice_details['status']
            invoice.save()
            if invoice.status == 'paid':
                orders = Order.objects.filter(
                    order_id=invoice_details['order_id'])
                if len(orders) == 0:
                    order_details = payment.fetch_orders(
                        invoice_details['order_id'])
                    payment.save_order(order_details)
                if invoice_details['payment_id']:
                    payments = Payment.objects.filter(
                        payment_id=invoice_details['payment_id'])
                    if len(payments) == 0:
                        payment_details = payment.fetch_payment(
                            invoice_details['payment_id'])
                        payment.save_payment(payment_details)

    return JsonResponse({"message": "synced"})
예제 #2
0
def webhook(request):
    if request.method == 'POST':
        data = json.loads(request.body)
        if 'payload' not in data or 'invoice' not in data['payload']:
            return JsonResponse({"message": "Invalid Data"})

        invoice_entity = data['payload']['invoice']['entity']
        order_entity = data['payload']['order']['entity']
        payment_entity = data['payload']['payment']['entity']

        invoice = Invoice.objects.get(invoice_id=invoice_entity['id'])
        invoice.status = invoice_entity['status']
        invoice.save()
        RazorpayPayments.save_payment(payment_entity)
        RazorpayPayments.save_order(order_entity)
        return JsonResponse({"message": "Success"})

    return JsonResponse({"message": "Method Not Allowed"})
예제 #3
0
    def _initiate_payment(self, user, profile, title, description, amount):
        keys = self._get_keys()
        payment = RazorpayPayments(keys.api_key, keys.api_secret)
        fullname = '{} {}'.format(profile.first_name, profile.last_name)
        customer = {
            "email": user.email,
            "contact": profile.contact,
            "name": fullname
        }

        items = [{
            "name": title,
            'description': description,
            "amount": amount,
            "currency": "INR"
        }]

        invoice = payment.create_invoice(customer=customer, items=items)

        return invoice