Как правильно подключить платежный шлюз?

Есть простой тестовый CRUD проект на node.js и express.js, решил попробывать добавить платежный шлюз, работает он как на сайте learn.javascript.ru, перенаправляет на страницу шлюза для оплаты. Но, у меня возникли проблема.

В документации API указано, что нужно отправить POST запрос с данными или JSON данные. Проблема в том, что если добавить форму в таком виде, через devtools можно исправить значения данных формы.

Пример формы
<form action="https://www.portmone.com.ua/gateway/" method="post">
    <input type="hidden" name="payee_id" value="1185" />
    <input type="hidden" name="shop_order_number" value="76575j65465464161hhhh" />
    <input type="hidden" name="bill_amount" value="1"/>
    <input type="hidden" name="description" value="Опис замовлення"/>
    <input type="hidden" name="success_url" value="http://example.com/success.html" />
    <input type="hidden" name="failure_url" value="http://example.com/failure.html" />
    <input type="hidden" name="lang" value="ru" />
    <input type="hidden" name="encoding"  value= "UTF-8" />
    <input type="hidden" name="exp_time"  value= "400" />
</form>

Исходя из этого я предполагаю, что нужно отправлять запрос к шлюзу со стороны сервера. Для этого пробовал использовать запрос
request({
  url: 'https://www.portmone.com.ua/gateway/',
  method: 'POST',
  followAllRedirects: true,
  jar: true,
  form: formData
}, function (error, response, body) {
  if (error) {
    console.log(error);
  } else {
    res.send(body);
  }
});

Данный запрос работает. Но, он не перенаправляет пользователя вместе с данными, а получает страницу. Пробовал подсмотреть код на learn.javascript.ru но, он обфусцирован.

Прошу, обясните как правильно реализовать/как должен работать данный функционал и какие методы использовать.
  • Вопрос задан
  • 476 просмотров
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Исходя из этого я предполагаю, что нужно отправлять запрос к шлюзу со стороны сервера.


Тут не надо предполагать, если в документации написано что это должно быть на клиенте, значит на клиенте, если на сервере - то на сервере. Насколько я вижу никаких секретов и кодов там нет, так что для клиента это норм.
Если кто-то залезет и в девтулзах поменяет значения - то он или оплатит не туда, или не ту сумму, в любом случае он просто создает себе проблему, а вы проверяете данные платежа на сервере и если платеж не валидный то не подтверждаете его и не даете ему то что он покупал.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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