Интерфейс разработан с учетом потребностей в обработке заказов с несколькими позициями, которые далее транслируются в документарный модуль, например для генерации кассового чека и сопроводительных документов.
1. Введение
1.1 Назначение
Paysto.Merchant —программный комплекс, который позволяет автоматизировать процесс оплаты счетов в Интернете, выставленных Вашим web-сайтом.
1.2. Описание
Данный интрефейс полностью совместим с API authorize.net Secure Hosted Payment Form. Если Ваш магазин поддерживает это способ оплаты Вы без труда сможете перейти на использование PAYSTO, расширив таким образом количество способов оплаты на своем сайте.
1.3. Термины и понятия
Термин |
Описание |
Получатель |
Клиент, в пользу которого идет зачисление средств |
Плательщик |
Лицо, осуществляющее платеж |
Магазин |
Информационная система Получателя. Например, корзина Плательщика на сайте Получателя и система биллинга Получателя. |
2. Упрощенная схема оплаты счета магазина
2.1. Легенда
- Красные стрелки – переходы Плательщика
- Зеленые стрелки – запросы между PAYSTO и Магазином
- Сплошные – обязательные
- Точечные – опциональные.
2.2. Порядок шагов при успешной оплате.
- Красная 1. – Пользователь отсылает форму оплаты в PAYSTO;
- Красная 2, Красная 3 – при необходимости пользователь отправляется в мерчант платежной системы;
- Зеленая 1 – PAYSTO оповещает Магазин об оплате;
- Красная 4 – Пользователь возвращается в Магазин;
- Зеленая 2 – При необходимости Магазин запрашивает статус счета в PAYSTO;
3. Типы передаваемых данных
Название |
Описание |
Диапазон значений |
Целое |
Целое |
От 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). |
|
4. Обеспечение безопасности
4.1. Запросы
Проверяется IP источника запроса (upBalance проверяет опционально, если IP ИС указан в настройках кабинета). Подпись (обязательно).
4.2. Ответы Merchant
Проверяйте SSL сертификат ответившего сервера.
4.3. Адреса отвечающих серверов
IP-адрес сервера |
95.213.209.218 |
95.213.209.219 |
95.213.209.220 |
95.213.209.221 |
95.213.209.222 |
5. Запросы для осуществления платежа
5.1. Запрос на оплату счета
Данный шаг начинает процедуру оплаты выставленного в Магазине счета.
Элемент адреса |
Значение |
Протокол |
https |
Метод |
Post |
Путь |
https://paysto.com/ru/pay/AuthorizeNet |
Кодировка |
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_timestamp |
UTC время в секундах, начиная с 1 января 1970 |
числовой |
Да |
x_fp_hash |
Подпись сгенерированная с использованием алгоритма хеширования HMAC-MD5 с использованеим полей x_login,x_fp_sequence,x_fp_timestamp, x_amount и x_currency_code разделенными знаком ^ Пример строки: "11111^789^67897654^10.50^USD" Пример генерации подписи: Fingerprint = HMAC-MD5 ("11111^789^67897654^10.50^USD",
"секретный_ключ") |
|
Да |
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_url |
URL оповещения об оплате |
Строка |
Да |
Поле 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&
5.2. Сведения об оплате
Данный шаг оповещает Магазин о результатах оплаты счета.
Внимание! Магазин должен при данном запросе проверять IP, с которого пришел запрос (он должен быть IP PAYSTO - узнайте в технической поддержке возможные значения), номер счета и сумму платежа, и подпись. Отказ от данных проверок может серьезно ослабить защиту от мошенников.
Элемент адреса |
Значение |
Протокол |
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 |
Считается, что сервис магазина не доступен и не может выполнить свои обязательства перед покупателем. Полученные деньги от покупателя будут заблокированы. |
5.3. Возвращение Покупателя в Магазин
На данном шаге Покупатель возвращается в Магазин.
Внимание! Данные этого запроса проходят через компьютер Покупателя и могут быть подделанными недобросовестным Покупателем. Поэтому не рекомендуется на страницах Success url и Fail Url устанавливать статус выставленному счету. Используйте для этого Result Url.
Рекомендуем Success url и Fail Url указывать адрес одной и той же страницы, где на основе сохраненных данных при обработке Result url (или, переспросив статус счета в PAYSTO) перенаправлять пользователя на итоговую страницу успешной (неуспешной) оплаты.
Важно понимать, что данный шаг осуществляется с компьютера Покупателя по истечении некоторого времени с момента перехода Покупателя с Магазина на PAYSTO, поэтому возможно, Магазину потребуется авторизовать Покупателя, для отображения приватных данных.
Элемент адреса |
Значение |
Протокол |
https |
Метод |
Post |
Путь |
Указывается при регистрации магазина |
Кодировка |
UTF8 |
Параметры совпадают с описаннами в пукте 5.2
6. Сведения о платежах
Внимание! При данных запросах рекомендуется проверять SSL сертификат ответившего сервера для предотвращения DNS подлогов.
6.1. Выписка за период
Элемент адреса |
Значение |
Протокол |
https | http |
Метод |
Get |
Путь |
https://paysto.com/api/Payment/GetList |
Параметры
Название |
Описание |
Тип |
Обязательный |
FROM |
начало периода (по умолчанию – начало текущих суток). |
Дата время |
Да |
TO |
конец периода (по умолчанию – текущий момент). |
Дата время |
Да |
PAYSTO_SHOP_ID |
Id магазина |
целое |
Да |
PAYSTO_REQUEST_NO |
Сквозной (общий для всех типов запросов) счетчик запросов ИС, каждое последующее значение должно быть больше предыдущего. |
Длинное целое |
Нет |
PAYSTO_MD5 |
Подпись передаваемых данных. Контрольная сумма MD5. |
MD5 |
Да |
Ответ HTTP CODE 200 |
CSV файл в виде 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 |
Нарушены условия безопасности. Проверьте передаваемые параметры и настройки. |
Значения ответа HTTP CODE 404 |
Не найден магазин |
6.2. Сведения об отправленном на оплату счете
Элемент адреса |
Значение |
Протокол |
https |
Метод |
Get | Post (рекомендуется) |
Путь |
https://paysto.com/api/Payment/GetByInvoiceId |
Параметры
Название |
Описание |
Тип |
Обязательный |
PAYSTO_INVOICE_ID |
Переданный номер счета в магазине. |
Строка до 50 символов |
Да |
PAYSTO_SHOP_ID |
Id магазина |
целое |
Да |
PAYSTO_REQUEST_NO |
Сквозной (общий для всех типов запросов) счетчик запросов ИС, каждое последующее значение должно быть больше предыдущего. |
Длинное целое |
Нет |
PAYSTO_MD5 |
Подпись передаваемых данных. Контрольная сумма MD5. |
MD5 |
Да |
Ответ HTTP CODE 200 |
CSV файл в виде 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 |
Нарушены условия безопасности. Проверьте передаваемые параметры и настройки. |
Значения ответа HTTP CODE 404 |
Не найден счет с таким номером для данного магазина |
7. Состояние счета
Внимание! При данных запросах рекомендуется проверять SSL сертификат ответившего сервера для предотвращения DNS подлогов.
7.1. Проверка баланса
Элемент адреса |
Значение |
Протокол |
https |
Метод |
Get | Post (рекомендуется) |
Путь |
https://paysto.com/api/Common/Balance |
Параметры
Название |
Описание |
Тип |
Обязательный |
PAYSTO_SHOP_ID |
Id Магазина, выдается при регистрации. |
Целое |
Да |
PAYSTO_REQUEST_NO |
Сквозной (общий для всех типов запросов) порядковый номер запроса, каждое последующее значение должно быть больше предыдущего. |
Длинное целое |
Нет |
PAYSTO_MD5 |
Подпись передаваемых данных. Контрольная сумма MD5. |
MD5 |
Да |
Ответ |
Описание |
Тип |
HTTP CODE 200 |
Скалярное значение. Доступный баланс. |
Денежный |
HTTP CODE 403 |
Нарушены условия безопасности. Проверьте передаваемые параметры и настройки. |
|
HTTP CODE 404 |
Не найден магазин |
|
8. Аппендикс
8.1. Данные получаемые из интерфейса Клиентского Кабинета.
Рисунок 1 Определение PAYSTO_SHOP_ID - страница "Настройки магазина"