Robokassa код ошибки 41

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

Суть вопроса

Думаю, многие из вас знакомы с таким платёжным сервисом, как «Робокасса». Сервис этот, как водится, работает с двумя типами клиентов: физическими лицами, да юридическими. Рядовой пользователь, покупая нечто в нашем интернет-магазине, ожидает, что ему предъявят счет на сумму, указанную на ценнике. Очевиден тот факт, что требовать от пользователя покрыть еще и комиссию — это прямая дорога вникуда. Вот тут-то и встает вопрос, как переложить обязанность платить робокассе её долю на сам интернет-магазин.

Казалось бы, что может быть проще? Наверняка, такая настройка есть в личном кабинете на сайте платежки. Не тут-то было. Вернее, она есть. Но только в том случае, если вы — юридическое лицо.

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

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

Решение вопроса

Решение, предлагаемое работниками Робокассы, настораживает сразу же. Выглядит оно так:

Для этих целей создан специальный XML-интерфейс:

Метод расчёта суммы к получению магазином — CalcOutSumm

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

Параметры метода: MerchantLogin — идентификатор магазина (строка), IncCurrLabel — метка валюты (строка), для которой нужно произвести расчёт суммы. Если оставить его пустым, то расчёт будет произведен для всех доступных валют, IncSum — сумма, которую должен заплатить пользователь.

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

Где зарыта собака?

Проблемы начинаются сразу же, как только мы хотим воспользоваться этим «интерфейсом». Допустим, мы захотели подсчитать сумму для всех способов оплаты. Как гласит руководство:

Первая мысль: «Возможно я дурак и что-то не так делаю. Может, опускать параметр нужно не так?». Но нет, исходя из той же документации (пример для другой функции, лишь демонстрирую отсутствие значения):

Пробуем опустить параметр вовсе:

Беда. Но мы не сдаёмся. Что можно сделать в такой ситуации? Точно! Допустим, мы будем брать идентификатор способа оплаты из коллекции, считать для него сумму оплаты отдельно и запихивать в форму на нашем сайте, после чего менять outSum и пересчитывать подпись при выборе пользователем другого способа.

Хорошо, что я не кинулся реализовывать это.

Немного грубого проектирования показало, что на деле всё будет не так уж и радужно. О чём это я? Давайте посмотрим внимательнее на интерфейс инициализации оплаты.

Ничего пока не насторожило? Давайте вдумаемся. Робокасса предлагает нам считать сумму самим, опираясь на выбранный пользователем интерфейс оплаты. Этот самый интерфейс IncCurrLabel в подпись не входит. Это логично, т. к. пользователь имеет право выбрать другой способ на сайте кассы. Тем не менее, комиссия для каждого способа высчитывается своя. Более того, высчитывать её предлагается нам, на стороне нашего сервера. Мы получаем outSum от того самого интерфейса, запихиваем в нашу форму, считаем подпись и отправляем на оплату.

Суть всей статьи

Ещё раз.
Робокасса предлагает нам вычитать из нашего дохода сумму комиссии, основываясь на том, какой способ оплаты хочет пользователь. При этом, этот самый способ оплаты она дает менять тогда, когда мы контроля над процессом платежа уже не имеем. Что происходит дальше?

А дальше все просто. Пользователь выбирает на нашем сайте способ с самой большой комиссией. На моей памяти — банковская карта. Мы, как добрые дяди, вычитаем порядка 300 рублей из цены нашего товара, дабы снять ношу комиссии с покупателя. Он же, попав на сайт Робокассы, просто выбирает оплату через какой-нибудь Яндекс или Вебмани с мизерной комиссией. Комиссия по новому способу высчитается на сайте робокассы опираясь на отправленный нами «скидочный» вариант цены. Всё.


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

Что всё-таки можно сделать?

Выход номер раз
Зверский

Мы можем хранить сумму, нашего товара и способ платежа, указанный пользователем в тех самых shp* параметрах. Эти параметры защищены от изменения, а значит, мы получим их в целости и сохранности. Получив их назад, мы пересчитываем сумму снова и смотрим, сколько мы получили и сколько должны были. Если получили меньше — значит, нас обманули и мы можем как-то воздействовать на пользователя.

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

Выход номер два
Единственный

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

Для клиентов от Мегагрупп ROBOKASSA предлагает очень выгодное предложение на тариф. Чтобы воспользоваться данным предложением необходимо зарегистрироваться по ссылке или при регистрации использовать промокод: 01megagroup.

Шаг 1

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

259992221_7054_5cd2767004ec3.png

Откроется страница, на которой необходимо заполнить регистрационные данные магазина:

После заполнения данных нажмите на кнопку «Создать».

Шаг 2

Если всё заполнено корректно, отобразится вкладка «Технические настройки», на которую необходимо перейти.

259992221_7036_5cd27567e3957.png

Шаг 3

Скопируйте значение из строки «Идентификатор магазина» на стороне платежного шлюза.

259992221_7037_5cd275680df87.png

И вставьте в поле «Логин» на стороне системы управления.

259992221_7038_5cd275682881a. png

Шаг 4

Значение “Алгоритм расчета хеша” оставьте без изменений.

Затем придумайте два пароля (поля «Пароль #1» и «Пароль #2«). Длина пароля должна быть не менее 8 символов и содержать хотя бы один символ и хотя бы одну цифру. Пароль #1 и Пароль #2 по соображениям безопасности не должны совпадать. Или же нажмите на кнопку “Сгенерировать” расположенную справа от каждого поля, тогда пароли будут созданы автоматически.

259992221_7039_5cd275683f928.png

Эти пароли необходимо вставить в системе управления сайтом в соответствующие поля.

259992221_7040_5cd2756853c82.png

Шаг 5

Скопируйте строчку «Result URL«, «Success URL» и «Fail URL» в системе управления сайтом.

259992221_7041_5cd275686f76e. png

И вставить скопированную информацию в одноименные поля в личном кабинете Robokassa.

259992221_7042_5cd2756897bb6.png

Шаг 6

В личном кабинете Robokassa установите в строках » Метод отсылки данных по Result Url«, » Метод отсылки данных по Success Url«, » Метод отсылки данных по Fail Url» метод «POST«.

После выполненных настроек нажмите на кнопку «Сохранить».

259992221_7043_5cd27568b4b26.png

Шаг 7

259992221_7044_5cd27568cbcee. png

Шаг 8

Выберите значение для настройки «Комиссию оплачивает продавец» (выберите «Да«, если комиссия будет оплачиваться магазином; выберите «Нет«, если комиссия останется на покупателе).

259992221_7045_5cd27568df35e. png

Шаг 9

259992221_7046_5cd27569077a5.png

Шаг 10

259992221_7047_5cd275691a9b0.png

Шаг 11

При необходимости Вы можете выбрать из предложенного списка иконок платежных систем соответствующую.

Для этого просто отметьте в блоке “Значки платежной системы” ту иконку, которая соответствует выбранной платежной системе.

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

Шаг 12

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

phpnpzgGR

Шаг 13

После произведенных настроек измените статус платежной системы на » Включена «.

259992221_7048_5cd275692f2f6.png

И не забудьте сохранить изменения.

phpd6nDRp

Шаг 14

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

259992221_7049_5cd2756942361.png

Для настройки тестового режима Вам нужно указать в полях Пароль #1 и Пароль #2 в этом разделе:

259992221_7050_5cd2756956207.png

И на стороне сайта в соответствующих полях значения(т. е. Пароль #1 в кабинете Робокасса = Пароль продавца 1 в системе управления, соответственно и Пароль #2 в кабинете Робокасса = Пароль продавца 2 в системе управления ):

259992221_7051_5cd275696ba73.png

А также указать на стороне сайта для “ Тестовый режим ” значение “ Да ”:

259992221_7052_5cd275697d4ec. png

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

Важно!

259992221_7053_5cd2756993c5e. png

Над разделом отобразится кнопка “Запрос на активацию”, нажмите неё и дождитесь от специалистов Робокассы завершения активации, это может занять некоторое время, от них Вам поступит сообщение.

Источники:

https://habr. com/ru/post/198284/

https://help. megagroup. ru/robokassa.-nastroyka-sootvetstviya-

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: