Интеграция Razorpay Django с URL обратного вызова (токен CSRF отсутствует или неверен.)

#python #django #razorpay

Вопрос:

Я пытаюсь использовать представление на основе классов с помощью Razor Pay, все работает отлично. Но когда я публикую данные тоже в том же виде, это выдает ошибку Forbidden (CSRF token missing or incorrect.): /buy-coin .

У меня здесь два вопроса

  1. Как мы можем освободить токен CSRF для метода post
  2. В коде Javascript Razorpay мы можем добавить csrf токен в URL обратного вызова.

Ссылка на интеграцию с Razorpay Python — https://razorpay.com/docs/payment-gateway/server-integration/python /

View.py

 class BuyCoinPageView(LoginRequiredMixin, View):
    def get(self, request, *args, **kwargs):
        client = razorpay.Client(auth=("scretKey", "secretKey"))
        data = { "amount": 10000, "currency": "INR", "receipt": "order_rcptid_11" }
        payment = client.order.create(data=data)
        print('Razor Pay - ', payment['id'])
        return render(request, "pricing-page.html", {'payment': payment})
    
    def post(self, request, *args, **kwargs):
        data = request.POST
        print(data)
        return render(request, "pricing-page.html")
 

HTML-ФАЙЛ

 <a href="#" id="rzp-button1" class="btn-buy">Buy Now</a>
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
<script>
var options = {
    "key": "rzp_test_hwAkAHZlKJdgee", // Enter the Key ID generated from the Dashboard
    "amount": "50000", // Amount is in currency subunits. Default currency is INR. Hence, 50000 refers to 50000 paise
    "currency": "INR",
    "name": "Acme Corp",
    "description": "Test Transaction",
    "image": "https://example.com/your_logo",
    "order_id": "{{payment.id}}", //This is a sample Order ID. Pass the `id` obtained in the response of Step 1
    "callback_url": "{% url 'buy_coin' %}",
    "prefill": {
        "name": "Gaurav Kumar",
        "email": "gaurav.kumar@example.com",
        "contact": "9999999999"
    },
    "notes": {
        "address": "Razorpay Corporate Office"
    },
    "theme": {
        "color": "#3399cc"
    }
};
var rzp1 = new Razorpay(options);
document.getElementById('rzp-button1').onclick = function(e){
    rzp1.open();
    e.preventDefault();
}
</script>
 

Журналы терминала —

 [08/Nov/2021 15:22:12] "GET /static/assets/css/style.css HTTP/1.1" 200 27172
[08/Nov/2021 15:22:12] "GET /media/exam-logos/Java-logo.jpg HTTP/1.1" 200 38915
Razor Pay -  order_IJ9ngRpV19pdEc
[08/Nov/2021 15:22:16] "GET /buy-coin HTTP/1.1" 200 8478
Forbidden (CSRF token missing or incorrect.): /buy-coin
[08/Nov/2021 15:22:37] "POST /buy-coin HTTP/1.1" 403 2519

 

Изображение ошибки браузера

Ответ №1:

напишите функцию для вашего обратного вызова и выполните исключение csrf

 from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def razorpay_call_back(request):
   "write your code here"