GetPayAPI: руководство для программистов
Инструкция по настройке платежного шлюза GetPayAPI
Этот раздел предназначен для программистов, которым необходимо реализовать взаимодействие с системой приема платежей GetPayAPI.
-
Подключение по протоколам GetPayAPI
- полнофункциональная реализация с системой приема платежей — представлена ниже.
-
Готовые скрипты для работы с GetPayAPI
Готовые скрипты для подключения нашего платежного решения написаны на языке PHP и обеспечивают интеграцию функций платежей в любой системе.
Общее описание системы
При подключении интернет-сервиса (ИС) к платежному движку вы получаете доступ в административную систему — личный кабинет.
Личный кабинет позволяет
- проверять баланс от текущих продаж;
- формировать отчет о продажах за период;
- экспортировать отчеты в бухгалтерскую систему;
Процесс оплаты
Покупатель интернет-системы после выбора покупки желает сделать оплату. Магазин формирует сумму оплаты в USDT, которую данный покупатель должен оплатить и предлагает покупателю выбрать желаемый способ оплаты, после чего делает запрос в наш платежный интерфейс для получения инструкций к оплате. Полученные инструкции магазин показывает на своей странице своему клиенту. Альтернативный вариат предоставляет возможность переадресовать клиента на наш сайт, где он получит те же самые платежные инструкции. После поступления оплаты интернет-сервису отправляется уведомление об успешной оплате, что дает возможность интернет-ресурсу продолжить выполнение заказа клиента.
Кодировка полей
По умолчанию кодировка полей воспринимается как UTF-8
.
URL для передачи информации
Запрос на оплату передается на url https://api.getpayapi.com/saleapi.php
Основы протокола
Обмен данными выполняется через http/s-POST
-запрос, в котором передаются три переменные: command
, agent
и sign
.
Переменная agent
является номером магазина в сервисе, который доступен в личном кабинете.
Переменная command
содержит json/xml-код, который после создания был base64-кодирован и получившаяся строка передается в переменной command
, например:
json: $command = base64_encode(“{"oper":"pay","order":56217}”);
xml: $command = base64_encode(“<data><oper>pay</oper><order>56217</order></data>”);
Подробнее о sign
Из чего он состоит:
$command.$password
Последний параметр $password
— это строка-пароль, который известен только торговой точке и сервису платежей.
Для склеенных переменных $command
и $password
необходимо вычислить хэш по алгоритму SHA-256
Т.е. в параметрах php это выглядит так:
$sign = hash('sha256', $command.$password);
Пример такой строки:
A0MzBcdTA0M2RcBbdTA0MzBcIiIsImVudGl0eV90eXBlIjoyfQ==j8YUDiwjShsd7dh4n88ySUXHE874SD
Результат вычисления хэша для вышеприведенной строки по алгоритму SHA-256:
ef56ab29240439b57ed0562ad7800a9ccd320569852db79277a3f8c1e1254159
Параметры оплаты
Json/xml-код, содержащий параметры оплаты, имеет следущий вид:
{"oper":"","pay_type":"","amount":"","order":"","pay_show":"","info":"","pay_email":"", "pay_result":"","pay_return":"","lang":"","time":""}
<data> <oper></oper> <pay_type></pay_type> <amount></amount> <order></order> <pay_show></pay_show> <info><![CDATA[ ]]></info> <pay_email></pay_email> <pay_result><![CDATA[ ]]></pay_result> <pay_return><![CDATA[ ]]></pay_return> <lang></lang> <time></time> </data>
Назначение параметров указано ниже:
oper
— тип операции:pay
- реальная оплата,test
- имитация оплатыpay_type
— тип оплаты: 41 – USDT TRC20.amount
— номинал оплаты в копейкахorder
— порядковый номер поручения в системе учета магазина (целое неповторяющееся число).pay_show
— (необязятельно
) признак необходимости вывода платежной страницы сервиса на экран плательщикка,1
- вернуть платежную страницу,0
- вернуть данные для платежной страницы.info
— (необязятельно
) информация о заказе в системе магазина, для которого формируется оплатаpay_email
— (необязятельно
) емейл покупателяpay_result
— (необязятельно
) URL на сервере магазина, на который будет передан результат оплаты.pay_return
— (необязятельно
) URL для возврата клиента на сайт интерент-сервиса.lang
— (необязятельно
) тип языкового интерфейса (en/ua/ru), не обязательный параметрtime
— время создания поручения в системе магазина в виде 20210130162514
При указании параметра pay_show
в 1
система выведет на экран плательщику платежную инструкцию для оплаты, в этом случае
поля info
, pay_email
, pay_return
должны быть заполнены.
При указании параметра pay_show
в 0
система в ответ вернет параметры оплаты, которые необходимы для приема платежа:
{"err":"", "errtxt":"", "pay_type": "", "order": "", "pay_uniq": "", "typeanswer": "", "dataanswer":""}
Назначение параметров указано ниже:err
— наличие ошибки,no
- отсутствие ошибки,yes
- наличие ошибкиerrtxt
— расшифровка ошибки, еслиerr
равноyes
pay_type
— тип проводимой оплатыorder
— порядковый номер полученный от магазина.pay_uniq
— уникальный номер транзакции на стороне сервераtypeanswer
— тип ответа,1
- тестовый параметр (адрес, номер счета),2
- закодированная платежная формаdataanswer
— содержимое ответа
Выходные параметры
Возврат информации о принятой оплате осуществляется на URL, указанный в интерфейсе личного кабинета для возврата результата,
или на URL, указанный ранее в команде pay в строке pay_result
методом POST
.
Возвращаемые параметры
Параметры возврата и порядок формирования соответстсвуют порядку формирования платежного запроса, за исключением того, что переменная
command
имеет название answer
, формат ответа (json/xml) указывается в настройках в личном кабинете.
Json/Xml-код, содержащий параметры ответа, имеет следущий вид:
{"oper":"", "order":"", "pay_uniq":"", "pay_type":"", "paid_amount":"", "paid_time":"", "paid_timeUNIX":""}
<answer> <oper></oper> <order></order> <pay_uniq></pay_uniq> <pay_type></pay_type> <paid_amount></paid_amount> <paid_time></paid_time> <paid_timeUNIX></paid_timeUNIX> </answer>
Назначение параметров указано ниже:
oper
— тип операции:pay
- реальная оплата,test
- имитация оплаты, тестовый режимorder
— порядковый номер поручения в системе учета магазина, переданный ранееpay_uniq
— уникальный номер транзакции на стороне сервераpay_type
— тип оплатыpaid_amount
— номинал принятой оплаты в копейкахpaid_time
— время приема платежа в виде 20210130162514paid_timeUNIX
— время приема UNIX time stamp
Когда ваш возвратный URL получит результат оплаты, ваш скрипт должен ответить шлюзу OK
(две большие латинские буквы „O“ и „K“). После этого шлюз прекратит попытки отправить вам результат заново.
Безопасный обмен данными
Для повышения безопасности при обмене данными, а так же в случае отсутствия возможности принимать на вашем сервере входящие уведомления о проведенных платежах у вас есть возможность инициировать запрос на получение выписки по принятым платежам. В этом случае вы получаете список приянтых платежей и проводите те платежи, которых не было в предыдущем запросе выписки. Описание команд указано в разделе "Команды управления".
Команды управления
URL для передачи запросов
Комманда передается на url https://api.getpayapi.com/saleapi_control.php
Для получения информации о платежах и управления вашим счетом без входа в личном кабинет созданы команды getbalance
, statement
и outpay
Json/xml-код, содержащий параметры команд, имеет следущий вид:
{"cmd":"getbalance", "time":"20220715211415"}
{"cmd":"statement", "pay_type":"", "start":"", "end":"", "time":"20220715211415"}
{"cmd":"outpay", "pay_type":"", "outsumma":"", "outdata":"", "time":"20220715211415"}
Назначение параметров указано ниже:
cmd
— тип операции:getbalance
,statement
илиoutpay
pay_type
— тип валюты: 41 – USDT TRC20.start
— дата начала отчета в формате YYYYmmddHHiiss (20220715211415)end
— дата окончания отчета в формате YYYYmmddHHiiss (20220715211415)outsumma
— сумма выплаты в выбранной валюте.outdata
— адрес/номер счета для выплаты.time
— время создания запроса в формате YYYYmmddHHiiss (20220715211415)
Готовые библиотеки для работы с отчетами: https://www.getpayapi.com/get_api_control.zip