Я не могу прочитать параметры POST, отправленные платежным шлюзом после обработки платежа. Платежный шлюз перенаправляет на returnUrl
(я передаю это платежному шлюзу до обработки платежа) с некоторыми параметрами по запросу POST.
В url.py
path('cashfreeresponse/',views.cashfree_response, name='cashfree_response'),
в views.py
@csrf_exempt
@login_required
def cashfree_response(request):
print(request.method)
if request.method == "POST":
print('inside post method')
print(request.POST.get('cf_subReferenceId'))
if request.method == "GET":
print('inside get method')
print(request.GET.get('cf_subReferenceId'))
print(request.method)
отображается как GET
, но предполагается, что это POST
метод также print(request.GET.get('cf_subReferenceId'))
и print(request.POST.get('cf_subReferenceId'))
отображаются как None
.
Но это похоже на параметры отправки платежного шлюза как метод POST. Когда я передаю returnUrl
как http://127.0.0.1:8000/cashfreeresponse
вместо http://127.0.0.1:8000/cashfreeresponse/
('/' отсутствует в первом), тогда я получаю ошибку как
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/cashfreeresponse/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
, но я вижу на моей странице Google chrome, что параметры отправки платежного шлюза с запросом POST. На следующем рисунке показаны параметры, отправленные платежным шлюзом по запросу POST
Если в настройках изменить значение urls.py на
path('cashfreeresponse',views.cashfree_response, name='cashfree_response'),
.py к
APPEND_SLASH = False
и returnUrl
к http://127.0.0.1:8000/cashfreeresponse
, тогда я не получаю никакой ошибки, но все еще не получаю никаких параметров. Как прочитать параметры, отправленные платежным шлюзом по запросу POST? Здесь - документация для платежного шлюза.
Обновление:
Я перепробовал все различные комбинации APPEND_SLA SH, urls.py и returnUrl , Это не сработало ни в коем случае. Ниже приведены типы проблем, которые я получил с каждой комбинацией.
APPEND_SLASH = True
path('cashfreeresponse/',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse/'
APPEND_SLASH = True
path('cashfreeresponse',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse'
APPEND_SLASH = False
path('cashfreeresponse/',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse/'
APPEND_SLASH = False
path('cashfreeresponse',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse'
Для всех вышеперечисленных комбинаций django перенаправляется как метод GET и данные POST были потеряны.
APPEND_SLASH = True
path('cashfreeresponse/',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse'
для в этом случае я получаю ошибку ниже
Вы назвали этот URL через POST, но URL не заканчивается на sla sh, и у вас установлено APPEND_SLA SH. Django не может перенаправить на URL sla sh при сохранении данных POST. Измените свою форму, указав 127.0.0.1:8000/cashfreeresponse/ (обратите внимание на завершающий sla sh), или установите APPEND_SLASH = False в настройках Django.
APPEND_SLASH = True
path('cashfreeresponse',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse/'
APPEND_SLASH = False
path('cashfreeresponse',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse/'
для этих обоих случаев, Я получаю ошибку проверки csrf.
APPEND_SLASH = False
path('cashfreeresponse/',views.cashfree_response, name='cashfree_response'),
returnUrl = 'http://127.0.0.1:8000/cashfreeresponse'
для этого случая я получил страницу не найдена ошибка.