API платежных терминалов v2.0
API каталога игр
API предназначена для получения каталога игр — списка всех доступных проектов в Xsolla. API предоставляет всю основную информацию по каждому проекту, такую как: название, значок проекта, параметры, необходимые для оплаты. Эта информация может быть использована для составления страницы оплаты в проекте.
API каталога игр полезен терминальным способам оплаты, желающим разместить кнопки игр в своем интерфейсе. Наличие кнопок игр вместо кнопки Xsolla в терминале позволит пользователю просто и привычно оплатить покупку в игре.
URL: https://api.xsolla.com/projects/list/index.php
Формат запроса
Параметры запроса для получения списка игр
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| ID | integer | ID контрагента платежной системы. Обязательный. | 184 |
| sign | integer | Подпись для предотвращения несанкционированного доступа. Обязательный. | 0a8d9fb24fcbac2efafec5e51045d05c |
Формирование подписи
Подпись служит для обеспечения безопасности при проверке и проведении платежей. Формируется с помощью алгоритма хеширования MD5 от строки, получаемой конкатенацией представленных выше параметров, разделенных знаком “|” в указанном ниже порядке.
- php
1md5(<ID>|<secret_key>)
secret_key: Секретный ключ контрагента.
Пример: Для контрагента #184 с секретным ключом “SecretKey” подпись формируется следующим образом:
$sign=md5(“184|SecretKey”)=0a8d9fb24fcbac2efafec5e51045d05c
Пример запроса:
https://api.xsolla.com/projects/list/index.php?id=184&sign=0a8d9fb24fcbac2efafec5e51045d05c
Формат ответа
Ответ на запрос выдается в формате XML и содержит список игр и основную информацию по каждой из них. XML имеет следующую структуру:
- php
1<projectlist>
2 <project>
3 <id>12345</id>
4 <name>Game</name>
5 <virtual_currency>Game of currency</virtual_currency>
6 <logo>http://static.xsolla.com/img/game/12345.gif</logo>
7 <limits>
8 <min>Minimum of amount game of currency</min>
9 <max>max of amount game of currency</max>
10 </limits>
11 <prompt>enter nickname of personage</prompt>
12 <v1>nickname of personage</v1>
13 </project>
14 ...
15</projectlist>
Описание полей
| Параметр | Тип | Описание |
|---|---|---|
| projectlist | array | Содержит список проектов (project). Параметр project описан ниже. |
| project | string | Содержит поля id, name, virtual_currency, logo, limits, prompt, “v1”, “v2”, “v3”, которые будут описаны ниже. |
| id | integer | ID игры. |
| name | string | Название игры. |
| virtual_currency | string | Название виртуальной валюты. |
| logo | string | Ссылка на логотип игры. |
| limits | array | Содержит поля min, max. Если у проекта не заданы лимиты (limits), данный блок не будет показан. |
| min | string | Минимальное количество виртуальной валюты. |
| max | string | Максимальное количество виртуальной валюты. |
| prompt | string | Приглашение к вводу параметров. |
| local | string | Язык интерфейса (локализация). |
| v1 | string | Приглашение к вводу основного параметра идентификации пользователя в проекте. |
| v2 | string | Приглашение к вводу дополнительного параметра идентификации пользователя в проекте. |
| v3 | string | Приглашение к вводу дополнительного параметра идентификации пользователя в проекте. |
Формат ответа в случае ошибки
При возникновении ошибки API вернет XML в следующем формате:
1<error>
2 <description>Incorrect signature</description>
3</error>
| Параметр | Тип | Описание |
|---|---|---|
| error | string | Содержит description, описанный ниже. |
| description | string | Описание ошибки. |
Описание ошибки
| Ошибка | Тип | Описание |
|---|---|---|
| Incorrect signature | string | Передана неверная подпись (sign). |
| Temporary technical error | string | Ошибка, связанная с неверной передачей параметра контрагента (id), при неполадках на сервере и при других ошибках. |
Взаимодействие с агентом
Введение
Возможны два варианта взаимодействия:
- Кнопка Xsolla. Данная кнопка располагается у агента, оплата по ней происходит следующим образом: при выборе кнопки Xsolla пользователю требуется ввести заранее полученный номер и осуществить оплату на него. Соответственно, для оплаты на кнопку Xsolla необходимо заполнить поле account (поля project, v1, v2, v3 не заполняются). Поле account заполняется 9 цифрами (Xsolla-номер). Для размещения кнопки Xsolla обратитесь к менеджеру для получения логотипа и номера.
- Кнопки игр. Данные кнопки располагаются у агента, каждая кнопка соответствует отдельной игре. Пользователь нажимает на кнопку конкретной игры, авторизуется и осуществляет оплату на свой аккаунт. Соответственно, для оплаты на кнопку игр необходимо заполнить поля project, v1, v2, v3 (поле account не заполняется). Возможность посылать project, v1, v2, v3 появляется после того, как в терминале будет установлена кнопка конкретного проекта (игры). Причем поля project и v1 являются обязательными, а v2, v3 — опциональными (их наличие или отсутствие зависит от конкретного проекта). С целью размещения кнопок игр обратитесь к менеджеру для получения логотипов игр, их внутренних номеров, способов авторизации (правил задания v1, v2, v3) и прочей информации по каждой игре.
Кнопка — элемент в системе агента, активация которого инициирует оплату в Xsolla.
Перед подключением агента к Xsolla необходимо уточнить:
- Партнерский номер (type) в Xsolla. Вы можете узнать его, обратившись к вашему аккаунт-менеджеру.
- secret_key — конфиденциальный строковый параметр, необходимый для формирования цифровой подписи (md5-строки). Его можно узнать в Личном кабинете или у персонального менеджера проекта.
Взаимодействие с API происходит путем создания HTTP-запроса к шлюзу API по адресу:
- http
1https://ps.xsolla.com/api/gate
Любой запрос передается методами GET или POST, все параметры должны быть в кодировке UTF-8. Обращаем внимание, что использование кодировки UTF-8 важно, поскольку при использовании разных кодировок подписи сходиться не будут.
Формат запроса
Запрос к шлюзу Xsolla может быть трех типов:
- Запрос на возможность проведения платежа (
command=check). - Запрос на выполнение платежа (
command=pay). - Расчет стоимости и количества игровой валюты (
command=calculate).
order ответа будет содержать номер ранее проведенного платежа.Команда Check: Идентификация пользователя по Xsolla-номеру
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| command | string | Проверка на возможность проведения платежа. Обязательный. | check |
| account | integer | Xsolla-номер (9 цифр). Обязательный. | check |
| sum | float | Сумма платежа в согласованной валюте. Разделитель “.” (2 знака после точки). Необязательный. | 100.98 |
| type | integer | Ваш партнерский номер в Xsolla. Обязательный. | 151 |
| date | string | Дата в формате YYYYMMDDHHMMSS. Обязательный. | 20060425180622 |
| md5 | string | Подпись для предотвращения несанкционированного доступа. Обязательный. | 0a8d9fb24fcbac2efafec5e51045d05c |
Команда Check: Идентификация пользователя по project/v1/v2/v3
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| command | string | Проверка на возможность проведения платежа. Обязательный. | check |
| project | integer | ID проекта в Xsolla. Можно посмотреть в Личном кабинете. Обязательный. | 4783 |
| v1 | string | Параметр идентификации пользователя (обычно никнейм в игре). Обязательный. | XsollaUser |
| v2 | string | Дополнительный параметр идентификации пользователя (в зависимости от настроек проекта). Необязательный. | 0 |
| v3 | string | Дополнительный параметр идентификации пользователя (в зависимости от настроек проекта). Необязательный. | 0 |
| sum | float | Сумма платежа в согласованной валюте. Разделитель “.” (2 знака после точки). Необязательный. | 100.98 |
| type | integer | Ваш партнерский номер в Xsolla. Обязательный. | 151 |
| date | string | Дата в формате YYYYMMDDHHMMSS. Обязательный. | 20060425180622 |
| md5 | string | Подпись для предотвращения несанкционированного доступа. Обязательный. | 0a8d9fb24fcbac2efafec5e51045d05c |
Команда Pay: Идентификация пользователя по account
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| command | string | Проверка на возможность проведения платежа. Обязательный. | pay |
| account | integer | Xsolla-номер (9 цифр). Обязательный. | 1234567, 001234567 |
| sum | float | Сумма платежа в согласованной валюте. Разделитель “.” (2 знака после точки). Обязательный. | 100.98 |
| id | string | Уникальный номер операции в системе партнера. Обязательный. | xsollaid1 |
| type | integer | Ваш партнерский номер в Xsolla. Обязательный. | 151 |
| date | string | Дата в формате YYYYMMDDHHMMSS. Обязательный. | 20060425180622 |
| test | boolean | Флаг тестового платежа (1 — тестовый платеж, 0 — реальный платеж, по умолчанию 0). Необязательный. | 1 |
| md5 | string | Подпись для предотвращения несанкционированного доступа. Обязательный. | 0a8d9fb24fcbac2efafec5e51045d05c |
Команда Pay: Идентификация пользователя по project/v1/v2/v3
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| command | string | Проверка на возможность проведения платежа. Обязательный. | check |
| project | integer | ID проекта. Обязательный. | 4783 |
| v1 | string | Параметр идентификации пользователя (обычно никнейм в игре). Обязательный. | XsollaUser |
| v2 | string | Дополнительный параметр идентификации пользователя (в зависимости от настроек проекта). Необязательный. | 0 |
| v3 | string | Дополнительный параметр идентификации пользователя (в зависимости от настроек проекта). Необязательный. | 0 |
| sum | float | Сумма платежа в согласованной валюте. Разделитель “.” (2 знака после точки). Необязательный. | 100.98 |
| id | string | Уникальный номер операции в системе партнера. Обязательный. | xsollaid2 |
| type | integer | Ваш партнерский номер в Xsolla. Обязательный. | 151 |
| date | string | Дата в формате YYYYMMDDHHMMSS. Обязательный. | 20060425180622 |
| test | boolean | Флаг тестового платежа (1 — тестовый платеж, 0 — реальный платеж, по умолчанию 0). Необязательный. | 1 |
| md5 | string | Подпись для предотвращения несанкционированного доступа. Обязательный. | 0a8d9fb24fcbac2efafec5e51045d05c |
order ответа будет содержать номер ранее проведенного платежа.Формирование подписи для команды Calculate
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| command | string | Проверка на возможность проведения платежа. Обязательный. | calculate |
| project | integer | ID проекта. Обязательный. | 4783 |
| sum | float | Сумма платежа в согласованной валюте. Разделитель “.” (2 знака после точки). Обязательный, если не задан out. | 100.98 |
| out | float | Возвращает стоимость и количество игровой валюты. Разделитель “.” (2 знака после точки). Обязательный, если не задан sum. | 10.98 |
| type | integer | Ваш партнерский номер в Xsolla. Обязательный. | 151 |
| date | string | Дата в формате YYYYMMDDHHMMSS. Обязательный. | 20060425180622 |
| md5 | string | Подпись для предотвращения несанкционированного доступа. Обязательный. | 0a8d9fb24fcbac2efafec5e51045d05c |
Формирование поля MD5
Подпись служит для обеспечения безопасности при проверке и проведении платежей. Формируется с помощью алгоритма хеширования MD5 от строки, получаемой конкатенацией значений всех передаваемых параметров, причем в том же самом порядке, в котором они идут в запросе. В случае необязательных параметров действует правило – если параметр передается, он участвует в формировании подписи. Также в подписи участвует секретный ключ платежной системы, который можно уточнить у вашего персонального менеджера.
Формирование подписи для команды Check
- php
1<?php
2 $request['command']='check';
3 $request['account']=1234567;
4 $request['sum']=150.75;
5 $request['type']=151;
6 $request['date']='20110117000516';
7 $md5='';
8 foreach ($request as $value) {
9 $md5.=$value;
10 }
11 $request['md5']=md5($md5.$secret_key);
12?>
Строка:
check1234567150.7515120110117000516test
MD5:
1cad5a2c3457cffa8e857a507a7050ba
Формирование подписи для команды Pay
- php
1<?php
2$request['command']='pay';
3$request['account']=1234567;
4$request['sum']=150.75;
5$request['id']=384957;
6$request['type']=151;
7$request['date']='20110117000516';
8$md5='';
9foreach ($request as $value) {
10$md5.=$value;
11}
12$request['md5']=md5($md5.$secret_key);
13?>
Строка:
pay1234567150.7538495715120110117000516test
MD5:
7cfa05abde4ae2464142bf2ac7a72f32
Формирование подписи для команды Calculate
- php
1<?php
2 $request['command']='calculate';
3 $request['project']=4783;
4 $request['out']=12;
5 $request['type']=151;
6 $request['date']='20110117000516';
7 $md5='';
8 foreach ($request as $value) {
9 $md5.=$value;
10 }
11 $request['md5']=md5($md5.$secret_key);
12?>
Строка:
calculate47831215120110117000516test
MD5:
e73e11a9cad00e205358e05254905af5
Коды ответов
Система формирует XML, в котором содержится код статуса result и описание comment.
| Результат | Комментарий | Описание |
|---|---|---|
| 0 | OK | Возможность проведения платежа подтверждена (ответ на команду check). Платеж успешно прошел или был зачислен ранее (ответ на команду pay). |
| 1 | technical problem | Технические работы (необходимо присылать повторное оповещение). |
| 11 | type is not exists or disabled | Тип не существует или отключен. |
| 2 | xsolla-number not correct | Неправильная длина Xsolla-номера. |
| 3 | xsolla-number not found | Xsolla-номер не найден. |
| 4 | Stop | Xsolla-номер не для оплаты. |
| 5 | sum error | Ошибка суммы. |
| 6 | bonus error | Ошибка выхода. |
| 7 | md5 error | Некорректная подпись MD5. Не совпадает хеш строк. |
| 8 | IP error | Запрещенный IP-адрес. |
| 9 | request is not correct | Обязательные параметры отсутствуют или команда задана неверно. |
| 10 | project is not exists | Проект не существует (выключен или удален навсегда). |
API реестра операций для платежных систем
Документ предназначен для разработчиков, собирающихся использовать API реестра операций для ПС для предоставления возможности оплаты виртуальных товаров и услуг проекта. Документ предполагает базовые знания об API, запросах HTTP и архитектуре программного обеспечения.
Взаимодействие с API
- Работа происходит только по схеме интеграции сервер-сервер;
- Все параметры должны быть в кодировке UTF-8;
- Формат возвращения данных: csv.
Описание методов API
- Get – запрос на получение данных платежей.
API URL
Базовый URL: https://api.xsolla.com/payments/
Маска формирования URL
- http
1https://api.xsolla.com/payments/v<number versions>/<command>?<parameter1=value1>&<parameter2=value2
Get
Команда создает запрос на передачу данных о платежах от всех платежных систем данного контрагента за 24 часа.
Получение доступа
Для получения доступа к API обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com, чтобы получить уникальный ID партнера и секретный ключ.
Пример запроса
https://api.xsolla.com/payments/v1/Get?date=2013-08-20&id=1234&sign=8f683701c03b03fe49e6ef7bbfafb8fb
Входные параметры
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| date | string | Ответ содержит данные платежей за 24 часа. Дата передается в формате YYYY-MM-DD (часовой пояс GMT+4). | 2013-08-20 |
| id | integer | Уникальный ID контрагента ПС. Для получения ID свяжитесь с персональным менеджером проекта или напишите на csm@xsolla.com. | 1234 |
| sign | string | Подпись параметров для предотвращения несанкционированного доступа. | 8f683701c03b03fe49e6ef7bbfafb8fb |
Ответ
Ответ формируется в формате csv (в качестве разделителя используется запятая “,”):
69927355,95188933,394,2013-08-01T06:49:25+04:00,91.0000,RUB,done
Описание полей:
| Параметр | Тип | Описание | Пример |
|---|---|---|---|
| xsolla_id | integer | Номер транзакции внутри Xsolla. Обязательный. | 12345678 |
| ps_id | integer | Номер транзакции, переданный платежной системой. Обязательный. | 1234 |
| pid | integer | Уникальный ID платежной системы. Обязательный. | 64 |
| datetime | string | Время проведения платежа (часовой пояс GMT+4). Обязательный. | 2013-08-01T06:49:25+04:00 |
| amount | float | Сумма, которую заплатил пользователь. Обязательный. | 10.98 |
| currency | string | Валюта платежа. Обязательный. | USD |
| status | string | Статус платежа (выводятся платежи со статусами done — платеж успешно завершен и canceled — платеж отменен). Обязательный. | done |
Формирование подписи
Параметры сортируются по ключам в алфавитном порядке. Подпись формируется с помощью алгоритма хеширования md5 от строки, получаемой конкатенацией значений параметров. Также в подписи участвует секретный ключ (секретный ключ можно узнать у менеджера). В качестве разделителя используется “|”.
Пример запроса
1date = 2013-08-20;
2id=1234;
3secret_key=password.
Строка будет иметь следующий вид:
2013-08-20|1234|password
MD5 хеш от данной строки:
e8df0ff2e4360300a5142cc28d86b422
Список кодов завершения
| HTTP-статус ответа | Сообщение об ошибке | Описание ошибки |
|---|---|---|
| 200 | Успех | |
| 400 | Wrong parameters | Переданы некорректные параметры |
| 400 | Wrong ID partner | Некорректный контрагент |
| 400 | Wrong date | Некорректная дата |
| 403 | Incorrect sign | Подпись неверна |
| 404 | Unknown command | Неизвестная команда |
| 500 | Внутренняя ошибка API |
Сверки по транзакциям с платежной системой
Сверки через email оповещения
Сверки по транзакциям производятся путем отправки платежной системой письма с прикрепленным документом, имеющим определенный формат. Частота проведения сверок оговаривается заранее.
Формат документа
Формат документа:
- Документ присылается в кодировке UTF-8.
- Документ в формате .csv (разделитель запятая или точка с запятой).
- Документ доставляется прикрепленным к письму файлом с заранее указанного и постоянного email-адреса на адрес stats@xsolla.com.
- Тема письма: “stats registry”.
- Формат наименования документа: stats_registry_period. Период задается двумя датами в формате YYYY-MM-DD:start_dateTend_date. Если период включает в себя один день (за одни сутки), указывать T и дату окончания нет необходимости.
Статистика принятых платежей за 24 ноября, 2010 год.
Имя файла: stats_registry_2010-11-24.csv
Статистика принятых платежей в период 1 октября по 16 декабря, 2010 год.
Имя файла: stats_registry_2010-01-10T2010-12-16.csv
Статистика принятых платежей за май 2011 года.
Имя файла: stats_registry_2011-05-01T2011-05-31.csv
Содержание документа
| Параметр | Тип | Описание |
|---|---|---|
| const | string | ID транзакции в системе контрагента (id в вашей системе). Обязательный, если pid не передан. |
| pid | string | ID транзакции в Xsolla (отправляется в запросе). Обязательный, если const не передан. |
| amount | string | Сумма платежа (разделитель десятичной части — точка, две цифры после точки). Обязательный. |
| payout | string | Сумма выплаты Xsolla. Обязательный. |
| currency | string | Валюта платежа в формате ISO 4217. Обязательный. |
| state | string | Состояние платежа success (проведен), cancelled (отменен). Присылать нужно только платежи в состоянии “проведен” или “отменен”. Под состоянием “отменен” понимается такое состояние платежа, когда пользователь сначала провел, а потом через какое-то время отменил платеж. Обязательный. |
| time | string | Дата и время совершения платежа (в формате YYYY-MM-DD HH:MM:SS). Обязательный. |
| desc | string | Дополнительный параметр. Например, переданные нами реквизиты платежа (email, nick, phone). Необязательный. |
Пример реестра
Пример 1
- http
197035765;6654448;10.00;9.50;RUB;done;2011-09-01 13:30:45;nickname
2
397035766;6634558;150.00;145.00;RUB;done;2011-09-01 16:43:54;vassilliy@mail.ru
Пример 2 (если в системе ПС нет нашего pid)
- http
1564;;10.00;9.50;RUB;done;2011-09-01 13:30:45;nickname
2
3456;;150.00;145.00;RUB;done;2011-09-01 16:43:54;vassilliy@mail.ru
Пример 3 (если нет desc, обратите внимание на точку с запятой в конце)
- http
1564;6654855;10.00;9.50;RUB;done;2011-09-01 13:30:45;
2
3456;4588554;150.00;145.00;RUB;done;2011-09-01 16:43:54;
Сверки через API платежной системы
Возможен вариант проведения сверок с использованием HTTP (HTTPS) API платежной системы. После обращения к Xsolla API должна получить следующие параметры:
| Параметр | Тип | Описание |
|---|---|---|
| const | string | ID транзакции в системе контрагента (id в вашей системе). Обязательный, если pid не передан. |
| pid | string | ID транзакции в Xsolla (отправляется в запросе). Обязательный, если const не передан. |
| amount | string | Сумма платежа (разделитель десятичной части — точка, две цифры после точки). Обязательный. |
| payout | string | Сумма выплаты Xsolla. Обязательный. |
| currency | string | Валюта платежа в формате ISO 4217. Обязательный. |
| state | string | Состояние платежа success (проведен), cancelled (отменен). Присылать нужно только платежи в состоянии “проведен” или “отменен”. Под состоянием “отменен” понимается такое состояние платежа, когда пользователь сначала провел, а потом через какое-то время отменил платеж. Обязательный. |
| time | string | Дата и время совершения платежа (в формате YYYY-MM-DD HH:MM:SS). Обязательный. |
| desc | string | Дополнительный параметр. Например, переданные нами реквизиты платежа (email, nick, phone). Необязательный. |
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.