PHP-форма
Во многих случаях удобно загружать форму оплаты стандартными средствами языка программирования вашего сервера. Сделать это можно с использованием обычного POST запроса. Ниже мы рассмотрим пример загрузки и отображения формы на PHP.
Форма со свободной суммой
По аналогии с IFRAME-формой или HTML-формой можно использовать форму со свободной суммой.
В этом случае достаточно сделать POST запрос без параметров на следующий URL:
https://demo.paykeeper.ru/form/inline/
, где demo.paykeeper.ru
необходимо заменить на адрес вашего сервера. Обычно он имеет вид
https://example.server.paykeeper.ru
Пример загрузки и отображения формы на PHP:
1 2 3 |
<?php echo file_get_contents("https://demo.paykeeper.ru/form/inline/"); ?> |
Результатом будет форма следующего вида:
Настройка полей формы производятся в личном кабинете PayKeeper в разделе «Настройка формы оплаты».
Форма с изначально заданными параметрами
В случае, если предполагается, что в дальнейшем сумму оплаты изменить нельзя, то загрузка формы должна быть произведена POST запросом по URL: https://demo.paykeeper.ru/order/inline/
, где demo.paykeeper.ru
необходимо заменить на адрес Вашего сервера.
В эту форму оплаты нужно предварительно передать POST параметры: сумму заказа, номер заказа, идентификатор плательщика.
Параметр | Назначение |
clientid | Идентификатор пользователя в системе предприятия. Например, логин на сайте, id в базе данных и т.п. |
sum | Сумма заказа в рублях. Допустимы дробные значения. |
orderid | Номер заказа в системе предприятия. |
client_phone | Номер телефона пользователя. |
Ниже приведён пример на PHP с передачей параметров в форму и отображением формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $client_login="Иванов Иван"; $orderid="9933413"; $order_sum="1530"; $optional_phone="9183331122"; $payment_parameters = http_build_query(array( "clientid"=>$client_login, "orderid"=>$orderid, "sum"=>$order_sum, "client_phone"=>$optional_phone)); $options = array("http"=>array( "method"=>"POST", "header"=> "Content-type: application/x-www-form-urlencoded", "content"=>$payment_parameters )); $context = stream_context_create($options); echo file_get_contents("https://demo.paykeeper.ru/order/inline/",FALSE, $context); # Вместо demo.paykeeper.ru нужно указать адрес вашего сервера paykeeper ?> |
Можно также, при необходимости, указать корзину товаров, которая будет использоваться для формирования чека по 54-ФЗ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<?php $client_login="Иванов Иван"; $orderid="9933413"; $optional_phone="9183331122"; /* Массив товаров в заказе */ $basket = array( array( 'name' => 'Тортилья, 20 см, 756 г', 'count' => '5', 'price' => '381.00' ) ); /* Собираем массив товаров для paykeeper */ /* https://docs.paykeeper.ru/onlain-kassa-54-fz/tovary-v-cheke-54-fz-full/ */ $total = 0; $prods = array(); foreach ($basket as $row) { $prods[] = array( 'name' => $row['name'], 'price' => $row['price'], 'quantity' => $row['count'], 'sum' => $row['price'] * $row['count'], 'tax' => 'none', 'item_type' => 'goods', ); $total += $row['price'] * $row['count']; } /* Доставка */ $prods[] = array( 'name' => 'Доставка', 'price' => 300, 'quantity' => 1, 'sum' => 300, 'tax' => 'none', 'item_type' => 'service', ); $total += 300; $payment_parameters = http_build_query(array( "clientid"=>$client_login, "orderid"=>$orderid, "sum"=>$total, "client_phone"=>$optional_phone, "cart"=>json_encode($prods))); $options = array("http"=>array( "method"=>"POST", "header"=> "Content-type: application/x-www-form-urlencoded", "content"=>$payment_parameters )); $context = stream_context_create($options); echo file_get_contents("https://demo.paykeeper.ru/order/inline/",FALSE, $context); # Вместо demo.paykeeper.ru нужно указать адрес вашего сервера paykeeper ?> |
Если все проделано правильно, форма будет выглядеть следующим образом: