Задать вопрос
@AntonIgin

Как защитить в форме сумму оплаты от редактирования?

Начну с описания реализации системы оплаты.
Для оплаты используется сервис Яндекс.Денег, создана форма с атрибутами, необходимыми для запроса и перехода на защищенную зону. Но вот в чем проблема: в коде страницы пользователь может поменять любые данные платежа, в том числе сумму и адресата. Да, можно, конечно, каждый заказ перепроверять вручную, но это не то.

Собственно, код формы:

<form action="https://money.yandex.ru/quickpay/confirm.xml" id ='formx' method="post" onsubmit='call()'>
		{{ form.as_p}}
		{% csrf_token %}
		<input type="hidden" id='receiver' name="receiver" value="41001681163599"> 
		<input type="hidden" id='quickpay-form' name="quickpay-form" value="small"> 
		<input type="hidden" id='targets' name="targets" value="транзакция J-star"> 
		<input type="hidden" id='sum' name="sum" value="{{cart.get_total_price}}"> 
		<input type="hidden" id='paymentType' name="paymentType" value="AC">
		<input type='submit' value='Отправить' onClick='create_Order()'/>
		</form>


Единственный вариант, который мне видится:
1. Сохранять т.н. анонимный заказ. В корзине есть кнопка "Оформить заказ", которая ведет на форму с данными, отправляемыми сразу на Яндекс. К представлению, подключенному к этой кнопке, можно прикрепить создание объект заказа с номером, содержимым и суммой, но без данных о клиенте".
2. Перенаправлять на форму оформления, как и раньше. Но есть отличие: теперь на форме нет суммы, комментария и кошелька-получателя.
3. Отправлять данные формы не на Яндекс, а на мою вьюху, которая, в свою очередь, допишет анонимный заказ, созданный ранее, и сделает запрос на Яндекс, перенаправив пользователя.

Собственно, вопрос: как это осуществить? Просьба рассматривать задачу без привязки к Яндексу, можете поставить на его место любой неподконтрольный нам сайт.

P.S. Короче, мне надо во вьюхе сымитировать POST-запрос формы со всеми признаками, в частности с редиректом.
  • Вопрос задан
  • 378 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 2
devspec
@devspec
Помогло? Отметь решением
В общем, это неверный подход. От подмены данных в POST-запросе кто вас защитит?
Контролировать сумму, оплаченную за товар, нужно уже после оплаты путем сверки цифровой подписи, которая вернулась вам от мерчанта.
Ответ написан
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Вам нужно отслеживать ответный запрос с Яндекс.Денег где будет конкретная сумма которая прошла. А кто там что запросе будет подделывать - его личные проблемы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы