ROBOKASSA. Описание интерфейсов

Общее описание сервиса

ROBOKASSA — это сервис, позволяющий Клиентам (Продавцам/интернет-магазинам, поставщикам услуг) принимать платежи от Пользователей (покупателей) с помощью:

Регистрация и активация в системе ROBOKASSA

Если решение о подключении принято, то следует начать с Регистрации. Существует три формы сотрудничества с ROBOKASSA:

  1. Юридическое лицо, в том числе ИП. ООО, ЗАО, ОАО. А также НКО, БАНК, ФГУП, РНКО и т.д. и т.п. — любая форма юридического лица.

  2. Юридическое лицо - нерезидент, в том числе ИП.
  3. Физическое лицо, с возможностью получения платежей:

    • на банковскую карту;

    • на электронный кошелёк WebMoney;

    • на электронный кошелёк Яндекс.Деньги;

    • на электронный кошелёк QIWI-Wallet;

    • на карту ROBOKASSA (временно недоступна).

Регистрация нового клиента

Создать аккаунт в системе можно по ссылке на главной странице нашего сайта: «Подключиться сейчас». После перехода по ней откроется  страница:

Порядок заполнения полей Необходимо указать Наименование компании

Наименование компании (полное официальное название компании или магазина).

Форма сотрудничества

Выберите одно из значений: Юридическое лицо, Физическое лицо, Юридическое лицо (нерезидент).

Идентификатор клиента

Идентификатор клиента служит общим идентификатором для всех сотрудников компании. Это написанное на латинице название магазина или название компании, управляющей несколькими магазинами.

Логин администратора

Логин   это персональный Идентификатор конкретного сотрудника, имеющего доступ к Вашему Личному кабинету клиента сервиса ROBOKASSA. По Логину система определяет роль сотрудника в компании и предоставляет доступ к той или иной информации. Вход в систему возможен по Логину в сочетании с правильным Идентификатором клиента. При создании Личного кабинета клиента по умолчанию создаётся сотрудник с ролью Администратор и соответствующими правами. По умолчанию для него предлагается Логин  admin, который Вы сразу можете изменить на любой другой по своему выбору. Роли и права доступа для остальных сотрудников  раздаются только сотрудником с установленной ролью Администратор. 

Будьте внимательны при раздаче прав уровня Администратора.
E-Mail администратора

На этот адрес будет выслана информация для входа в Личный кабинет. И этот же E-mail  будет использоваться для восстановления доступа к учётной записи Администратора в случае необходимости.

Пароль будет создан автоматически и выслан на E-Mail Администратора вместе с остальными регистрационными данными.

Авторизация и Заполнение основных регистрационных данных

Используя Идентификатор клиента и Логин, заданные Вами при регистрации, и высланный на E-Mail пароль, авторизуйтесь в Личном кабинете клиента.

После авторизации можно задать свой пароль для доступа в Личный кабинет (заменить автоматически сгенерированный), если у Вас есть такая необходимость. Это делается так:

Прочие регистрационные данные

Следующие шаги пока можно пропустить, и сразу перейти к созданию магазина.

Раздел Настройки

Рекомендуем Вам сразу заполнить Ваши данные и контактную информацию в разделе Настройки.

Обязательные поля Обязательными для заполнения являются поля: Полное имя, ФИО

ФИО сотрудника.

ФИО (в родительном падеже)

Этот пункт необходимо указать для сотрудника, который будет фигурировать в качестве Подписанта.

Должность

Официальная должность лица, указанная в документе, подтверждающем право подписи.

Основной E-Mail

Адрес электронной почты сотрудника.

Телефон

Номер телефона сотрудника.

Необязательные поля Остальные поля заполняются на Ваше усмотрение. Наименование документа, подтверждающего право подписи (в род.п.)

Документ, подтверждающий право подписи, в родительном падеже. Например: Устава, Доверенности, Договора передачи полномочий. 

Указывается при условии, что данный сотрудник будет подписывать официальные документы, фигурировать в данных Вашего юридического лица в качестве подписанта.

Дополнительный E-Mail

Дополнительный адрес электронной почты.

Skype

Учётная запись Skype.

Адрес

Адрес сотрудника, например, домашний.

Комментарий

Дополнительная информация о сотруднике, которую Вы хотите сохранить.

 

Для юридического лица/Кредитной/Благотворительной/Религиозной организации

Заполните информацию о Вашей организации.

Регистрационные данные Тип собственности

Выберите нужный тип собственности из предложенного списка.

ИНН

Введите ИНН. Для ООО, ОАО, ЗАО - 10 цифр, для индивидуальных предпринимателей - 12 цифр.

КПП

Введите КПП, 9 цифр.

ОГРН/ОГРНИП

Введите ОГРН или ОГРНИП. Для ООО, ОАО, ЗАО - 12 цифр, для ИП - 15 цифр.

Дата внесения записи о регистрации в ЕГРЮЛ/ЕГРИП

Укажите дату внесения записи о регистрации юридического лица/ИП  в единый государственный реестр юридических лиц/ индивидуальных предпринимателей.

Контакты организации

Общие контакты (телефон и факс) Вашей организации и E-Mail бухгалтерии для отправки электронных документов.

Адреса Заполняются в соответствии с Вашими адресами

Если адреса в Вашей организации совпадают, то заполняется только один блок, остальные не требуются. 

Юридический адрес

Адрес официальной регистрации, адрес местонахождения постоянно действующего исполнительного органа юридического лица.

Фактический адрес

Фактический адрес –  место, где Ваша компания в действительности осуществляет свою профессиональную деятельность.

Почтовый адрес

Адрес, по которому Ваша компания планирует получать корреспонденцию.

Контакты Данные Подписанта

Выберите действующего ответственного за подписание документов из списка или добавьте нового, нажав кнопку «Добавить».

В данный список попадают только сотрудники у которых заполнены поля: ФИО, ФИО (в род. падеже), Должность и Наименование документа, подтверждающего право подписи.
Данные для контактов

Здесь необходимо указать сотрудника Вашей организации, который будет основным контактным лицом, и к которому мы сможем обращаться по различным вопросам в процессе работы. Сотрудника можно выбрать из списка, или добавить нового, нажав кнопку «Добавить».

В данный список попадают только сотрудники у которых заполнены поля: ФИО, Основной E-mail и Телефон.
Для бюджетной организации

Если Вы зарегистрированы как бюджетная организация, то укажите дополнительную информацию.

Обязательные параметры Лицевой счет

Номер лицевого счета бюджетных средств.

КБК

КБК бюджетной организации.

ОКТМО

Общероссийский классификатор территорий муниципальных образований.

Для Индивидуального предпринимателя

Если Вы Индивидуальный предприниматель, то укажите дополнительную информацию.

 

Обязательные параметры ФИО

Укажите полное имя, ФИО.

Дата рождения

Укажите дату рождения в формате ДД.ММ.ГГ.

Место рождения

Укажите место Вашего рождения (как в паспорте).

Паспорт

Укажите серию и номер паспорта, кем и когда выдан.

Свидетельство о государственной регистрации

Укажите серию и номер свидетельства о регистрации физического лица в качестве индивидуального предпринимателя.

Если Ваше свидетельство оформлено по форме Р61003

Укажите дату выдачи свидетельства в случае если свидетельство оформлено по форме Р61003.

Для юридического лица - нерезидента

Заполните информацию о Вашей организации.

Обязательные параметры для нерезидентов Полное наименование в латинской транскрипции

Название компании с использованием транслитерации, если наименование компании на русском языке или на языке с нелатинскими символами.

Регистрационный номер

Регистрационный номер в стране регистрации (цифро-буквенный код длиной не более 15 символов).

Код налогоплательщика

Код налогоплательщика в стране регистрации или его аналог.

Контакты организации

Общие контакты (телефон и факс) Вашей организации для связи с нами и E-Mail бухгалтерии для отправки электронных документов.

Юридический адрес в стране регистрации

Адрес официальной регистрации, адрес местонахождения постоянно действующего исполнительного органа юридического лица в стране регистрации.

Данные подписанта

Выберите действующего ответственного за подписание документов из списка или добавьте нового, нажав кнопку «Добавить».

Необязательные параметры Полное наименование на русском языке

Наименование на русском языке (если имеется).

Код иностранной организации

Номер налогоплательщика, присваиваемый иностранной организации налоговым органом при постановке на налоговый учёт в Российской Федерации. Является составной частью идентификационного номера налогоплательщика (ИНН) и занимает в этой номере цифры с пятой по девятую (первые четыре заняты индексом, десятая — контрольное число).

При наличии представительства в РФ ИНН

Идентификационный номер налогоплательщика на территории РФ.

Контакты представительства

Контактные данные, по которым мы сможем обращаться по различным вопросам в процессе работы. 

Юридический адрес подразделения на территории РФ

Адрес официальной регистрации на территории РФ.

Фактический адрес подразделения на территории РФ

Фактический адрес –  место, где представительство в действительности находится на территории РФ.

Для физического лица

Укажите свой электронный кошелёк QIWI,  Яндекс.Деньги или WebMoney. 

Способы вывода средств В разделе: «Настройки» – «Способы вывода средств» указываются возможные способы вывода для Ваших средств и их реквизиты.

Выберите новый способ из списка или создайте новый  нажатием кнопки «Добавить способ вывода средств».

Заполните необходимые данные. Например, если выбран банковский счет:

Выберите тип счёта

Тип счёта, с которым Вы собираетесь работать: безналичный счёт в банке или карта ROBOKASSA.

Наименование

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

БИК

БИК банка, в котором открыт Ваш расчётный счёт.

Корр. счёт

Корреспондентский счёт банка, в котором открыт Ваш расчётный счёт.

Расч. счёт

Расчётный счёт должен состоять из 20 цифр и начинаться с: 30111, 30231, 40201, 40406, 40501, 40502, 40503, 40601, 40602, 40603, 40701, 40702, 40703 или 40802.

Создание магазина

Создать первый магазин можно либо на Главной странице Вашего Личного кабинета клиента либо в разделе «Мои магазины» нажатием кнопки «Добавить новый». В дальнейшем, магазины можно создавать только в разделе «Мои магазины».  На открывшейся странице необходимо заполнить все поля, в соответствии с их назначением и требованиями.

Форма регистрации нового магазина Зарегистрироваться как

При регистрации нового магазина можно выбрать следующие типы подключения:

  • юридического лица или ИП для приема платежей через ROBOKASSA;
  • физического лица для приема платежей через ROBOKASSA;
  • физического лица с использованием ROBOSTORE;
  • физического лица только для выставления счетов.
После активации магазина изменение его типа  невозможно.
Наименование магазина

Это название будет видеть клиент при совершении оплаты в нашем интерфейсе. Должно быть уникальным для каждого магазина.

Название магазина должно быть коротким и содержать не более 40 символов. Если название будет слишком длинным, то на страницах оплаты, скорее всего, будет показываться URL главной страницы Вашего сайта.
Идентификатор магазина

Идентификатор магазина будет использоваться интерфейсом инициализации оплаты. Идентификатор может содержать латинские буквы, цифры и символы: . - _.

Не путайте  Идентификатор магазина с Идентификатором клиента!
В скрипте ROBOKASSA, а также в панели управления сайтом (если Вы работаете на CMS со встроенным модулем ROBOKASSA), в качестве значения для параметра MerchantLogin, необходимо использовать именно Идентификатор магазина, а не Ваш Логин для входа в Личный кабинет клиента. Во встроенных модулях оплаты параметр MerchantLogin чаще всего обозначается как Логин, Логин магазина в ROBOKASSA или подобным образом.
Почтовый адрес

Заполняется в том случае, если ранее Вами не были заполнены данные Юридического лица, раздел Адреса.

Заполняется только для юридического лица.
URL главной страницы Вашего сайта

Буквально – адрес главной страницы Вашего сайта. Например, http://www.robokassa.ru/. Настоящий URL будет использоваться в разделе Технические настройки, который станет Вам доступен  после создания магазина.

Внимание! После активации магазина этот URL изменить будет невозможно!
Расчётный счёт магазина

Выбирается из списка расчётных счетов, если уже был задан ранее. Если счёт еще не создан, то создаётся  в разделе Настройки  Способы вывода средств нажатием на кнопку «Добавить способ вывода средств».

Ответственное лицо

Ваш сотрудник, который будет отвечать за взаимодействие с ROBOKASSA по общим вопросам, и к которому мы всегда сможем обратиться. Сотрудника можно выбрать из списка, или добавить нового, нажав кнопку «Добавить».

В данный список попадают только сотрудники у которых заполнены поля: ФИОEmail 1 и Телефон.
Тех. Поддержка

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

В данный список попадают только сотрудники у которых заполнены поля: ФИОEmail 1 и Телефон.
Раздел нашего Каталога магазинов, в котором можно будет найти Ваш магазин

Укажите раздел, в котором будет располагаться Ваш магазин. Если Вы выбрали категорию «Другие товары» или категорию, не полностью раскрывающую Вашу деятельность, пожалуйста, укажите информацию более подробно. Например, Раздел «Другие товары», а в качестве дополнительного описания  — «купоны на скидку». Учтите, что после активации магазина, для того чтобы изменить разделы каталога, ассоциированные Вами с Вашим магазином, будет необходимо специально сформировать запрос на изменение данных. Запрос будет рассмотрен нашими специалистами.

Дополнительное описание товаров (работ, услуг)

Дополнительная уточняющая информация о Ваших товарах, помогающая  покупателю найти этот Ваш товар среди остальных.

После заполнения всех данных, не забудьте нажать кнопку «Создать»! Иначе магазин не будет сохранён в Вашем Личном кабинете.

Технические настройки

Вы можете быстро перейти к настройкам конкретного магазина из общего списка, который виден как на главной странице, так и в разделе Мои магазины, с помощью кнопки «Настройки магазина», представленной в виде иконки (см. картинку).

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

Вносить изменения в этот раздел Вы можете в любое удобное Вам время, в том числе и после Активации магазина.

Форма "Технические настройки" Идентификатор магазина

Первой строкой указан Идентификатор магазина, придуманный Вами при создании магазина.

Алгоритм расчёта хэша

Определяет метод, с помощью которого будет рассчитываться значение параметра SignatureValue. Поддерживаются следующие алгоритмы расчёта хэша: MD5, RIPEMD160, SHA1, SHA256, SHA384, SHA512. Подробнее об алгоритмах хэширования можно прочитать тут.

Пароль #1

Используется интерфейсом инициализации оплаты. Длина не менее 8 символов, должен содержать хотя бы одну букву и хотя бы одну цифру.

Пароль #2

Используется интерфейсом оповещения о платежеXML-интерфейсами. Длина не менее 8 символов, должен содержать хотя бы один символ и хотя бы одну цифру. 

Пароли должны отличаться друг от друга и ни в коем случае НЕ совпадать с паролем для входа в Личный кабинет.

Из соображений безопасности сохраненные пароли не показываются на экране. Запишите/сохраните  все пароли, они потребуются Вам в дальнейшей работе по настройке скриптов.

ResultURL

На него мы будем отправлять Вам оповещение об успешных платежах в автоматическом режиме.

Без настройки этого URL, корректная работа с нашей системой не гарантируется.
Метод отсылки данных по ResultURL

Укажите, каким образом Вы желаете получать от нас информацию по этому URL. Метод отсылки (GET или POST) уточните у Вашего технического специалиста, или же метод указан в инструкции к модулю  ROBOKASSA в CMS на которой Вы работаете.

Если в работе Вашего сайта (магазина) предусмотрено, что всё обрабатывается в ручном режиме и за поступлением платежей следит Ваш сотрудник, то Вы можете настроить автоматическое оповещение на электронный адрес. Для этого в полях ResultURL Вам нужно выбрать метод отсылки данных E-Mail и указать адрес электронной почты, на который Вы желаете получать уведомления.

Пример:

СМС оповещение на телефон

Необязательно для заполнения. 

Внимание! Услуга платная.
SuccessURL

На него будет перенаправлен покупатель после успешного платежа.

Метод отсылки данных по SuccessURL

Укажите, каким образом Вы желаете получать от нас информацию по этому URL. Метод отсылки (GET или POST) данных уточните у Вашего технического специалиста, или же метод указан в инструкции к модулю ROBOKASSA в CMS на которой Вы работаете.

Пример:

 

FailURL

На него будет перенаправлен покупатель после неуспешного платежа, отказа от оплаты.

Метод отсылки данных по FailURL

Укажите,  каким образом Вы желаете получать от нас информацию по этому URL. Метод отсылки (GET или POST) данных уточните у Вашего технического специалиста, или же метод указан в инструкции к модулю  ROBOKASSA в CMS на которой Вы работаете.

Пример:

Параметры проведения тестовых платежей эти настройки нужны для работы с тестовым сервером Алгоритм расчета контрольной суммы

Определяет метод, с помощью которого будет рассчитываться значение параметра SignatureValue для тестовых платежей. Поддерживаются следующие алгоритмы расчёта: MD5, RIPEMD160, SHA1, SHA256, SHA384, SHA512. Подробнее об алгоритмах хэширования можно прочитать тут.

Пароль#1

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

Пароль#2

Используется для тестирования магазина интерфейсом оповещения о платежеXML-интерфейсами. Длина не менее 8 символов, должен содержать хотя бы один символ и хотя бы одну цифру. 

Пароли для проведения тестовых платежей не должны совпадать с рабочими паролями магазина.

Обращаем Ваше внимание, что если раздел Технические настройки не будет заполнен должным образом, то полноценное взаимодействие Вашего сайта (магазина) с системой ROBOKASSA будет невозможно, и Вашей заявке на активацию будет отказано.

Изменение технических настроек после активации

Данные в разделе Технические настройки можно изменять и сохранять без дополнительного подтверждения до Активации Вашего магазина. После Активации для сохранения изменений потребуется вводить Код подтверждения, который высылается на E-Mail сотрудника, вносившего эти изменения.

Код действителен в течении 20 минут, после этого все внесённые Вами изменения будут отменены.

Активация

После выполнения всех вышеописанных действий и настройки скрипта ROBOKASSA на Вашем сайте Вы можете направить нам запрос на Активацию Магазина для приёма платежей. Данный запрос отправляется из Настроек Вашего магазина (раздел Мои магазины – магазин который необходимо активировать), по кнопке «Запрос на активацию»:

Но если Вами не заполнены какие-то важные разделы, информация из которых будет использоваться в работе, то в настройках магазина будет присутствовать напоминание об этом, а кнопка «Запрос на активацию»  не будет отображаться.

При наличии такого напоминания необходимо проверить корректность заполнения данных Юридического лица и раздела Технические настройки.

Деактивировать магазин можно только по запросу в Службу Поддержки ROBOKASSA.

Установка и настройка скрипта (модуля) ROBOKASSA

Итак, Вы зарегистрировались, теперь необходимо выполнить важный шаг – установить скрипт ROBOKASSA на Вашем сайте и настроить его работу.

По этим ссылкам Вы можете скачать архивы с готовыми скриптами, на интересующем Вас языке программирования:

Либо ознакомиться с готовыми модулями и инструкциями под различные CMS, размещённые на этой странице.

Описание переменных, параметров и значений

Для начала рассмотрим, какие параметры и переменные используются в скриптах и какие значения для них могут быть использованы. А также, что из всего этого нужно и для чего.

Обязательные параметры

Без них ничего работать не будет!

MerchantLogin

Идентификатор магазина в ROBOKASSA, который Вы придумали при создании магазина.

OutSum

Требуемая к получению сумма (буквально  стоимость заказа, сделанного клиентом). Формат представления  число, разделитель  точка, например: 123.45.

Сумма должна быть указана в рублях. 

Но, если стоимость товаров у Вас на сайте указана, например, в долларах, то при выставлении счёта к оплате Вам необходимо указывать уже пересчитанную сумму из долларов в рубли. См. необязательный параметр OutSumCurrency.

InvDesc

Описание покупки, можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина  100 символов. Эта информация отображается в интерфейсе ROBOKASSA и в Электронной квитанции, которую мы выдаём клиенту после успешного платежа. Корректность отображения зависит от необязательного параметра Encoding (см. Необязательные параметры).

SignatureValue

Контрольная сумма - хэш, число в 16-ричной форме и любом регистре (0-9, A-F)рассчитанное методом указанным в Технических настройках магазина. Рассчитывается по базе, содержащей следующие параметры, разделенные символом ':', с добавлением Пароль#1  — (этот пароль Вы придумали, на этапе заполнения раздела Технические настройки): MerchantLogin:OutSum:InvId:Пароль#1  — если параметр InvId был передан, и: MerchantLogin:OutSum::Пароль#1  если параметр InvId передан не был.

Это очень важный параметр, который обеспечивает безопасность при прохождении платежа и целостность передаваемых данных. Корректное его составление гарантирует, что злоумышленник не сможет подделать какие-либо данные в операции оплаты.
Необязательные параметры Вы можете пропустить этот раздел

Если Вы не планируете делать сложный скрипт или страницу оплаты, то можно сразу перейти к разделу Простейший магазин без формирования уникального номера счета.

InvId

Номер счета в магазине. Необязательный параметр, но мы настоятельно рекомендуем его использовать.

Значение этого параметра должно быть уникальным для каждой оплаты. Может принимать значения от 1 до 2147483647 (231-1). Если значение параметра пустое, или равно 0, или параметр вовсе не указан,  то при создании операции оплаты ему автоматически  будет присвоено уникальное значение.

Используйте данную возможность только в очень простых магазинах, где не требуется какого-либо контроля оплаты.

Если параметр передан, то он должен быть включён в расчёт контрольной суммы (SignatureValue)

IncCurrLabel

Предлагаемый способ оплаты. Тот вариант оплаты, который Вы рекомендуете использовать своим покупателям. Если параметр указан, то покупатель при переходе на сайт ROBOKASSA попадёт на страницу оплаты с выбранным способом оплаты.

Пользователь может изменить его в процессе оплаты.

Доступные значения для параметра IncCurrLabel  метки валют, Вы можете получить с использованием соответствующего интерфейса описанного в разделе: XML интерфейсы. Интерфейс получения списка валют. 

Culture

Язык общения с клиентом (в соответствии с ISO 3166-1). Определяет на каком языке будет страница ROBOKASSA, на которую попадёт покупатель. Может принимать значения: en, ru.

Если параметр не передан, то используются региональные настройки браузера покупателя. Для значений отличных от ru или en используется английский язык.

Encoding

Кодировка, в которой отображается страница ROBOKASSA. По умолчанию: windows-1251. Этот же параметр влияет на корректность отображения описания покупки (InvDesc) в интерфейсе ROBOKASSA, и на правильность передачи Дополнительных пользовательских параметров, если в их значениях присутствует язык отличный от английского.

Email

E-Mail покупателя автоматически подставляется в платёжную форму ROBOKASSA. Пользователь может изменить его в процессе оплаты.

ExpirationDate

Срок действия счета. Этот параметр необходим, чтобы запретить пользователю оплату позже указанной магазином даты при выставлении счета. Следует обратить внимание, что в некоторых случаях, если оплата производится в оффлайне, например через терминал или в салоне связи, то оплата может произойти и позже указанного срока действия счета.

Дата передаётся в формате, рекомендованном стандартом ISO 8601 (YYYY-MM-DDThh:mm:ss.fffffffZZZZZ), где:

  • YYYY   год, 4 цифры;
  • MM  месяц, 2 цифры;
  • DD  — день месяца, 2 цифры (от 01 до 31);
  • T  — латинский символ «T» в верхнем регистре;
  • hh   часы, 2 цифры (24-часовой формат, от 00 до 23);
  • mm  — минуты, 2 цифры (от 00 до 59);
  • ss  — секунды, 2 цифры (от 00 до 59) (необязательно);
  • fffffff  — от 1 до 7 цифр дробной части секунд (необязательно);
  • ZZZZZ  — описатель временной зоны (необязательно). Если он отсутсвует, подразумевается московское время (UTC+03). Может принимать значения:
    • +hh:mm или — hh:mm  смещение относительно UTC (показывает, что указано локальное время, которое на данное число часов и минут опережает или отстает от UTC);
    • символ «Z» (должен быть в верхнем регистре) означает, что момент времени представлен в UTC зоне (эквивалентно +00:00 и -00:00).
OutSumCurrency

Способ указать валюту, в которой магазин выставляет стоимость заказа. Этот параметр нужен для того, чтобы избавить магазин от самостоятельного пересчета по курсу. Является дополнительным к обязательному параметру OutSum. Если этот параметр присутствует, то OutSum показывает полную сумму заказа в той валюте, которая указана в параметре OutSumCurrency. В этом случае полная сумма будет пересчитана по курсу ЦБ на день оплаты и выплачена магазину. Может принимать значения USD и EUR.

Если передается параметр OutSumCurrency, то он должен быть включен в расчет  контрольной суммы (SignatureValue).  В этом случае база для  расчёта будет выглядеть так: MerchantLogin:OutSum:InvId:OutSumCurrency:Пароль#1

Дополнительные пользовательские параметры

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

Если:

  • Вы собираетесь создавать магазин, в котором предусмотрено большое количество товаров, разделов и типов товара.
  • Ваш сайт будет предоставлять разнообразные услуги, не похожие друг на друга.
  • На одном сайте работают несколько ресурсов.
  • И самое распространённое  Вам требуется использовать дополнительную идентификацию Ваших клиентов, например, знать его ID или Логин у Вас на сайте.

То при старте операции оплаты Вы можете передавать всю эту информацию.

При завершении операции оплаты, мы будем возвращать Вам эти дополнительные параметры. Формироваться они должны следующим образом:

Всегда начинаться с: Shp_; SHP_shp_ 
Выглядеть они могут так: Shp_1=1;Shp_1=2 —  или так: Shp_oplata=1;Shp_oplata=2  или вот так: Shp_login=Vasya; Shp_name=Вася.

Например: MerchantLogin:OutSum:InvId:Пароль#1:Shp_id=126:Shp_login=Vasya

При получении уведомлений от ROBOKASSA, Вы (Ваши скрипты) сможете использовать их по своему усмотрению. Например, принять решение куда перенаправить покупателя на Вашем сайте.

Очень важно, чтобы все параметры были отсортированы в алфавитном порядке.

Например: 

Shp_login=Vasya:Shp_name=Вася :Shp_oplata=1 (l – n – o)

Если в значении пользовательского параметра используется русские символы (Shp_name=Вася), то значение этого параметра перед использованием в строке для подсчета контрольной суммы и отправкой его формой необходимо URL-кодировать. Если Вы осуществляете GET запрос, то значение этого параметра необходимо еще раз URL-кодировать непосредственно перед формированием ссылки запроса на инициализацию оплаты.

В сумме строка может содержать до 2048 знаков.

Каждый из этих параметров ОБЯЗАТЕЛЬНО должен быть включён в подсчёт контрольной суммы (SignatureValue). Как при старте операции, так и при её завершении. Все параметры  должны быть обязательно отсортированы в алфавитном порядке.

Периодические платежи

Некоторым магазинам необходимо получать от пользователей повторяющиеся платежи  например оплату за периодические издания, ежемесячные подписки на новости и т.д. Для упрощения проведения таких платежей предусмотрен специальный сценарий.

На первом этапе пользователь производит обычный платеж по выставленному счету, но помимо всех остальных параметров необходимо передать еще один специальный параметр, указывающий, что в дальнейшем платеж будет периодически повторяться. После успешной оплаты такого счета с помощью банковской карты, магазин получает возможность периодически повторять платеж уже без участия пользователя. Для этого магазин делает запросы на специальный URL (https://auth.robokassa.ru/Merchant/Recurring), передавая обычные параметры и указывая номер счета, оплаченного на первом этапе.

Параметры Recurring

Этот параметр показывает, что выставление данного счета будет повторяющимся. Принимает значение true.

PreviousInvoiceID

Магазин передает это параметр в вызове, направляемом на URL https://auth.robokassa.ru/Merchant/Recurring и указывает в нем номер счета первого платежа в серии повторяющихся платежей. Кроме того, в этом вызове передаются обычные обязательные и необязательные параметры, со следующими исключениями:

  • параметры InvoiceID, EMail, PreviousInvoiceID обязательно должны быть указаны в запросе;
  • параметров IncCurrLabel, ExpirationDate, Recurring не должно быть в запросе.

Интерфейс оплаты

Код кассы с одной кнопкой «Оплатить»

Интерфейс ROBOKASSA, предлагающий перейти к оплате, нажав одну кнопку. 

Предварительно магазин должен сохранить у себя передаваемую информацию (номер счёта, сумма, дата формирования и дополнительные параметры, если они используются). Адрес для отправки запроса на проведение оплаты: https://auth.robokassa.ru/Merchant/PaymentForm/FormMS.js

Результатом является изображенная на иллюстрации форма:

Варианты кнопок Вы можете увидеть здесь.

Параметры запроса: MerchantLogin, OutSum, InvId, InvDesc и SignatureValue.

База для расчёта контрольной суммы: MerchantLogin:OutSum:InvId:Пароль#1 

где: Пароль#1   это тот самый пароль, который Вы указали в Технических настройках.

Если Вы хотите передавать нам пользовательские параметры, например: Shp_login=Vasya и Shp_oplata=1, то база для расчёта контрольной суммы должна выглядеть так:

MerchantLogin:OutSum:InvId:Пароль#1:Shp_login=Vasya:Shp_oplata=1

 Пример кода (PHP), для установки на сайте, с использованием только обязательных параметров:

<? $mrh_login = "demo"; $mrh_pass1 = "password_1"; $inv_id = 0; $inv_desc = "Техническая документация по ROBOKASSA"; $out_summ = "8.96"; $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1"); print "<html><script language=JavaScript ". "src='https://auth.robokassa.ru/Merchant/PaymentForm/FormMS.js?". "MerchantLogin=$mrh_login&OutSum=$out_summ&InvoiceID=$inv_id". "&Description=$inv_desc&SignatureValue=$crc'></script></html>"; ?>

Подробное описание всех использованных параметров и их значений можно посмотреть здесь. Обратите внимание, что приведённый пример предполагает, что в Технических настройках магазина выбран алгоритм расчёта хэша MD5.

Покупатель отправляется для оплаты в платёжный интерфейс ROBOKASSA, выбирает способ оплаты и совершает платёж. После чего средства перечисляются на Ваш баланс в системе ROBOKASSA, а на зарегистрированные Вами  ResultURL мы пришлём уведомление об оплате.

Оплата произвольной суммы

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

На странице оплаты сайта продавца размещается код, выполняющий запрос на сайт ROBOKASSAROBOKASSA возвращает в качестве ответа на запрос html код формы:

Примеры кода для сайта:

<? $mrh_login = "demo"; $mrh_pass1 = "password_1"; $inv_id = 0; $inv_desc = "Техническая документация по ROBOKASSA"; $def_sum = "10"; $crc = md5("$mrh_login::$inv_id:$mrh_pass1"); print "<html><script language=JavaScript ". "src='https://auth.robokassa.ru/Merchant/PaymentForm/FormFLS.js?". "MerchantLogin=$mrh_login&DefaultSum=$def_sum&InvoiceID=$inv_id". "&Description=$inv_desc&SignatureValue=$crc'></script></html>"; ?>

Приведённый пример предполагает, что в Технических настройках магазина выбран алгоритм расчёта хэша MD5.

Параметр OutSum в этом варианте не участвует. Вместо него используется: DefaultSum  сумма, отображаемая (предлагаемая для оплаты) в форме по умолчанию. В отличие от OutSum, DefaultSum не участвует в  расчёте контрольной суммы SignatureValue.

База для расчёта контрольной суммы SignatureValue, будет выглядеть так:"$mrh_login::$inv_id:$mrh_Пароль#1".

Обратите внимание, что вместо параметра OutSum пустое место.

Подробное описание всех использованных параметров и их значений можно посмотреть здесь.

Пример кода с использованием всех параметров

Пример кода на PHP, для установки на сайте. 

<? // регистрационная информация (Идентификатор магазина, пароль #1) // registration info (Merchant ID, password #1) $mrh_login = "demo"; $mrh_pass1 = "password_1"; // номер заказа // number of order $inv_id = 0; // описание заказа // order description $inv_desc = "Техническая документация по ROBOKASSA"; // сумма заказа // sum of order $out_summ = "8.96"; // тип товара // code of goods $shp_item = 1; // предлагаемая валюта платежа // default payment e-currency $in_curr = "BANKOCEAN2R"; // язык // language $culture = "ru"; // кодировка // encoding $encoding = "utf-8"; // Адрес электронной почты покупателя // E-mail $Email = "test@test.ru"; // Срок действия счёта // Expiration Date $ExpirationDate = "2015-07-30T12:00"; // Валюта счёта // OutSum Currency $OutSumCurrency = "USD"; // формирование подписи // generate signature $crc = md5("$mrh_login:$out_summ:$inv_id:$OutSumCurrency:$mrh_pass1:Shp_item=$shp_item"); // форма оплаты товара // payment form print "<html>". "<form action='https://auth.robokassa.ru/Merchant/Index.aspx' method=POST>". "<input type=hidden name=MrchLogin value=$mrh_login>". "<input type=hidden name=OutSum value=$out_summ>". "<input type=hidden name=InvId value=$inv_id>". "<input type=hidden name=Desc value='$inv_desc'>". "<input type=hidden name=SignatureValue value=$crc>". "<input type=hidden name=Shp_item value='$shp_item'>". "<input type=hidden name=IncCurrLabel value=$in_curr>". "<input type=hidden name=Culture value=$culture>". "<input type=hidden name=Email value=$Email>". "<input type=hidden name=ExpirationDate value=$ExpirationDate>". "<input type=hidden name=OutSumCurrency value=$OutSumCurrency>". "<input type=submit value='Оплатить'>". "</form></html>"; ?>

Подробное описание всех использованных параметров и их значений можно посмотреть здесьОбратите внимание, что приведённый пример предполагает, что в Технических настройках магазина выбран алгоритм расчёта хэша MD5.

Варианты кнопок и форм

Вы можете выбрать размер и внешний вид кнопки оплаты или формы ввода суммы. Ниже приведены возможные варианты кнопок и форм, а также URL-ы, которые нужно использовать для получения соответствующей кнопки/формы.

Варианты кнопки оплаты

https://auth.robokassa.ru/Merchant/PaymentForm/FormM.js

 

https://auth.robokassa.ru/Merchant/PaymentForm/FormMS.js

 

https://auth.robokassa.ru/Merchant/PaymentForm/FormS.js

 

https://auth.robokassa.ru/Merchant/PaymentForm/FormSS.js

https://auth.robokassa.ru/Merchant/PaymentForm/FormL.js

https://auth.robokassa.ru/Merchant/PaymentForm/FormV.js

 

 

 

Варианты формы со вводом суммы

https://auth.robokassa.ru/Merchant/PaymentForm/FormFL.js

https://auth.robokassa.ru/Merchant/PaymentForm/FormFLS.js

Оповещение об оплате на ResultURL

ResultURL предназначен для получения Вашим сайтом оповещения об успешном платеже в автоматическом режиме.

В случае успешного проведения оплаты ROBOKASSA делает запрос на ResultURL (см. раздел Технические настройки) с указанием параметров OutSum, InvId и SignatureValue.

Данные всегда передаются в кодировке UTF-8.
Описание параметров OutSum

Сумма, оплаченная покупателем (та самая сумма, которую Вы прислали в ROBOKASSA на страницу оплаты).

InvId

Номер счета в магазине.

SignatureValue

Контрольная сумма - хэш, число в 16-ричной форме и любом регистре (0-9, A-F), рассчитанное методом указанным в Технических настройках магазина. 

База для расчёта контрольной суммы: OutSum:InvId:Пароль#2  если Вы не передавали пользовательские параметры, и: OutSum:InvId:Пароль#2:[Пользовательские параметры].

Например: если Вы передали нам параметры с вот такими значениями:

  • OutSum = 100.26
  • InvId = 450009
  • Shp_login = Vasya
  • Shp_oplata = 1

 то база для расчёта контрольной суммы будет выглядеть так: 100.26:450009:Пароль#2:Shp_login=Vasya:Shp_oplata=1.

Про Пароль#2 можно  можно прочитать в разделе Технические настройки.

Ваш скрипт, находящийся по ResultURL, обязан проверить равенство полученной контрольной суммы и контрольной суммы, рассчитанной Вашим скриптом по параметрам, полученным от ROBOKASSA, а не по локальным данным магазина.

Если контрольные суммы совпали, то Ваш скрипт должен ответить ROBOKASSA, чтобы мы поняли, что Ваш скрипт работает правильно и повторное уведомление с нашей стороны не требуется. Результат должен содержать  текст OK и параметр InvId. Например, для номера счёта 5 должен быть возвращён вот такой ответ: OK5.

Если контрольные суммы не совпали, то полученное оповещение некорректно, и ситуация требует разбора магазином.

Если в настройках в качестве метода отсылки данных был выбран E-Mail, то в случае успешного проведения оплаты ROBOKASSA  отправит Вам письмо на электронный адрес, указанный в поле ResultURL, со всеми выше перечисленными параметрами.

Получена оплата:

Цена: OutSum
inv_id: InvId
Метод оплаты: PaymentMethod
[Пользовательские параметры]

С уважением,
Проект ROBOKASSA

Переадресация пользователя при успешной оплате на SuccessURL

В случае успешного исполнения платежа Покупатель сможет перейти по адресу, указанному Вами в Технических настройках, там же Вы указали метод (GET или POST).

Переход пользователя по данному адресу с корректными параметрами (правильной Контрольной суммой) означает, что оплата Вашего заказа успешно выполнена.

Однако для дополнительной защиты желательно, чтобы факт оплаты проверялся скриптом, исполняемым при переходе на ResultURL, или путем запроса XML-интерфейса получения состояния оплаты счета, и только при реальном наличии счета с номером InvId в БД магазина.

На самом деле, переход пользователя по ссылке SuccessURL – это формальность, которая нужна только для того, чтобы пользователь вернулся обратно к Вам и получил информацию о том, что он сделал всё правильно, и его заказ ждёт его там-то и там-то. Проводить подтверждение оплаты у себя по базе и все остальные действия, связанные с выдачей покупки, Вам нужно при получении уведомления на ResultURL, потому что именно на него ROBOKASSA передаёт подтверждающие данные об оплате в автоматическом режиме (т. е. в любом случае и без участия пользователя).

Параметры, передающиеся при переходе OutSum

Сумма, оплаченная покупателем (та самая, которую Вы прислали в ROBOKASSA, на страницу оплаты).

InvId

Номер счета в магазине.

SignatureValue

Контрольная сумма - хэш, число в 16-ричной форме и любом регистре (0-9, A-F), рассчитанное методом указанным в Технических настройках магазина. 

База для расчёта контрольной суммы: OutSum:InvId:Пароль#1  если Вы не передавали пользовательские параметры, и: OutSum:InvId:Пароль#1:[Пользовательские параметры].

Например: если Вы передали нам параметры с вот такими значениями:

  • OutSum = 100.26
  • InvId = 450009
  • Shp_login = Vasya
  • Shp_oplata = 1

 то база для расчёта контрольной суммы будет выглядеть так: 100.26:450009:Пароль#1:Shp_login=Vasya:Shp_oplata=1.

Про Пароль#1 можно  можно прочитать в разделе Технические настройки.

Контрольная сумма считается от значений, пришедших в запросе без каких-либо преобразований, округления и т. п. Это сделано для того, чтобы рассчитанное значение Контрольной суммы не зависело от способов округления, используемых магазином, форматов представления чисел, разделителей целой и дробной части и т. д.

Culture

Язык, использовавшийся при совершении оплаты. В соответствии с ISO 3166-1.

Пользовательские параметры

Переадресация пользователя при отказе от оплаты на FailURL

В случае отказа от исполнения платежа Покупатель перенаправляется по данному адресу.

Необходимо для того, чтобы Продавец мог, например, разблокировать заказанный товар на складе. При отказе от оплаты, магазину на FailURL методом, выбранным при регистрации, будут переданы параметры:

Параметры, передающиеся при отказе от оплаты OutSum

Сумма, оплаченная покупателем (та самая, которую Вы прислали в ROBOKASSA, на страницу оплаты).

InvId

Номер счета в магазине.

Culture

Язык, использовавшийся при совершении оплаты. В соответствии с ISO 3166-1.

Переход пользователя по данному адресу, строго говоря, не означает окончательного отказа Покупателя от оплаты, нажав кнопку «Back» в браузере он может вернуться на страницы ROBOKASSA. Поэтому в случае блокировки товара на складе под заказ, для его разблокирования желательно проверять факт отказа от платежа запросом запроса XML-интерфейса получения состояния оплаты счета, используя в запросе номер счета InvId имеющийся в БД магазина (Продавца).

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

Сервис SMS-сообщений позволит Вам быстро и оперативно получать информацию о поступлении оплаты в Ваш магазин, а также передавать информацию для Ваших клиентов – сообщать  о порядке прохождения и формирования заказа. После каждой покупки, совершённой в Вашем магазине, ROBOKASSA предоставляет возможность отправить 3 SMS-сообщения покупателю. 

Для подключения сервиса SMS-рассылок информирования  об оплате заказа в магазине следует:

  • активировать магазин (подключение сервиса к еще неактивированному магазину невозможно);
  • перейти в

  • Выбрать магазин из выпадающего списка;
  • В Технических настройках данного магазина прописать номер телефона, на который Вы хотите получать  SMS-сообщения об оплате заказа. 

Для подключения сервиса SMS-рассылок  для информирования покупателей следует:

  • активировать магазин (в неактивированном магазине сервис работать не будет);
  • подключить на своей стороне сервис, осуществляющий отправку SMS-сообщений. Сервис расположен по адресу: https://services.robokassa.ru/SMS/. Сервис принимает запросы методом GET. Пример запроса можно посмотреть здесь.

К сервису отправки SMS  подключется каждый магазин по отдельности (если их несколько).Стоимость услуги: 1,5 руб. для юридических лиц и 5 руб. для физических лиц за SMS.

SMS-сообщения могут быть отправлены только в том случае, если у Вас на балансе хватает денежных средств для осуществления отправки.

Параметры запроса login

строка, содержащая Ваш Идентификатор клиента в Личном кабинете клиента на сайте ROBOKASSA.

phone

строка, содержащая номер телефона в международном формате без символа «+» (79051234567).

message

строка в кодировке UTF-8 длиной до 128 символов, содержащая текст отправляемого SMS.

signature

строка, содержащая электронную подпись. Данные для поля signature вычисляются как MD5 или SHA1 от строки формата содержащей следующие параметры, разделенные символом ':'  login:phone:message:Пароль#1где  Пароль#1  — этот тот пароль, который Вы придумали на этапе заполнения раздела Технические настройки).

Не следует путать этот параметр с SignatureValue!

Допустим, необходимо отправить SMS для магазина с логином demo_merchant на номер 79051234567 с текстом «All work fine!».

Пароль#1 находится в Личном кабинете клиента в Технических настройках данного магазина ( у клиента может быть несколько магазинов). Например, значение Пароль#1 будет Password1drowssaP.

Таким образом строка для подписи будет выглядеть как demo_merchant:79051234567:All work fine!:Password1drowssaP. Подпись MD5 такого запроса будет следующей: 6f0ed2dbb08da5a50124a3ee0581a7f6. Подпись SHA1 будет: 271f256595a8adc63438a3d75e14c20bc3fabe85.

Описание возвращаемых данных result

значение логического типа, указывающее на общий успех или неуспех обработки запроса.

Обращаем ваше внимание, что этот параметр никак не связан с с ResultURL!
count

целочисленное значение, указывающее на количество SMS, доступное после этого запроса  (данное значение заполняется только в случае успешного исполнения запроса).

errorCode

целочисленное значение кода ошибки обработки (0 – успешная  обработка).

errorMessage

текстовое описание возникшей в процессе обработки запроса ошибки.

Запрос можно считать успешно исполненным если поле result = true и errorCode = 0.

https://services.robokassa.ru/SMS/?login=demo_merchant&phone=79051234567&message=All%20work%20fine!&signature=6f0ed2dbb08da5a50124a3ee0581a7f6

Коды ошибок, специфичные для этого интерфейса
  • 0  запрос обработан успешно;
  • 1 – отсутствует параметр запроса;
  • 2 – указанный партнер не найден;
  • 3 – партнер неактивен;
  • 4 – отправка SMS-сообщений для данного партнера недоступна (партнер не активировал данную услугу в личном кабинете);
  • 5 – в данный момент отправка SMS-сообщений указанным партнером невозможна;
  • 6 – первышен лимит SMS-сообщений;
  • 1000 – неверная подпись запроса;
  • 9999 – внутренняя ошибка.

XML интерфейсы

Общая информация

XML интерфейсы предназначены для создания развёрнутого интерфейса ROBOKASSA, со всевозможными информационными блоками для клиентов Вашего магазина/сайта, а также для построения более глубокой системы взаимодействия Вашего магазина/сайта с ROBOKASSA.

Запросы к интерфейсам можно отправлять методом HTTP GET или HTTP POST, либо их можно использовать как методы XML web-сервиса:

Ответ на запрос, переданный методом HTTP GET/POST, возвращается в формате XML-документа. Документ имеет следующую структуру:

<?xml version="1.0" encoding="utf-8" ?> <...> <Result> <Code>integer</Code> <Description>string</Description> </Result> <...> Запрошенные данные (возвращаются только в случае успешного выполнения запроса) Required data </...> </...>

Элемент Result содержит информацию о результате выполнения запроса:

Информация о результате в элементе Result Code

Результат выполнения запроса. В случае успешного выполнения  0, в противном случае код ошибки. Если во время выполнения запроса произошла ошибка, то в ответе не будет содержаться дополнительных элементов с запрашиваемыми данными.

Description

Текстовое описание результата выполнения запроса.

Общие коды ошибок

Общие коды ошибок, которые могут возвращаться всеми запросами:

  • 2  информация о магазине с таким MerchantLogin не найдена или магазин не активирован;
  • 1000  внутренняя ошибка сервиса.

Интерфейс получения списка валют

Возвращает список валют, доступных для оплаты заказов указанного магазина/сайта.

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

Название метода

GetCurrencies

URL для запросов HTTP GET/POST

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/GetCurrencies

Параметры запроса MerchantLogin Language

Язык для локализованных значений в ответе (названий валют, методов оплаты и т. д.). 

Возможные значения:

  • ru  русский;
  • en – английский.
Пример запроса методом HTTP GET

Формат ответа для запросов HTTP GET/POST

<?xml version="1.0" encoding="utf-8" ?> <CurrenciesList xmlns="http://auth.robokassa.ru/Merchant/WebService/"> <Result> <Code>integer</Code> <Description>string</Description> </Result> <Groups> <Group Code="string" Description="string"> <Items> <Currency Label="string" Name="string" /> ... </Items> </Group> ... </Groups> </CurrenciesList>

Описание возвращаемых данных Groups

Группы валют; могут использоваться для более удобного отображения валют в пользовательском интерфейсе.

Code

Код группы.

Description

Текстовое описание группы.

Items

Валюты, входящие в группу.

Label

Код валюты.

Name

Наименование валюты.

Коды ошибок, специфичные для этого интерфейса

Нет.

Интерфейс получения списка доступных способов оплаты

Возвращает список способов оплаты, доступных для оплаты заказов указанного магазина/сайта. 
Используется для отображения доступных способов оплаты непосредственно на Вашем сайте, если Вы желаете дать больше информации своим клиентам. Основное отличие от Списка валют – здесь не показывается детальная информация по всем вариантам оплаты, здесь отображаются группы/методы оплаты.

Название метода

GetPaymentMethods

URL для запросов HTTP GET/POST

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/GetPaymentMethods

Параметры запроса MerchantLogin Language

Язык для локализованных значений в ответе (названий валют, методов оплаты и т. д.). 

Возможные значения:

  • ru - русский, 
  • en – английский.
Пример запроса методом HTTP GET

Формат ответа для запросов HTTP GET/POST

<?xml version="1.0" encoding="utf-8" ?> <PaymentMethodsList xmlns="http://auth.robokassa.ru/Merchant/WebService/"> <Result> <Code>integer</Code> <Description>string</Description> </Result> <Methods> <Method Code="string" Description="string" /> <Method Code="string" Description="string" /> ... </Methods> </PaymentMethodsList>

Описание возвращаемых данных Methods

Доступные способы оплаты.

Code

Код способа оплаты.

Description

Текстовое описание способа оплаты.

Коды ошибок, специфичные для этого интерфейса

Нет.

Интерфейс расчёта суммы к оплате с учётом комиссии сервиса

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

Название метода

GetRates

URL для запросов HTTP GET/POST

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/GetRates

Параметры запроса MerchantLogin IncCurrLabel

Код валюты, для которой нужно произвести расчет суммы к оплате. Если оставить этот параметр пустым, расчет будет произведен для всех доступных валют.

OutSum

Сумма, которую хочет получить магазин. Исходя из этой суммы и текущих курсов валют для каждой валюты/варианта оплаты в списке будет рассчитана сумма, которую должен будет заплатить клиент.

Language

Язык для локализованных значений в ответе (названий валют, методов оплаты и т. д.). 

Возможные значения:

  • ru - русский, 
  • en – английский.
Пример запроса методом HTTP GET

Формат ответа для запросов HTTP GET/POST

<?xml version="1.0" encoding="utf-8" ?> <RatesList xmlns="http://auth.robokassa.ru/Merchant/WebService/"> <Result> <Code>integer</Code> <Description>string</Description> </Result> <Groups> <Group Code="string" Description="string"> <Items> <Currency Label="string" Name="string"> <Rate IncSum="decimal" /> </Currency> ... </Items> </Group> ... </Groups> </RatesList>

Описание возвращаемых данных Groups

Группы валют. Могут использоваться для более удобного отображения валют в пользовательском интерфейсе.

Code

Код группы.

Description

Текстовое описание группы.

Items

Валюты, входящие в группу.

Label

Код валюты.

Name

Наименование валюты.

Rate/IncSum

Сумма, которую должен будет заплатить пользователь с учетом комиссии сервиса.

Коды ошибок, специфичные для этого интерфейса

Нет.

Интерфейс расчёта суммы к получению магазином

Позволяет рассчитать сумму к получению, исходя из текущих курсов ROBOKASSA, по сумме, которую заплатит пользователь.

Название метода

CalcOutSumm

URL для запросов HTTP GET/POST

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/CalcOutSumm

Параметры запроса MerchantLogin IncCurrLabel

Код валюты, для которой нужно произвести расчет суммы к оплате.

IncSum

Сумма, которую должен будет заплатить пользователь.

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/CalcOutSumm?MerchantLogin=demo&IncCurrLabel=YandexMerchantOceanR&IncSum=100

Формат ответа для запросов HTTP GET/POST

<?xml version="1.0" encoding="UTF-8"?> <CalcSummsResponseData xmlns="http://auth.robokassa.ru/Merchant/WebService/"> <Result> <Code>integer</Code> </Result> <OutSum>decimal</OutSum> </CalcSummsResponseData>

Описание возвращаемых данных OutSum

Сумма к получению интернет магазином.

Коды ошибок, специфичные для этого интерфейса

Нет.

Интерфейс получения состояния оплаты счета

Возвращает детальную информацию о текущем состоянии и реквизитах оплаты. 
Необходимо помнить, что операция инициируется не в момент ухода пользователя на оплату, а позже  после подтверждения его платежных реквизитов, т.е. Вы вполне можете не находить операцию, которая по Вашему мнению уже должна начаться.

Название метода

OpState

URL для запросов HTTP GET/POST

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/OpState

Параметры запроса MerchantLogin InvoiceID

Номер счета магазина, целое число.

Signature

Контрольная сумма  хэш, число в 16-ричной форме и любом регистре (0-9, A-F), рассчитанное методом указанным в Технических настройках магазина. Базой для расчёта служат все обязательные параметры, разделенные символом «:», с добавлением Пароль#2, (указывается при заполнении раздела Технических настроек) т. е.: MerchantLogin:InvoiceID:Пароль#2

Пример запроса методом HTTP GET

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/OpState?MerchantLogin=demo&InvoiceID=1932809606&Signature=9e2bf657364d25acf5905b4ac4f50e39

Формат ответа для запросов HTTP GET/POST

<?xml version="1.0" encoding="utf-8" ?> <OperationStateResponse xmlns="http://auth.robokassa.ru/Merchant/WebService/"> <Result> <Code>integer</Code> <Description>string</Description> </Result> <State> <Code>integer</Code> <RequestDate>datetime</RequestDate> <StateDate>datetime</StateDate> </State> <Info> <IncCurrLabel>string</IncCurrLabel> <IncSum>decimal</IncSum> <IncAccount>string</IncAccount> <PaymentMethod> <Code>string</Code> <Description>string</Description> </PaymentMethod> <OutCurrLabel>string</OutCurrLabel> <OutSum>decimal</OutSum> </Info> </OperationStateResponse>

Описание возвращаемых данных State

Текущее состояние оплаты.

Code

Код текущего состояния операции оплаты счета. Возможные значения:

  • 5  операция только инициализирована, деньги от покупателя не получены.

    От пользователя ещё не поступила оплата по выставленному ему счёту или платёжная система, через которую пользователь совершает оплату, ещё не подтвердила факт оплаты.

  • 10  операция отменена, деньги от покупателя не были получены.

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

  • 50  деньги от покупателя получены, производится зачисление денег на счет магазина.

    Операция перешла в состояние зачисления средств на баланс продавца. В этом статусе платёж может задержаться на некоторое время. Если платёж «висит» в этом состоянии уже долго (более 20 минут), это значит, что возникла проблема с зачислением средств продавцу.

  • 60 – деньги после получения были возвращены покупателю.

    Полученные от покупателя средства возвращены на его счёт (кошелёк), с которого совершалась оплата.

  • 80 – исполнение операции приостановлено.

    Внештатная остановка. Произошла внештатная ситуация в процессе совершения операции (недоступны платежные интерфейсы в системе, из которой/в которую совершался платёж и т.д.) Или операция была приостановлена системой безопасности. Операции, находящиеся в этом состоянии, разбираются нашей службой поддержки в ручном режиме.

  • 100 – операция выполнена, завершена успешно.

    Платёж проведён успешно, деньги зачислены на баланс продавца, уведомление об успешном платеже отправлено продавцу.

RequestDate

Дата/время ответа на запрос.

StateDate

Дата/время последнего изменения состояния операции.

Info

Информация об операции оплаты счета.

IncCurrLabel

Валюта, которой платил клиент.

IncSum

Сумма, оплаченная клиентом, в единицах валюты IncCurrLabel.

IncAccount

Номер счёта (кошелёк, номер банковской карты) клиента в платежной системе, через которую производилась оплата.

PaymentMethod

Способ оплаты, выбранный клиентом.

Code (способа оплаты)

Код способа оплаты.

Description

Текстовое описание.

OutCurrLabel

Валюта, в которой получает средства магазин.

OutSum

Сумма, зачисленная на счет магазина, в единицах валюты OutCurrLabel.

Коды ошибок, специфичные для этого интерфейса
  • – неверная цифровая подпись запроса;
  • – информация об операции с таким InvoiceID не найдена.

Формат данных типа дата/время

Дата/время передаются в формате, рекомендованном стандартом ISO 8601 (YYYY-MM-DDThh:mm:ss.fffffff;ZZZZZ), где:

  • YYYY - год, 4 цифры;
  • MM - месяц, 2 цифры;
  • DD - день месяца, 2 цифры (от 01 до 31);
  • T – латинский символ «T» в верхнем регистре;
  • hh - часы, 2 цифры (24-часовой формат, от 00 до 23);
  • mm - минуты, 2 цифры (от 00 до 59);
  • ss - секунды, 2 цифры (от 00 до 59);
  • fffffff – от 1 до 7 цифр дробной части секунд;
  • ZZZZZ - описатель временной зоны, может принимать значения:
    • +hh:mm или -hh:mm – смещение относительно UTC (показывает, что указано локальное время, которое на данное число часов и минут опережает или отстает от UTC);
    • символ «Z» (должен быть в верхнем регистре), означает, что момент времени представлен в UTC зоне (эквивалентно +00:00 и -00:00).

Например: 2010-02-11T16:07:11.6973153+03:00

Как заплатить комиссию за покупателя?

С помощью XML-интерфейса расчёта суммы к получению, можно заплатить комиссию ROBOKASSA за покупателя (только для физических лиц).
Механизм выставления счета в ROBOKASSA остаётся неизменным, система всё так же будет прибавлять свою комиссию к сумме, которую Вы передаете нам для выставления счета.
Интерфейс позволяет рассчитать сумму, которую получит магазин, чтобы покупатель не оплачивал комиссию ROBOKASSA.

Рассмотрим пример.

Пусть товар или услуга на Вашем сайте стоит 100 рублей. Если Вы переадресуете покупателя на страницу оплаты ROBOKASSA с этой суммой, то наша система прибавит к 100 рублям свою комиссию, для примера  5%. В результате покупателю будет выставлен счёт на 105 рублей. Теперь  воспользуемся данным XML интерфейсом и сделаем так, чтобы покупатель заплатил 100 рублей, а не 105, то есть, чтобы Ваш магазин компенсировал ROBOKASSA 5% комиссии.

Расчёт должен выполняться до переадресации клиента.

Если товар или услуга на Вашем сайте стоит 100 рублей, то сначала Вы, с помощью XML интерфейса, рассчитываете сумму, которую получит Ваш магазин, если покупатель заплатит ровно 100 рублей выбранным способом оплаты. Пример запроса для магазина:

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/CalcOutSumm?MerchantLogin=$mrh_login&IncCurrLabel=$inccurrlabel&IncSum=100

ROBOKASSA возвращает Вам рассчитанную сумму, пусть это будет 95.24 рублей.

Обратите внимание, что расчёт будет правильным только для выбранного способа оплаты!

Теперь Вы можете сформировать запрос на инициализацию оплаты и указать в качестве параметра OutSum значение 95.24, а в качестве IncCurrLabel  $inccurrlabel.

Не забудьте, что в  запросе на инициализацию оплаты необходимо указывать параметр IncCurrLabel с той же меткой валюты, которую Вы использовали при расчёте суммы.

Виды магазинов

Простейший магазин без формирования уникального номера счета

Такой магазин не может каким-либо способом контролировать процесс получения платежей и Вам, скорее всего, придется в ручном режиме проставлять статусы оплаты заказов в магазине и отгружать товар покупателям.
Основная схема работы магазина:

  • пользователь, выбрав способ оплаты и нажав кнопку "Оплатить", попадает на страницу ROBOKASSA, где производит оплату (на счёт магазина при этом поступают средства в Вашей валюте).
  • по окончании процесса на E-mail адрес оператора магазина посылается сообщение о произведенной операции.  

В разделе Технические настройки следует заполнить поля:

  • Алгоритм расчёта хэша  MD5 (значение по умолчанию).
  • ResultURL – e-mail адрес оператора магазина, метод отправки данных – e-mail.
  • SuccessURL  – адрес страницы, на которую отправится покупатель после оплаты, метод отправки данных не имеет значения (можно оставить главную страницу сайта, либо разместить по этому адресу страницу с текстом, говорящим клиенту, что его платёж успешно проведён).
  • FailURL  адрес страницы, на которую направляется покупатель после неудачной оплаты, метод отправки данных не имеет значения (можно оставить главную страницу сайта, либо разместить по этому адресу страницу с текстом, говорящим клиенту, что его платёж не проведён).

Для такого магазина и скрипт необходим самый простой. В принципе необходим даже не скрипт, а ссылка для перехода на совершение оплаты.

Для работы Вам понадобится самый простой текстовый редактор, например - Блокнот.

Рассмотрим процедуру создания такой ссылки по шагам:

  1. Воспользуемся шаблоном запроса для перехода на оплату:

    https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=[значение]&OutSum=[значение]&Description=[значение]&SignatureValue=[значение]

  2. Заменим [значение] соответствующими данными, (подробнее можно почитать тут).

    Например, для исходных данных:

    • MerchantLogin = demo

      (идентификатор Вашего магазина из раздела Технические настройки)

    • OutSum = 11

      (cтоимость товара у Вас на сайте, рубли)

    • Description = Покупка в демо магазине

      (описание покупки)

    В результате получаем ссылку:

    https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=demo&OutSum=11&Description=Покупка в демо магазине&SignatureValue=[значение]

  3. В полученной ссылке отсутствует только последнее значение  SignatureValue. Его необходимо вычислить.

    Строка данных, от которой мы будем его считать выглядит так:

    MerchantLogin:OutSum::Пароль#1

     – подставляем в неё соответствующие значения и получаем:

    demo:11::[пароль#1]

    [пароль#1] – это пароль, придуманный Вами при заполнении раздела Технические настройки.

    Обратите внимание,что обязательный параметр InvId присутствует в подсчете SignatureValue, хотя и с пустым значением.
  4.  Для вычисления Контрольной суммы, SignatureValue, по алгоритму MD5 можно использовать один из on-line калькуляторов:

    http://sgeneri.ru;

    http://nekitbelov.wen.ru/online/md5.html;

    http://md5info.ru/demo  или подобный.

  5. Собираем готовую ссылку для размещения на Вашем сайте:

    https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=demo&OutSum=11&Description=Покупка в демо магазине&SignatureValue=2c113e992e2c985e43e348ff3c12f32b

    (По этой ссылке Вы можете совершить настоящий платёж на 11 рублей в нашем Демонстрационном магазине.)

В результате всех этих действий Вы получите ссылку для размещения на своём сайте, без какого-либо дополнительного программирования. И можете начинать принимать платежи.

Магазин формирующий уникальный номер счета

Схема работы магазина следующая:

  • скрипт магазина, сформировав уникальный номер счета и подпись, направляет пользователя на оплату;
  • после оплаты ROBOKASSA уведомляет магазин о том, что платёж совершён, вызывая скрипт, находящийся по адресу ResultURL. Скрипту передаются параметры платежа, подписанные ROBOKASSA с использованием Пароля#2. Если в момент оповещения между ROBOKASSA и магазином отсутствует связь, ROBOKASSA будет повторять попытки ещё три раза, а в случае неудачи администратору магазина будет отправлено email-сообщение следующего вида:

Получена оплата:

Цена: стоимость заказа
inv_id: номер заказа
Метод оплаты: метод, которым был оплачен заказ
shp_...

С уважением,
Проект ROBOKASSA

  • после оплаты пользователь перенаправляется на страницу по адресу SuccessURL  ROBOKASSA передаёт те же параметры, что и на ResultURL, но подписанные с использованием Пароля#1.

В разделе Технические настройки следует прописать:

  • Алгоритм расчёта хэша  MD5 (значение по умолчанию).
  • ResultURL – e-mail адрес оператора магазина, метод отправки данных – e-mail.
  • SuccessURL  – адрес страницы, на которую отправится покупатель после оплаты, метод отправки данных не имеет значения (можно оставить главную страницу сайта, либо разместить по этому адресу страницу с текстом, говорящим клиенту, что его платёж успешно проведён).
  • FailURL  адрес страницы, на которую направляется покупатель после неудачной оплаты, метод отправки данных не имеет значения (можно оставить главную страницу сайта, либо разместить по этому адресу страницу с текстом, говорящим клиенту, что его платёж не проведён).

Для такого магазина необходим несложный скрипт.

Для работы Вам понадобится самый простой текстовый редактор, например - Блокнот.

Рассмотрим процедуру создания такой ссылки по шагам:Воспользуемся шаблоном запроса для перехода на оплату:

В работе рекомендуется использовать самый простой текстовый редактор – Блокнот.

  1. Возьмём готовый запрос для перехода на оплату: 
    https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=$mrh_login&OutSum=$out_summ&InvoiceID=$inv_id&Description=$inv_desc&SignatureValue=$crc
  2. Подставим в него все уже имеющиеся у нас в наличии данные, исхода из описания Обязательных параметров
    Делается это путём замены переменных вида «$mrh_login» на соответствующие им значения. 
    Исходные данные:
    $mrh_login = demo (Идентификатор магазина, прописанный в разделе «Технические настройки» Вашего магазина);
    $out_summ = 11 (Стоимость товара у Вас на сайте, кол-во рублей);
    $inv_id = 0 (Уникальный номер заказа в Вашем магазине. Указываем именно ноль, чтобы ROBOKASSA сама вела нумерацию заказов); 
    $inv_desc = Покупка в демо магазине (Описание покупки);
  3. Получаем ссылку вида:
    https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=demo&OutSum=11&InvoiceID=0&Description=Покупка в демо магазине&SignatureValue=$crc

  4. В полученной ссылке отсутствует только последнее значение SignatureValue. И его нам необходимо вычислить.
    Строка данных, из которой мы будем его считать:
    $mrh_login:$out_summ:$inv_id:$mrh_pass1
    Подставляем в неё соответствующие значения:
    demo:11:0:Пароль#
    Пароль#1 – Это пароль, придуманный Вами при заполнении раздела Технические настройки. Здесь умышлено не показан реальный пароль.
    Для вычисления Контрольной суммы SignatureValue по алгоритму MD5 можно использовать один из on-line калькуляторов. Например, эти: 
    http://sgeneri.ru/ 
    http://nekitbelov.wen.ru/online/md5.html
    http://md5info.ru/demo
    и т.п. 
    Теперь берём строку с данными demo:11:0:Пароль#  и вычисляем по ней Контрольную сумму. (Не забудьте указать правильный пароль!!!)
    Результат для нашего примера: 56f978e24d1b51fa7b5ace90a4f4ba53
  5. Собираем готовую ссылку для размещения на Вашем сайте: 
    https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=demo&OutSum=11&InvoiceID=0&Description=Покупка в демо
    магазине&SignatureValue=56f978e24d1b51fa7b5ace90a4f4ba53 
    (По этой ссылке Вы можете совершить платёж на 11 рублей в нашем Демонстрационном магазине.)

В результате всех этих действий Вы получите ссылку для размещения на своём сайте, без какого-либо дополнительного программирования. И можете начинать принимать платежи.

Магазин с применением всех интерфейсов

Использование всех возможностей ROBOKASSA, таких как Дополнительные пользовательские параметры и XML-интерфейсы, позволит Вам настроить максимально глубокую интеграцию между нашей системой и Вашим интернет-магазином. Это позволит обеспечить большую гибкость в использовании ROBOKASSA, и позволит Вам обслуживать своих клиентов на качественно новом уровне. 
XML-интерфейсы позволяют предварительно получать курсы валют ROBOKASSA и список принимаемых валют,  рассчитывать как сумму к получению магазином, так и сумму к оплате для покупателя. Что значительно расширяет Ваши возможности по построению удобного пользовательского интерфейса Вашего сайта.
Также Вы можете в любой момент времени проверить состояние оплаты заказа. Это даст Вам большую стабильность и  повышенную безопасность. К примеру, Ваша система может перед автоматической выдачей товара проверять состояние оплаты заказа непосредственно у ROBOKASSA.

А передача Дополнительных пользовательских параметров, даёт Вам возможность настроить работу своего сайта с максимальным комфортом для Ваших клиентов и сотрудников. Так использование этих параметров позволит Вам распределить денежные потоки внутри своего ресурса относительно тех вариантов услуг или товаров, которые Вы продаёте. 
Ещё один вариант использования этих параметров  это дополнительная идентификация Ваших клиентов, что очень часто бывает необходимо для корректного зачисления платежа.

Ручная обработка заказов

Если Вы хотите, чтобы клиент мог оплатить счет только после проверки заказа менеджером и согласования с клиентом комплекта поставки, а также если Вы не имеете сайта, а работаете, например, по телефону, Вам очень сложно разобраться в технических деталях подключения и не требуется программист –  Вам необходимо использовать следующий вариант работы. В Личном кабинете Вам доступен раздел «Выставление счетов», который представляет собой простой и понятный интерфейс по созданию письма клиенту со ссылкой на оплату конкретного заказа, проверенного Вашим менеджером и согласованного с клиентом. Для реализации такого механизма работы с ROBOKASSA Вам необходимо:

  1. Зарегистрироваться на нашем сайте www.robokassa.ru.

  2. После создания магазина, в разделе Технические настройки нужно прописать два пароля (обязательное условие).

  3. В полях ResultURL нужно выбрать метод отсылки данных E-Mail и указать электронный почтовый адрес, на который Вы планируете получать уведомления об успешных платежах, для дальнейшей обработки их Вашими менеджерами.

  4. Больше никаких дополнительных настроек не требуется, при условии, что Вы планируете работать только в ручном режиме.

Некоторые особенности, которые необходимо учитывать при отправке пользователя на совершение оплаты.

Если у Вас на сайте товары представлены в единственном экземпляре, и при формировании заказа товар резервируется под конкретного покупателя на какой-то промежуток времени, то Вам необходимо учесть следующие моменты: 

  • cама операция оплаты стартует только в тот момент, когда пользователь нажимает на кнопку «Оплатить» или «Перейти к оплате» в интерфейсе ROBOKASSA.  (с этого момента начинается отсчёт времени на совершение оплаты), т. е. если пользователь перешёл с Вашего сайта в интерфейс ROBOKASSA, выбрал (выбирал/смотрел) вариант оплаты, но не нажал на кнопку «Оплатить»/«Перейти к оплате», то никакие записи в системе ROBOKASSA не ведутся.
  • Есть некоторые способы оплаты время ожидания оплаты по которым, составляет 1-2 часа, и есть такие, которые могут идти от суток до недели. 

Если говорить более подробно, то: 

  • банковские карты  и электронные платёжные системы (электронные деньги): WebMoney,  Яндекс.Деньги, Единый кошелек и т. д.  время, отведённое на оплату – 45 минут.
  • Терминалы моментальной оплаты:  QIWI, Элекснет и прочие – время, отведённое на оплату – двое суток (48 часов). Исключение QIWI – сутки (24 часа).
  • Интернет – банки: Альфа-клик, ВТБ24, Промсвязьбанк, Русский стандарт, Q-банк и т. д.  время, отведённое на оплату сутки (24 часа).
  • Банкоматы  время, отведённое на оплату  сутки (24 часа).
  • Другие способы оплаты: Мобильная коммерция (1 час), салоны Связной и Евросеть (2 дня).

Есть ещё одна категория ситуаций, на которую следует обратить внимание  оплату пользователь произвёл, но либо после истечения времени ожидания (обычно электронными валютами), либо система, через которую проводилась оплата, не прислала нам подтверждения этой оплаты, и у нас она отменилась по истечение срока ожидания, либо платёж был совершён с ошибкой, и требуется дополнительная идентификация и корректировка платежа в ручном режиме. 
После чего клиент сообщает, что он оплатил, но ничего не получил. И начинает искать свои деньги и товар. 
Это может произойти в тот же день, спустя несколько часов, или спустя несколько месяцев. 
Если оплата действительно подтверждена, ROBOKASSA предпримет все необходимые действия,  завершит платёж и отправит Вам оповещение об этом. Соответственно произойти это может спустя продолжительное количество времени. Обычно, не более суток, но иногда задержка может быть существенной.

Работа в тестовом режиме. Отладка, проверка, настройка.

Тестовая среда представляет из себя интерфейс «платёжных страниц» ROBOKASSA, но без возможности провести оплату. Она позволяет отладить процесс оплаты и воспользоваться тестовым XML-интерфейсом получения состояния оплаты.

Тестовая среда облегчает подключение магазинов к интерфейсам сервиса ROBOKASSA. Она позволяет получать детальное описание ошибок, возникающих при проверке передаваемых параметров, имитировать получение различных состояний операции без необходимости проведения реального платежа.

Для работы в тестовом режиме  обязателен параметр  IsTest

Внимание! Для работы в тестовом режиме используется специальный тестовый набор паролей, не совпадающих с основными рабочими паролями Вашего магазина. Они прописываются в специальном блоке в Технических настройках Вашего магазина. Это делается для обеспечения безопасности Вашего интернет-магазина, чтобы злоумышленник не имел возможности «обмануть» Ваш интернет-магазин.

Интерфейс оплаты

Для работы в тестовом режиме магазину необходим дополнительный набор паролей, которые не должны совпадать с Пароль #1 и Пароль #2. Они прописываются в специальном разделе Технические настройки магазина. Там же выбирается Алгоритм расчёта хэша для тестовых платежей. Алгоритм расчета контрольной суммы для тестового режима должен совпадать с рабочим.

 

Инициализировать тестовую оплату можно через свой Личный кабинет клиента, через свой магазин с помощью модифицированного скрипта, или вручную собрать ссылку на платежные страницы ROBOKASSA.

Для того, что бы со стороны магазина инициировать тестовую операцию оплаты, в скрипт к остальным параметрам необходимо добавить параметр IsTest со значением 1.

Если данный параметр вообще отсутствует, или в качестве значения параметра IsTest передан 0, или значение параметра пусто, то такой запрос не считается тестовым  и происходит инициализация обычной операции оплаты.

Инициализация тестовой оплаты через магазин

Рассмотрим  подробно тестирование оплаты через свой магазин с помощью модифицированного скрипта:

  1. Воспользуемся вот этим  скриптом;
  2. Здесь уже  заменены [значение] соответствующими данными, (подробнее можно почитать тут), следует проделать аналогичные шаги для Вашего тестируемого магазина:

    • MerchantLogin = Test1999

      (идентификатор магазина из раздела Технические настройки);

    • Pass1 = Пароль#1

      (Пароль#1 из тестовых настроек);

    • InvId = 678678

      (номер счета);

    • OutSum = 100

      (cтоимость товара, рубли);

    • Description = Товары для животных

      (описание покупки);

    • IsTest = 1

      (тестовый параметр, указатель на тестовую оплату);

  3. Настроим оповещение об оплате на ResultURL для работы с тестовым интерфейсом. Для этого потребуется в расчёт SignatureValue включить Пароль#2 из тестовых настроек.
  4. После сохранения этих настроек Вы можете инициировать из Вашего магазина тестовую операцию оплаты.
  5. В результате  Вы окажетесь здесь и можете продолжить тестировать процесс оплаты в Вашем магазине.

Инициализация тестовой оплаты через Личный кабинет клиента

Рассмотрим подробно тестирование оплаты через Личный кабинет клиента.

Обращаем Ваше внимание, что тестирование через Личный кабинет клиента не является заменой тестирования магазина через сайт магазина.

 

Введите номер заказа, сумму заказа и (опционально) добавьте желаемые параметры. После нажатия на кнопку «Сформировать ссылку» будут проверены параметры и подсчитана SignatureValue. После нажатия кнопку «Проверить»  Вы будете направлены на оплату в ROBOKASSA, где в разделе Выбор способа оплаты будет предложено выбрать тот или иной способ оплаты тестового заказа.

Процесс тестовой оплаты

После того как Вы нажали кнопку «Оплатить» на странице Вашего Личного кабинета, произойдет переход на страницу тестовой оплаты сайта ROBOKASSA.

После выбора способа оплаты можно переходить к оплате.

Или вернуться и выбрать другой способ оплаты.

После того, как Вы нажмёте кнопку «Перейти к оплате», Вы попадёте на специальную страницу тестовой оплаты где можно выбрать одно из двух возможных завершений: успешное или неуспешное.

Пример успешно прошедшей тестовой оплаты. 

Пример неуспешной тестовой оплаты.

 

Обратите внимание, что тестовые оплаты не отображаются в поиске операций в Личном кабинете клиента.

Пример кода на PHP с параметром IsTest

<? $mrh_login = "Test1999"; $mrh_pass1 = "password_1"; $inv_id = 678678; $inv_desc = "Товары для животных"; $out_summ = "100.00"; $IsTest = 1; $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1"); print "<html><script language=JavaScript ". "src='https://auth.robokassa.ru/Merchant/PaymentForm/FormMS.js?". "MerchantLogin=$mrh_login&OutSum=$out_summ&InvoiceID=$inv_id". "&Description=$inv_desc&SignatureValue=$crc&IsTest=$IsTest'></script></html>"; ?>

XML интерфейс получения состояния оплаты счета

Этот XML интерфейс предназначен для отладки системы взаимодействия Вашего магазина/сайта с ROBOKASSA в тестовом режиме.

XML Интерфейс получения состояния оплаты счета возвращает детальную информацию о текущем состоянии и реквизитах оплаты. 
Необходимо помнить, что операция инициируется не в момент перехода пользователя в интерфейс ROBOKASSA, а позже  после подтверждения его платежных реквизитов, т.е. Вы вполне можете не находить операцию, которая по Вашему мнению уже должна начаться. Для того, чтобы протестировать XML интерфейс получения состояния счета, следует запустить тестовую операцию оплаты

Название метода

OpState

Параметры запроса MerchantLogin

Идентификатор магазина, строка. Подробнее см. Создание Магазина.

InvoiceID

Номер счета магазина, целое число.

IsTest

Параметр указывающий, что запрос к системе ROBOKASSA будет тестовым, и оплата не производилась.

Signature

Контрольная сумма  хэш, число в 16-ричной форме и любом регистре (0-9, A-F), рассчитанное методом указанным в Технических настройках магазина. Базой для расчёта служат все обязательные параметры, разделенные символом «:», с добавлением  Пароль#2 из тестовых настроек (указывается при заполнении раздела Технических настроек) т. е. MerchantLogin:InvoiceID:Пароль#2.

https://auth.robokassa.ru/Merchant/WebService/Service.asmx/OpState?MerchantLogin=Test1999&InvoiceID=100&IsTest=1&Signature=061d7da048c2edd112c7632399e727c0

Формат ответа для запросов HTTP GET/POST

<operationstateresponse xmlns="http://merchant.roboxchange.com/WebService/"> <result> <code>0</code> </result> <state> <code>100</code> <requestdate>2015-12-01T19:05:38.4065961+03:00</requestdate> <statedate>2015-12-01T19:05:38.4065961+03:00</statedate> </state> <info> <inccurrlabel>YandexMerchantOceanR</inccurrlabel> <incsum>100.00</incsum> <incaccount>Тестовый аккаунт</incaccount> <paymentmethod> <code>EMoney</code> <description>Электронными деньгами</description> </paymentmethod> <outcurrlabel>BNR</outcurrlabel> <outsum>100.00</outsum> </info> </operationstateresponse>

Описание возвращаемых данных State

Текущее состояние оплаты.

Code

Код текущего состояния операции оплаты тестового счета:

  • 5  операция только инициализирована, оплата ещё не начиналась.
  • 10  операция отменена.
  • 100 - операция выполнена, завершена успешно.

    Тестовый платёж проведён успешно, уведомление об успешном тестовом платеже отправлено продавцу.

RequestDate

Дата/время ответа на запрос.

StateDate

Дата/время последнего изменения состояния операции.

Info

Информация об операции оплаты счета.

IncCurrLabel

Валюта, которой платил клиент.

IncSum

Сумма, оплаченная клиентом, в единицах валюты IncCurrLabel.

IncAccount

Номер счёта (кошелёк, номер банковской карты) клиента в платежной системе, через которую производилась оплата.

PaymentMethod

Способ оплаты, выбранный клиентом.

Code (способа оплаты)

Код способа оплаты.

Description

Текстовое описание.

OutCurrLabel

Валюта, в которой получает средства магазин.

OutSum

Сумма, зачисленная на счет магазина, в единицах валюты OutCurrLabel.

Коды ошибок, специфичные для этого интерфейса
  • – неверная цифровая подпись запроса;
  • – информация об операции с таким InvoiceID не найдена.

Формат данных типа дата/время

Дата/время передаются в формате, рекомендованном стандартом ISO 8601 (YYYY-MM-DDThh:mm:ss.fffffffZZZZZ), где:

  • YYYY - год, 4 цифры;
  • MM - месяц, 2 цифры;
  • DD - день месяца, 2 цифры (от 01 до 31);
  • T – латинский символ «T» в верхнем регистре;
  • hh - часы, 2 цифры (24-часовой формат, от 00 до 23);
  • mm - минуты, 2 цифры (от 00 до 59);
  • ss - секунды, 2 цифры (от 00 до 59);
  • fffffff – от 1 до 7 цифр дробной части секунд
  • ZZZZZ - описатель временной зоны, может принимать значения:
    • +hh:mm или -hh:mm – смещение относительно UTC (показывает, что указано локальное время, которое на данное число часов и минут опережает или отстает от UTC);
    • символ «Z» (должен быть в верхнем регистре), означает, что момент времени представлен в UTC зоне (эквивалентно +00:00 и -00:00).

Например: 2010-02-11T16:07:11.6973153+03:00

Примеры

Все  приведённые примеры предполагают, что в Технических настройках магазина в качестве Алгоритма расчёта хэша используется MD5.

PERL

Формирование URL переадресации пользователя на оплату

# connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # your registration data my $mrh_login = "test"; ### your login here my $mrh_pass1 = "securepass1"; ### merchant pass1 here # order properties my $inv_id = 5; ### shop's invoice number ### (unique for shop's lifetime) my $inv_desc = "desc"; ### invoice desc my $out_summ = "5.12"; ### invoice summ # build CRC value my $crc = md5_hex("$mrh_login:$out_summ:$inv_id:$mrh_pass1"); # build URL my $url = "https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=$mrh_login&". "OutSum=$out_summ&InvId=$inv_id&Desc=$inv_desc&SignatureValue=$crc"; # print URL if you need print "Content-type: text/html\n\n"; print "<a href='/ru/$url'>Payment link</a>";

Получение уведомления об исполнении операции (ResultURL)

# as a part of ResultURL script # connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # define function for retrieval http-paratemters sub http_Prm; # your registration data my $mrh_pass2 = "securepass2"; ### merchant pass2 here # load parameters my %q = http_Prm(); # loaded parameters: $q{OutSum}, $q{InvId}, $q{SignatureValue} $q{SignatureValue} =~ s/([a-z])/uc "$1"/eg; # force uppercase # build own CRC my $my_crc = md5_hex("$q{OutSum}:$q{InvId}:$mrh_pass2"); $my_crc =~ s/([a-z])/uc "$1"/eg; # force uppercase # define the correctness state my $is_correct = ($my_crc eq $q{SignatureValue} ? 1 : 0); if (!$is_correct) { print "Content-type: text/html\n\nbad sign\n"; die "incorrect sign passed"; } # OK state # print OK signature print "Content-type: text/html\n\nOK$q{InvId}\n"; # perform some action (change order state to paid) exit(); # just function to load http parameters, you can use own sub http_Prm { my %query; { # POST params my ($q_sz, $i, @q, @cmd); my $l = $ENV{'CONTENT_LENGTH'}; my $qtext = ""; while ($l>0) { $l-=sysread(STDIN, $qtext, $l, length($qtext)); } @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } { # GET params my ($q_sz, $i, $qtext, @q, @cmd); $qtext = $ENV{'QUERY_STRING'}; @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } return %query; }

Проверка параметров в скрипте завершения операции (SuccessURL)

# as a part of SuccessURL script # connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # define function for retrieval http-paratemters sub http_Prm; # your registration data my $mrh_pass1 = "securepass1"; ### merchant pass1 here # load parameters my %q = http_Prm(); # loaded parameters: $q{OutSum}, $q{InvId}, $q{SignatureValue} $q{SignatureValue} =~ s/([a-z])/uc "$1"/eg; # force uppercase # build own CRC my $my_crc = md5_hex("$q{OutSum}:$q{InvId}:$mrh_pass1"); $my_crc =~ s/([a-z])/uc "$1"/eg; # force uppercase # define the correctness state my $is_correct = ($my_crc eq $q{SignatureValue} ? 1 : 0); if (!$is_correct) { print "Content-type: text/html\n\nbad sign\n"; die "incorrect sign passed"; } # you can check here, that resultURL was called # (for better security) # OK, payment proceeds print "Content-type: text/html\n\n"; echo "Thank you for using our service\n"; exit(); # just function to load http parameters, you can use own sub http_Prm { my %query; { # POST params my ($q_sz, $i, @q, @cmd); my $l = $ENV{'CONTENT_LENGTH'}; my $qtext = ""; while ($l>0) { $l-=sysread(STDIN, $qtext, $l, length($qtext)); } @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } { # GET params my ($q_sz, $i, $qtext, @q, @cmd); $qtext = $ENV{'QUERY_STRING'}; @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } return %query; }

PHP

Формирование URL переадресации пользователя на оплату

// your registration data $mrh_login = "test"; // your login here $mrh_pass1 = "securepass1"; // merchant pass1 here // order properties $inv_id = 5; // shop's invoice number // (unique for shop's lifetime) $inv_desc = "desc"; // invoice desc $out_summ = "5.12"; // invoice summ // build CRC value $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1"); // build URL $url = "https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=$mrh_login&". "OutSum=$out_summ&InvId=$inv_id&Desc=$inv_desc&SignatureValue=$crc"; // print URL if you need echo "<a href='/ru/$url'>Payment link</a>";

Получение уведомления об исполнении операции (ResultURL)

// as a part of ResultURL script // your registration data $mrh_pass2 = "securepass2"; // merchant pass2 here // HTTP parameters: $out_summ = $_REQUEST["OutSum"]; $inv_id = $_REQUEST["InvId"]; $crc = strtoupper($_REQUEST["SignatureValue"]); // build own CRC $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2")); if ($my_crc != $crc) { echo "bad sign\n"; exit(); } // print OK signature echo "OK$inv_id\n"; // perform some action (change order state to paid)

Проверка параметров в скрипте завершения операции (SuccessURL)

// as a part of SuccessURL script // your registration data $mrh_pass1 = "securepass1"; // merchant pass1 here // HTTP parameters: $out_summ = $_REQUEST["OutSum"]; $inv_id = $_REQUEST["InvId"]; $crc = $_REQUEST["SignatureValue"]; $crc = strtoupper($crc); // force uppercase // build own CRC $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass1")); if ($my_crc != $crc) { echo "bad sign\n"; exit(); } // you can check here, that resultURL was called // (for better security) // OK, payment proceeds echo "Thank you for using our service\n";

ASP.NET

Формирование URL переадресации пользователя на оплату

using System; using System.Text; using System.Globalization; using System.Security.Cryptography; public partial class Init : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // your registration data string sMrchLogin = "test"; string sMrchPass1 = "securepass1"; // order properties decimal nOutSum = 5.12M; int nInvId = 5; string sDesc = "desc"; string sOutSum = nOutSum.ToString("0.00", CultureInfo.InvariantCulture); string sCrcBase = string.Format("{0}:{1}:{2}:{3}", sMrchLogin, sOutSum, nInvId, sMrchPass1); // build CRC value MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase)); StringBuilder sbSignature = new StringBuilder(); foreach (byte b in bSignature) sbSignature.AppendFormat("{0:x2}", b); string sCrc = sbSignature.ToString(); // LinkButtonPay is System.Web.UI.WebControls.LinkButton; LinkButtonPay.Text = "Payment link"; // build URL LinkButtonPay.PostBackUrl = "https://auth.robokassa.ru/Merchant/Index.aspx?" + "MrchLogin=" + sMrchLogin + "&OutSum=" + sOutSum + "&InvId=" + nInvId + "&Desc=" + sDesc + "&SignatureValue=" + sCrc; } }

Получение уведомления об исполнении операции (ResultURL)

using System; using System.Web; using System.Text; using System.Globalization; using System.Security.Cryptography; public partial class Result : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // your registration data string sMrchPass2 = "securepass2"; // HTTP parameters string sOutSum = GetPrm("OutSum"); string sInvId = GetPrm("InvId"); string sCrc = GetPrm("SignatureValue"); string sCrcBase = string.Format("{0}:{1}:{2}", sOutSum, sInvId, sMrchPass2); // build own CRC MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase)); StringBuilder sbSignature = new StringBuilder(); foreach (byte b in bSignature) sbSignature.AppendFormat("{0:x2}", b); string sMyCrc = sbSignature.ToString(); if (sMyCrc.ToUpper() != sCrc.ToUpper()) { Response.Write("bad sign"); return; } Response.Write(string.Format("OK{0}", sInvId)); // perform some action (change order state to paid) } private string GetPrm(string sName) { string sValue; sValue = HttpContext.Current.Request.Form[sName] as string; if (string.IsNullOrEmpty(sValue)) sValue = HttpContext.Current.Request.QueryString[sName] as string; if (string.IsNullOrEmpty(sValue)) sValue = String.Empty; return sValue; } }

Проверка параметров в скрипте завершения операции (SuccessURL)

using System; using System.Web; using System.Text; using System.Globalization; using System.Security.Cryptography; public partial class Success : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // your registration data string sMrchPass1 = "securepass1"; // HTTP parameters string sOutSum = GetPrm("OutSum"); string sInvId = GetPrm("InvId"); string sCrc = GetPrm("SignatureValue"); string sCrcBase = string.Format("{0}:{1}:{2}", sOutSum, sInvId, sMrchPass1); // build own CRC MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bSignature = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase)); StringBuilder sbSignature = new StringBuilder(); foreach (byte b in bSignature) sbSignature.AppendFormat("{0:x2}", b); string sMyCrc = sbSignature.ToString(); if (sMyCrc.ToUpper() != sCrc.ToUpper()) { Response.Write("bad sign"); return; } // you can check here, that ResultURL was called // (for better security) // OK, payment proceeds Response.Write("Thank you for using our service"); } private string GetPrm(string sName) { string sValue; sValue = HttpContext.Current.Request.Form[sName] as string; if (string.IsNullOrEmpty(sValue)) sValue = HttpContext.Current.Request.QueryString[sName] as string; if (string.IsNullOrEmpty(sValue)) sValue = String.Empty; return sValue; } }