Skip to content

API

Введение

Описание

API PAYSTO — программный комплекс для управления мультиканальной торговой инфраструктурой.

tip

API PAYSTO полностью совместимо с API Authorize.net Secure Hosted Payment Form, что позволяет настроить интеграцию любого web-ресурса без значительных расходов и в короткий срок.

Назначение

API PAYSTO позволяет автоматизировать приём платежей и обработку online-заказов в России.

Термины и понятия

ТерминОписание
ПолучательКлиент, в пользу которого идет зачисление средств
ПлательщикЛицо, осуществляющее платеж
МагазинИнформационная система Получателя. Например, корзина Плательщика на сайте Получателя и система биллинга Получателя.

Упрощенная схема оплаты

Сплошные линии – обязательные
Точечные линии – опциональные.

Порядок шагов при успешной оплате

  1. Запрос на оплату;
  2. Проверка товаров в каталоге PAYSTO;
  3. Перевод плательщика на оплату;
  4. Статус оплаты;
  5. Формирование кассового чека;
  6. Статус оплаты;
  7. Возврат покупателя на сайт Поставщика;
  8. Запрос статуса платежа;
  9. Статус платежа.

Типы передаваемых данных

НазваниеОписаниеДиапазон значений
ЦелоеЦелоеОт 0 до 2147483647
Длинное целоеДлинное целоеОт 0 до 4294967296
ДенежноеВещественное, разделитель целой и дробной части «.» (точка), разделителя разрядов нет, дробная часть с точностью до сотых. Наличие точки и двух цифр после нее – обязательно. Например, 10 должно быть записано как 10.00, 10.123 должно быть записано как 11.12 или 11.13от 0.01 до 1000000.00
СтрокаСтрока. Не может содержать символ «=» (равно) и символ «&» (амперсанд).Для каждого параметра длина определяется отдельно.
Дата времяВсемирное координированное время (UTC). Представлено в формате yyyymmddhhnn где y – цифры для обозначения года, m – месяца, d – дня месяца, h – часа (hh – число от 0 до 23) n – минут. Например, 15 января 2010 17:04 201001151704От 201001010000 до 205012312359
MD5Строка, представляющая собой 32-разрядное число в 16-ричной форме и в нижнем регистре (всего 32 символа 0-9, A-F).

Обеспечение безопасности

Запросы

Проверяется IP источника запроса. Подпись (обязательно).

Ответы PAYSTO

Проверяйте SSL сертификат ответившего сервера.

Адреса отвечающих серверов

IP-адрес отвечающего сервера указан в ЛК PAYSTO > Параметры

Запросы для осуществления платежа

Запрос на оплату счета

Данный шаг начинает процедуру оплаты выставленного в Магазине счета.

Элемент адресаЗначение
Протоколhttps
МетодPost
ПутьИнформация предоставлена в ЛК PAYSTO > Параметры
КодировкаUTF8

Параметры

НазваниеОписаниеТипОбязательный
x_descriptionКомментарий платежаСтрокаДа
x_loginКод магазинаЦелоеДа
x_amountСумма к оплатеДенежноеДа
x_currency_codeВалюта суммы к оплате. Может принимать значения USD или RUBСтрокаДа
x_cart_currencyВалюта корзины магазина. Значения: USD, EUR или другое короткое название валюты. Передается при валюте корзины отличной от рублей (RUB) для отражения на страницах оплаты (сумма и валюта списания берутся из значений x_amount и x_currency_code).СтрокаНет
x_line_itemСодержимое корзины для оплаты. Подробное описание значения поля приведено в таблице ниже.СтрокаДа
x_emailЭлектронный адрес покупателяСтрокаНет
x_fp_sequenceНомер сделки назначенный магазином. Это может быть номер счета или любое другое случайное число.ЧисловойДа
x_fp_timestampUTC время в секундах, начиная с 1 января 1970числовойДа
x_fp_hashПодпись сгенерированная с использованием алгоритма хеширования HMAC-MD5 с использованием полей x*login, x_fp_sequence, x_fp_timestamp, x_amount и x_currency_code разделенными знаком ^ Примеры подписиДа
x_invoice_numНомер счета в магазинечисловойДа
x_first_nameИмя покупателяСтрокаНет
x_last_nameФамилия покупателяСтрокаНет
x_addressАдрес покупателяСтрокаНет
x_cityГород покупателяСтрокаНет
x_stateРегион покупателяСтрокаНет
x_countryСтрана покупателяСтрокаНет
x_ship_to_first_nameИмя контактного лица при доставкеСтрокаНет
x_ship_to_last_nameФамилия контактного лица при доставкеСтрокаНет
x_phoneКонтактный телефонСтрокаНет
x_faxКонтактный факсСтрокаНет
x_cust_idИдентификатор покупателя в магазинеСтрокаНет
x_ship_to_addressАдрес доставкиСтрокаНет
x_ship_to_stateРегион доставкиСтрокаНет
x_ship_to_zipИндекс адреса доставкиСтрокаНет
x_ship_to_countryСтрана доставкиСтрокаНет
x_relay_responseСтрока должна иметь значение «TRUE»СтрокаДа
x_relay_urlURL оповещения об оплатеСтрокаДа
Пример строки: "11111^789^67897654^10.50^USD" 
Пример генерации подписи: 
Fingerprint = HMAC-MD5 ("11111^789^67897654^10.50^USD", "секретный\*ключ")

Поле x_line_item должно содержать одну строку из оплачиваемой корзины пользователя состоящую из нескольких элементов разделенных разделителем | . Количество передаваемых полей должно соответствовать количеству элементов в корзине.

Формат поля x_line_item

НазваниеОписаниеОбязательный
Item IDИдентификатор товара. Строка длинной до 31 символаДа
item nameНазвание товара. Строка длинной до 31 символаДа
item descriptionОписание товара. Строка длинной до 255 символов.Да
item quantityКоличество. Должно быть положительным числом.Да
item price (unit cost)Стоимость единицы товара. Вещественное, разделитель целой и дробной части «.» (точка), разделителя разрядов нет, дробная часть с точностью до сотых. Наличие точки и двух цифр после нее – обязательно. Например, 10 должно быть записано как 10.00, 10.123 должно быть записано как 11.12 или 11.13Да
item taxableОблагается ли товар НДС. Возможные значения: TRUE, FALSE, T, F, YES, NO, Y, N, 1, 0Нет

Пример передаваемой корзины:

x_line_item=item1<|>golf balls<|><|>2<|>18.95<|>Y&
x_line_item=item2<|>golf bag<|>Wilson golf carry bag, red<|>1<|>39.99<|>Y&
x_line_item=item3<|>book<|>Golf for Dummies<|>1<|>21.99<|>Y&

Сведения об оплате

Данный шаг оповещает Магазин о результатах оплаты счета.

warning

При данном запросе магазин должен проверять:

  • IP-адрес, с которого пришел запрос;
  • Номер счета;
  • Сумму платежа;
  • Подпись.

Отказ от данных проверок может серьезно ослабить защиту от мошенников.

Элемент адресаЗначение
Протоколhttps
МетодPost
ПутьУказывается в x_relay_url при передаче запроса на оплату
КодировкаUTF8

Параметры

НазваниеОписаниеТип
x*response_codeРезультат оплаты 1 – оплачено 2 – отклонено 3 – ошибкаЦелое
x_trans_idНомер платежа в PAYSTOДлинное целое
x_invoice_numНомер платежа в магазинеЦелое
x_MD5_HashПодпись сгенерированная с использованием алгоритма хеширования MD5 с использованием секретного ключа и полей x_login, x_trans_id, x_amount Пример строки «секретный*ключ111119876543211.00»MD5
x_amountСумма оплатыДенежное
x_cust_idЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_first_nameЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_last_nameЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_addressЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_cityЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_stateЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_zipЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_countryЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_phoneЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_faxЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_cust_idЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_emailЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_first_nameЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_last_nameЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_addressЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_cityЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_stateЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_zipЗначение равняется соответствующему параметру в запросе на оплатуСтрока
x_ship_to_countryЗначение равняется соответствующему параметру в запросе на оплатуСтрока
Интерпретация ответа HTTP CODE 200Интерпретация отсутствия ответа другие HTTP CODE, Timeout
Считается, что сервис магазин получил уведомление.Считается, что сервис магазина не доступен и не может выполнить свои обязательства перед покупателем. Полученные деньги от покупателя будут заблокированы.

Возвращение Покупателя в Магазин

На данном шаге Покупатель возвращается в Магазин.

warning

Данные этого запроса проходят через компьютер Покупателя и могут быть подделанными недобросовестным Покупателем. Поэтому не рекомендуется на страницах Success url и Fail Url устанавливать статус выставленному счету. Используйте для этого Result Url.

tip

Рекомендуем Success url и Fail Url указывать адрес одной и той же страницы, где на основе сохраненных данных при обработке Result url (или, переспросив статус счета в PAYSTO) перенаправлять пользователя на итоговую страницу успешной (неуспешной) оплаты.

Важно понимать, что данный шаг осуществляется с компьютера Покупателя по истечении некоторого времени с момента перехода Покупателя с Магазина на PAYSTO, поэтому возможно, Магазину потребуется авторизовать Покупателя, для отображения приватных данных.

Элемент адресаЗначение
Протоколhttps
МетодPost
ПутьУказывается при регистрации магазина
КодировкаUTF8

Параметры совпадают с описанным в пункте Сведения об оплате

Сведения о платежах

warning

При данных запросах рекомендуется проверять SSL сертификат ответившего сервера для предотвращения DNS подлогов.

Выписка за период

Элемент адресаЗначение
Протоколhttps
МетодGet
Путьhttps://paysto.com/api/Payment/GetList

Параметры

НазваниеОписаниеТипОбязательный
FROMначало периода (по умолчанию – начало текущих суток).Дата времяДа
TOконец периода (по умолчанию – текущий момент).Дата времяДа
PAYSTO_SHOP_IDID магазинацелоеДа
PAYSTO_REQUEST_NOСквозной (общий для всех типов запросов) счетчик запросов ИС, каждое последующее значение должно быть больше предыдущего.Длинное целоеНет
PAYSTO_MD5Подпись передаваемых данных. Контрольная сумма MD5.MD5Да

Значения ответа

HTTP CODEКомментарий
200CSV файл в виде Datetime,PAYSTO_PAYMENT_ID,PAYSTO_INVOICE_ID,PAYSTO_SUM,accountSum,status, statusNote Если за указанный период не было платежей – пустой файл

Описание столбцов

НазваниеОписаниеТип
DatetimeДата и время регистрации заявки.Дата время
PAYSTO_PAYMENT_IDНомер транзакции в PAYSTOДлинное целое
PAYSTO_INVOICE_IDПереданный номер счета в магазине.Строка до 50 символов
PAYSTO_SUMСумма заявки (сумма которую фактически собирались оплатить/уже оплатили)Денежный
accountSumДвижение по Счету Клиента. Положительное – увеличение баланса, отрицательное – уменьшение баланса.Денежный
statusКод статуса заявки.Статус заявки
statusNoteКомментарий к статусу. Например, если статус RES_ERROR – то описание ошибки.Строка

Значения ответа

HTTP CODEКомментарий
403Нарушены условия безопасности. Проверьте передаваемые параметры и настройки.
404Не найден магазин

Сведения о платеже

Элемент адресаЗначение
Протоколhttps
МетодGet
Путьhttps://paysto.com/api/Payment/GetByInvoiceId

Параметры

НазваниеОписаниеТипОбязательный
PAYSTO_INVOICE_IDПереданный номер счета в магазине.Строка до 50 символовДа
PAYSTO_SHOP_IDId магазинацелоеДа
PAYSTO_REQUEST_NOСквозной (общий для всех типов запросов) счетчик запросов ИС, каждое последующее значение должно быть больше предыдущего.Длинное целоеНет
PAYSTO_MD5Подпись передаваемых данных. Контрольная сумма MD5.MD5Да

Значения ответа

HTTP CODEКомментарий
200CSV файл в виде Datetime,PAYSTO_PAYMENT_ID,PAYSTO_INVOICE_ID,PAYSTO_SUM,accountSum,status, statusNote

Описание столбцов

НазваниеОписаниеТип
DatetimeДата и время регистрации заявки.Дата время
PAYSTO_PAYMENT_IDНомер транзакции в PAYSTOДлинное целое
PAYSTO_INVOICE_IDПереданный номер счета в магазине.Строка до 50 символов
PAYSTO_SUMСумма заявки (сумма которую фактически собирались оплатить/уже оплатили)Денежный
accountSumДвижение по Счету Клиента. Положительное – увеличение баланса, отрицательное – уменьшение баланса.Денежный
statusКод статуса заявки.Статус заявки
statusNoteКомментарий к статусу. Например, если статус RES_ERROR – то описание ошибки.Строка

Значения ответа

HTTP CODEКомментарий
403Нарушены условия безопасности. Проверьте передаваемые параметры и настройки.
404Не найден счет с таким номером для данного магазина

Состояние счета

warning

При данных запросах рекомендуется проверять SSL сертификат ответившего сервера для предотвращения DNS подлогов.

Проверка баланса

Элемент адресаЗначение
Протоколhttps
МетодGet / Post (рекомендуется)
Путьhttps://paysto.com/api/Common/Balance

Параметры

НазваниеОписаниеТипОбязательный
PAYSTO_SHOP_IDId Магазина, выдается при регистрации.ЦелоеДа
PAYSTO_REQUEST_NOСквозной (общий для всех типов запросов) порядковый номер запроса, каждое последующее значение должно быть больше предыдущего.Длинное целоеНет
PAYSTO_MD5Подпись передаваемых данных. Контрольная сумма MD5.MD5Да
ОтветОписаниеТип
HTTP CODE 200Скалярное значение. Доступный баланс.Денежный
HTTP CODE 403Нарушены условия безопасности. Проверьте передаваемые параметры и настройки.
HTTP CODE 404Не найден магазин

Аппендикс. Параметры подключения

Данные получаемые из интерфейса Личного Кабинета (требуется регистрация):

  1. ID Магазина;
  2. Адрес для API-запросов;
  3. Адрес отвечающего сервера;
  4. Секретный ключ (задается пользователем при подключении);

Настройки подключения