Программирование платежного интерфейса на языке PHP
В этом разделе вы найдете пример программирования нашего платежного шлюза на языке PHP. Набор скриптов для интеграции функций платежного шлюза состоит из следующих файлов:
orders.sql
— дамп базы данных, которая используется в работе;orderpay.php
— скрипт, формирующий заказ на оплату в интернет-магазине;resultpay.php
— скрипт, принимающий результат об оплате от платежного сервера;paygate_fun.php
— набор функций, реализующий взаимодействие с платежным шлюзом;paygate_inc.php
— скрипт, содержащий константы для работы интернет-магазина.
Для интеграции функций платежного шлюза необходимо создать таблицу баз данных с именем orders
из дампа orders.sql
.
Оставшиеся файлы выложите в директорию вашего сайта.
Для правильной работы скриптов необходимо внести изменения в файл paygate_inc.php
. Это делается только один раз при установке скрипта:
<?php
//****************************************
//******* КОНСТАНТЫ **********************
//****************************************
// URL интернет-магазина
$shop_url = "moy.internetmagazin.com";
// Указываем номер мерчанта (магазина), полученный при регистрации
$merchant = 3;
// Устанавливаем секретный ключ, с помощью которого формируется цифровая подпись
$SECRETCODE = "hhcn3h3h3dhchc";
// URL возврата результата транзакции от платежного сервера
$urlresult = "https://$shop_url/resultpay.php";
// URL вызова платежной функции
$pay_gate_url = "https://money.ua/salenew.php";
// Устанавливаем e-mail администратора магазина
$shopadmin = "_email_of_shop_admin_";
// **************************************
// Создаем подключение к базе данных вашего магазина
$base = "имя.базы";
$userbase = "имя.пользователя.базы";
$userpass = "пароль.пользователя.бд";
$dbc=mysql_connect ("localhost", $userbase, $userpass);
// IP-адрес шлюза MONEY.UA для безопасной проверки
$MONEYUA_IP_GATE = '185.196.68.45';
?>
Сама работа скрипта по взаимодействию с платежным сервером заключается в подготовке пользователю полей формы, которые передаются на платежный сервер,
пример подготовки данных для пользователя указан в файле orderpay.php
:
<?
// Редакция тестовой программы (2) от 25/07/2021
// вызываем библиотеки
require "paygate_fun.php";
require "paygate_inc.php";
// ************* ПАРАМЕТРЫ ТЕСТОВОГО ЗАКАЗА ДЛЯ ПРИМЕРА ***************
// Указываем, с кого снимается комиссия при приеме платежа:
// 1 — за счет фирмы,
// 2 — за счет покупателя,
$comis = '2';
// ************ ИНИЦИАЛИЗАЦИЯ ДАННЫХ ПО КОНКРЕТНОМУ ЗАКАЗУ ************
$ordernum = 269; // номер заказа — уникальное число, идентифицирующее конкретный заказ в системе магазина
$info = "МФУ Samsung SCX-3405W, бумага А4 Svetocopy 100 листов ($ordernum)";
// Содержание заказа пользователя
$mp = 39; // определяем, что пользователь выбрал оплату через Интернет-банкинги
$mp_sub = 2; //указываем, что выбрана оплата через МОНОБАНК
$summa = 1070.00; // сумма в гривнах
$summa = round($summa, 2); // сумма в гривнах - нормализация
// получение данных полей формы для осуществления платежа
$formfields = get_data4paygate($ordernum, $info, $summa, $deliver, $comis, $testmode, $mp, $mp_sub);
echo <<<FRE
Оплата: $info<br>
Сумма: $summa<br>
<form method="POST" action="$pay_gate_url">
$formfields
<input type=submit value="Оплатить!" name=B1>
</form>
FRE;
?>
Результат от платежного сервера возвращается на URL скрипта resultpay.php
, который в случае успешной оплаты присылает на email-адрес администратора интернет-магазина сообщение об успешном поступлении оплаты за заказ:
<?
// Вызываем библиотеки
require "paygate_fun.php";
require "paygate_inc.php";
$ip =$_SERVER\["REMOTE_ADDR"\];
$debugstr = myprint($_POST)."\n".$ip;
// Получаем номер оплаченного заказа
list($ordernum, $info) = get_ordernum();
// Отправляем администратору письмо о том, что заказ оплачен и можно делать работу
$msg = "пришла оплата заказа от Prostoplateg\n Номер заказа: $ordernum \n $info \n\n $debugstr\n";
$subj = "[prostoplateg:pay] Payment for order $ordernum";
mail($shopadmin, $subj, $msg, $shopadmin, "");
exit;
?>
После получения номера оплаченного заказа $ordernum
система интернет-магазина при наличии такой проводки в личном кабинете может проводить этот заказ далее по своим системам и по своим протоколам.