callbacks.payment

Обратная связь, вызываемая API для уведомления удаленного сервера приложений о завершении транзакции. Используется для игровых платежей и для игровых подписок

НазваниеОбязательныйТипОписание
uid Да String

Идентификатор пользователя

transaction_id Да String

Уникальный идентификатор транзакции. Для некоторых действий (начало триального периода игровой подписки, отказ от подписки) параметр может отсутствовать

transaction_time Да Date

Время транзакции в формате yyyy-mm-dd HH:MM:SS

product_code Нет String

Код продукта

product_option Нет String

Код выбранного варианта продукта

amount Да int

Общая сумма в виртуальной валюте портала

currency Нет String

Валюта платежа (за исключением платежей в «ok»)

payment_system Нет String

Система оплаты в случае прямых платежей в валюте RUR

extra_attributes Нет String

JSON-кодированные пары ключей/значений, содержащие дополнительные параметры транзакции, которые передает приложение в методе FAPI.UI.showPayment.

trial_days Нет Long

Пробный период в днях купленной игровой подписки

card_promo Нет Boolean

Авторизация

Сессия запрещена

Необходимые права

  • VALUABLE_ACCESS

См. также пример проведения платежа в HTML-приложении с серверной частью на PHP.

  • Обратная связь вызывается 3 раза до получения успешного ответа HTTP. Каждая попытка имеет задержку 5 секунд. Если сервер не отвечает, транзакция будет отменена, а виртуальные деньги возвращены пользователю.
  • Работает только через HTTP GET;
  • Поддерживает ответы двух форматов - XML и JSON (см. примеры таких ответов ниже);
  • Тип содержимого должен быть “application/xml” или “application/json”;
  • В случае ошибки HTTP-заголовок “Invocation-error” должен содержать код ошибки;
  • Разработчик обязан проверять соответствие товара и его цены, передаваемых в параметрах product_code и amount. В противном случае злоумышленник сможет совершать любые покупки в игре за минимальную стоимость;
  • Разработчик должен проверять значение подписи sig из запроса.

Список адресов, с которых будет вызываться метод:

  • 217.20.145.192/28
  • 217.20.151.160/28
  • 217.20.153.48/28

Коды ошибок

ИмяКодОписание
UNKNOWN1Неизвестная ошибка
SERVICE2Сервис временно недоступен
CALLBACK_INVALID_PAYMENT1001Платеж неверный и не может быть обработан
SYSTEM9999Критический системный сбой, который невозможно устранить
PARAM_SIGNATURE104Неверная подпись

Варианты ответа в формате XML

<?xml version="1.0" encoding="UTF-8"?>
<callbacks_payment_response xmlns="http://api.forticom.com/1.0/">
    true
</callbacks_payment_response>
<?xml version="1.0" encoding="UTF-8"?>
<ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
    <error_code>1001</error_code>
    <error_msg>CALLBACK_INVALID_PAYMENT : Payment is invalid and can not be processed</error_msg>
</ns2:error_response>

Варианты ответа в формате JSON

true
{
    "error_code": 1001,
    "error_msg": "CALLBACK_INVALID_PAYMENT : Payment is invalid and can not be processed",
    "error_data": null
}

Тип

void

Параметры приложения

Данные о сессии пользователя

Метод

Список параметров

Используем для подписи secret_key = session_secret_key
Используем для подписи secret_key = application_secret_key
Используем для подписи secret_key = MD5(access_token + application_secret_key)
secret_key =
Сортируем и склеиваем параметры запроса и secret_key
Рассчитываем MD5 от полученной строки и получаем параметр sig