Преобразовать значение формы PHP при отправке

я настраиваю опцию пожертвования на веб-сайте, используя przelewy24.pl. У них есть этот стартовый шаблон для отправки значений методом $_GET на их веб-сайт.

Все работает нормально, кроме поля суммы. Przelewy24 нужна сумма gr (например, центы), и я хотел бы, чтобы жертвователь ввел целое число в полных злотых (например, $).

Если верхний не ясен - когда я набираю 100 в поле, он отправляет его przelewy24 как 100 гр, что будет 1 злотый. Мне нужно знать, как я могу отформатировать сумму, отправленную им, как в простом расчете - когда набирается 100, get отправляет 10000. (x * 100)

Используемая форма показана ниже. Краткое руководство доступно здесь, но только на польском языке.

<form method = "get" action = "https://sklep.przelewy24.pl/zakup.php">
<input type = "hidden" name = "z24_id_sprzedawcy" value = "TWOJ_ID">
<input type = "hidden" name = "z24_crc" value = "KLUCZ_ZAKUPU">
<input type = "hidden" name = "z24_return_url" value = "TWOJASTRONA.PL">
<input type = "hidden" name = "z24_language" value = "pl">
<table>
<tr>
<td align = "right">Nazwa produktu:</td> 
<td>
<input type = "text" name = "z24_nazwa" value = "Opłata za rezerwację NR: 04/234/A3953">
</td>
</tr>
<tr>
<td align = "right">Dodatkowy opis:</td>
<td>
<textarea name = "z24_opis" style = "width:250px">Dodatkowe informacje... 
</textarea>
</td>
</tr>
<tr>
<td align = "right">Do zapłaty:</td>
<td><input type = "text" name = "z24_kwota"></td><!--KWOTA W GROSZACH-->
</tr>
</table>
<input type = "submit" value = "zapłać z przelewy24.pl">
</form>

Без какого-либо кода невозможно реально помочь вам. Всего пара советов: - из формы действия вы отправляете сбор данных непосредственно в przelewy24 -> настройка формата в php невозможна (с javascript вы можете легко умножить значение при отправке, но, как донор, я бы рассмотрел изменение пожертвованной суммы как мошенничество).

Eineki 28.03.2019 13:31

@Eineki przelewy24 является платежным провайдером, поэтому пользователь увидит правильную сумму денег и, возможно, получит смс с реквизитами из своего банка, прежде чем принять платеж.

barbsan 28.03.2019 13:48

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

Eineki 28.03.2019 18:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете сделать это с помощью простого кода Javascript. Вам нужно получить значение из ввода, преобразовать его и поместить значение в input hidden:

function formatMoney(e) {
	document.getElementById('z24_kwota').value = (!isNaN(e.target.value) ? e.target.value : 0) * 100

	// just to debug.. you can remove this line:
	document.getElementById('final_value').innerHTML = document.getElementById('z24_kwota').value
}
<form method = "get" action = "https://sklep.przelewy24.pl/zakup.php">
<input type = "hidden" name = "z24_id_sprzedawcy" value = "TWOJ_ID">
<input type = "hidden" name = "z24_crc" value = "KLUCZ_ZAKUPU">
<input type = "hidden" name = "z24_return_url" value = "TWOJASTRONA.PL">
<input type = "hidden" name = "z24_language" value = "pl">
<table>
<tr>
<td align = "right">Nazwa produktu:</td> 
<td>
<input type = "text" name = "z24_nazwa" value = "Opłata za rezerwację NR: 04/234/A3953">
</td>
</tr>
<tr>
<td align = "right">Dodatkowy opis:</td>
<td>
<textarea name = "z24_opis" style = "width:250px">Dodatkowe informacje... 
</textarea>
</td>
</tr>
<tr>
<td align = "right">Do zapłaty:</td>
<td>
	<input type = "hidden" name = "z24_kwota" id = "z24_kwota">
	<input type = "text" onkeyup = "formatMoney(event)"></td><!--KWOTA W GROSZACH-->
</tr>
</table>
<input type = "submit" value = "zapłać z przelewy24.pl">
</form>

<!-- you can remove this line: -->
Final Value: <span id = "final_value"></span>

Попробуйте изменить значение перед отправкой формы, как показано ниже,

<form method = "get" id = "myform" action = "https://sklep.przelewy24.pl/zakup.php">
<input type = "hidden" name = "z24_id_sprzedawcy" value = "TWOJ_ID">
<input type = "hidden" name = "z24_crc" value = "KLUCZ_ZAKUPU">
<input type = "hidden" name = "z24_return_url" value = "TWOJASTRONA.PL">
<input type = "hidden" name = "z24_language" value = "pl">
<table>
<tr>
<td align = "right">Nazwa produktu:</td> 
<td>
<input type = "text" name = "z24_nazwa" value = "Opłata za rezerwację NR: 04/234/A3953">
</td>
</tr>
<tr>
<td align = "right">Dodatkowy opis:</td>
<td>
<textarea name = "z24_opis" style = "width:250px">Dodatkowe informacje... 
</textarea>
</td>
</tr>
<tr>
<td align = "right">Do zapłaty:</td>
<td><input type = "text" name = "z24_kwota"></td><!--KWOTA W GROSZACH-->
</tr>
</table>
<input type = "submit" value = "zapłać z przelewy24.pl">
</form>
<script
  src = "http://code.jquery.com/jquery-3.3.1.min.js"
  integrity = "sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8 = "
  crossorigin = "anonymous"></script>
<script type = "text/javascript">
    var firstSubmit = false;
    $('#myform').on('submit',function(e){  
        if (!firstSubmit){     
            e.preventDefault();        
            firstSubmit = true;
            var amount = parseInt($('input[name=z24_kwota]').val());
            $('input[name=z24_kwota]').val(amount*100);
            $('#myform').trigger('submit');        
        }
    })
</script>

Примечание. Я указал идентификатор формы как моя форма.

Другие вопросы по теме