Есть метод в файле api.php, который выглядит следующим образом:
public function cnb_form($params)
{
$language = 'ru';
if (isset($params['language']) && $params['language'] == 'en') {
$language = 'en';
}
$params = $this->cnb_params($params);
$data = base64_encode( json_encode($params) );
$signature = $this->cnb_signature($params);
return sprintf('
<form method="POST" action="%s" accept-charset="utf-8">
<input type="text" name="price">
%s
%s
<input type="submit">
</form>
',
$this->_checkout_url,
sprintf('<input type="hidden" name="%s" value="%s" />', 'data', $data),
sprintf('<input type="hidden" name="%s" value="%s" />', 'signature', $signature),
$language
);
$price = $_POST['price'];
}
Мне нужно передать значение суммы (price) в другую функцию (находится в файле my.php)
function addbalance($price){
require("api.php");
$micro = sprintf("%06d",(microtime(true) - floor(microtime(true))) * 1000000);
$number = date("YmdHis");
$order_id = $number.$micro;
$merchant_id= "****";
$signature="****";
//$desc = $_GET[‘desc’];
//$order_id = $_GET[‘order_id’];
$liqpay = new LiqPay($merchant_id, $signature);
$html = $liqpay->cnb_form(array(
'version' => '3',
'amount' => $price,
'currency' => 'UAH',
'description' => "Пополнение баланса",
'order_id' => $order_id
));
echo $html;
}
Параметр введённого баланса пользователем не передаётся в функцию. В ООП новичок. И после длительных раздумий совсем запутался. Заранее благодарю за помощь!
Штука в том, что весь этот веб работает немного иначе. Взаимодействие пользователя с вашей программой происходит
через обмен HTTP запросами и ответами. То есть, сперва пользователь запросит (GET-запрос) у вашего приложения HTML-форму для ввода данных,
которую вы собираете в функции cnb_form
. Если у вас хоть что-то работает, то где-то далее по коду вы отправляете ответ пользоватлею
(в PHP это происходит не совсем явно, но если вы делаете echo или print, то строка попадает в тело ответа). Затем пользователь заполнит форму
и отправит новый запрос в ваше приложение (на этот раз POST-запрос) и только тогда у вас будет $_POST['price']
.
Обратите внимание, что в PHP (как и во многих других языках) return
из функции прервёт выполнение функции, а всё, что расположено ниже просто не выполнится.
Последняя строчка в cnb_form
никогда не отрабатывает. Кроме того, сам код $price = $_POST['price'];
не имеет смысла в контексте GET-запроса.
Теперь ответ на ваш вопрос. $price
является аргументом функции addbalance
и передавать его надо при вызове функции. В самом простом
случае вам надо отыскать вызов и передать туда значение из глобальнго массива $_POST
: addbalance($_POST['price'])
. Однако, скорее всего, это
не решит вашей проблемы, потому что она, видимо, заключается в незнании PHP.
Подозреваю, что вы накопировали кода из документации LiqPay или позаимствовали у других разработчиков и пытаетесь это как-то завести. Отступитесь. Прежде всего разберитесь с тем как работает сайт, изучите основы PHP. И когда начнёт возникать понимание того, что происходит в коде, который вы демонстрируете, вы сможете справится с задачей подключения платёжной системы. А пока либо доверьте это дело более опытным разработчикам, либо отложите задачу до тех пор, пока не наберётесь опыта.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Простейшая реализация чата со списком юзеров онлайнОдин SSE (стрим) выдаёт появившиеся новые строки в txt-файле, а другой скрипт с SSE отвечает...
Нужно провести манипуляции с архивами, то есть добавить в них файлыС zip понятно - стандартная встроенная библиотека в php уже протестированна