Robokassa код ошибки 31

Типичные ошибки и их расшифровка — статья от Robokassa

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

Код ошибки 23

«Тестовый платёж не может быть создан. У магазина отсутствуют настройки тестовых параметров».

Это значит, что перед проведением тестового платежа вы не заполнили все необходимые данные в блоке «Параметры проведения тестовых платежей» закладки «Технические настройки».

Код ошибки 25

«Магазин не активирован».

Эта ошибка встречается нередко, и здесь могут быть 2 причины.

  • Первая: это действительно так – и необходимо активировать магазин, а лишь потом выставлять счет.
  • Вторая: вы неверно указали Идентификатор магазина в технических настройках на сайте. Посмотреть правильный можно в разделе «Мои магазины» Личного кабинета. Перейдите в закладку «Технические настройки» и найдите поле «Идентификатор магазина». Скопируйте идентификатор и введите его в настройках сайта.

Код ошибки 26

«Магазин не найден».

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

Код ошибки 29

«Неверный параметрSignature»

Здесь причин может быть несколько, но все они связаны со скриптом, отвечающим за инициализацию оплаты (а конкретнее, его часть, которая формирует параметрSignatureпо формуле, состоящей из переменных). Эта ошибка встречается довольно часто, и вот 3 возможных причины:

  • Первая: некорректный Идентификатор магазина (MerchantLogin);
  • Вторая: неверный Пароль 1 (MerchantPass1);
  • Третья: вы используете дополнительные параметры (shp_), которые добавлены в программный код кассы, но не занесены в формулу подсчета — или наоборот, в формуле подсчета они указаны, а в коде нет. Еслитаковыеиспользуются, передавайте их в алфавитном порядке – как в параметрах на оплату, так и в формуле подсчета Signature.

Важный момент! Если вы работаете в тестовом режиме, передавая параметр IsTest=1 или включая его галочкой в настройках модуля/бота, используйте только тестовую пару технических паролей (закладка «Технические настройки» карточки вашего магазина).

Код ошибки 30

«Неверный параметр счёта».

Проверьте как обязательные, так и необязательные параметры счета, которые вы передаете: что-то введено некорректно.

Код ошибки 31

«Неверная сумма платежа».

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

Код ошибки 33

«Время, отведённое на оплату счёта, истекло».

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

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

Код ошибки 34

«Услуга рекуррентных платежей не разрешена магазину».

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

Код ошибки 35

«Неверные параметры для инициализации рекуррентного платежа».

Что-то не так с настройками рекуррентных платежей – проверьте их у себя на сайте, а при необходимости напишите нам в разделе «Поддержка» Личного кабинета.

Код ошибки 40

«Повторная оплата счета с тем же номером невозможна».

При формировании запроса на оплату вы передаете нам значение параметраInvId(номер заказа/счета), которое уже использовалось раньше. Этот параметр должен быть каждый раз уникальным. Другими словами, один из клиентов уже проводил оплату по такому номеру заказа ранее, а сейчас вы переадресуете к нам другого плательщика, выставляя ему тот же номер.

Код ошибки 41

«Ошибка на старте операции».

Это означает, что произошла ошибка, из-за которой платеж был отменен еще до старта. Попробуйте провести оплату еще раз. Если ошибка повторилась, напишите нам в разделе «Поддержка» вашего Личного кабинета.

Код ошибки 42

«Тестовый номер счета не может быть использован для проведения оплаты».

Нельзя использовать один и тот же номер заказа (InvId) в тестовом и в «боевом» режиме. Со временем тестовые номера удаляются, но в течение некоторого времени подобные попытки оплаты просто отменяются.

Код ошибки 60

«Ошибка конвертации валюты».

Это значит, что вы передаете недопустимое значение валюты в параметреOutSumCurrency: оно отличается отUSD (доллары), EUR (евро) и KZT (тенге).

Коды ошибок 20, 21, 22, 24, 27, 28, 32, 36, 37, 43, 500

«Внутренние ошибки сервиса».

Если вы видите один из этих кодов ошибки, напишите нам в разделе «Поддержка» вашего Личного кабинета. Мы обязательно поможем!


madvolkov

madvolkov

0


    • Жалоба
    • Share

Подскажите пожалуйста ошибка 31 при попытке оформить заказ и оплате робокасса. Сумма не верно передаётся или не передаётся вообще.

В чём может быть проблема ?

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

где передаётся сумма заказа в этом модуле ?

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

31 минуту назад, madvolkov сказал:

где передаётся сумма заказа в этом модуле ?

В /includes/modules/payment/robokassa.php

А это точно ошибка про сумму заказа?!

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

и строку:

vam_draw_hidden_field('OutSum', $order_sum) .

поменять например на:

vam_draw_hidden_field('OutSum', 100) .

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

4 минуты назад, support сказал:

В /includes/modules/payment/robokassa.php

А это точно ошибка про сумму заказа?!

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

и строку:

vam_draw_hidden_field('OutSum', $order_sum) .

поменять например на:

vam_draw_hidden_field('OutSum', 100) .

В настройках модуля roboxchange нет таких опций и похожих тоже. 

Вот что тех поддержка ответила

31 — Ошибка возникает по причине того, что при переадресации клиента на платежную страницу сервиса ROBOKASSA для выставления счета, вы не передаете нам сумму, на которую необходимо исполнить платеж. Либо передаете сумму равную 0. За данную передачу отвечает параметр OutSum

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share
vam_draw_hidden_field('OutSum', 100) .

пробывал. Тоже 31 ошибка

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

4 минуты назад, madvolkov сказал:

vam_draw_hidden_field('OutSum', 100) .

пробывал. Тоже 31 ошибка

Опция передача чека отключили?!

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

1 минуту назад, support сказал:

Опция передача чека отключили?!

нет такой опции у модуля2073118bdc65.jpg

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

Только что, madvolkov сказал:

нет такой опции у модуля

Последняя опция.

Переустановите модуль, т.е. запишите в се ваши данные, удалите модуль и установите снова, думаю, что появится описание опции.

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

3 минуты назад, support сказал:

Последняя опция.

Переустановите модуль, т.е. запишите в се ваши данные, удалите модуль и установите снова, думаю, что появится описание опции.

а где можно скачать файлы данного модуля ?

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

8 минут назад, madvolkov сказал:

а где можно скачать файлы данного модуля ?

Ну у Вас доступа нет к обновлениям, насколько я вижу.

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

И снова установите и укажите свои данные, что б просто появилось описание опции последней, что б был виден текст.

У Вас и так последняя версия модуля, я так думаю.

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

сделал ! но ничего не поменялось. Поставил последнюю опции false тоже ничего не изменилось ! 

когда после нажатия оформить перенаправляет на старницу:

https://auth.robokassa.ru/Merchant/Index.aspx

то там в коде такое вот:

<script>
    var RoboxContext = {"ShopName":null,"ShopUrl":null,"ShopDescription":null,"SumString":null,"Sum":null,"PureSum":null,"OpKey":null,"OperationState":null,"Receipt":null,"StartDate":"2022-03-03T12:56:26.2272869+03:00","Description":null,"Email":null,"CurrencyGroups":null,"AllCurrencies":null,"Error":{"header":null,"message":null,"code":31},"Customization":null,"StatementUrl":null,"ReceiptUrl":null,"SecureDoneUrl":null,"UserName":null,"isHighRisk":false,"Country":null,"JurType":null,"MerchantType":0,"MerchantId":0,"Owner":null,"IsTestInvoice":false,"SavedCards":null,"DefaultCurrencyLabel":null,"DefaultLocalization":null,"InvoiceLanguage":"ru","InvoiceID":"00000000-0000-0000-0000-000000000000","FailReturnInfo":null,"MrhInvoiceId":0,"OriginalCurrency":null,"OriginalOutSum":0.0,"TelegramNewCard":false,"TelegramConfirm":false,"TelegramPayId":null};
</script>

везде Null и «Sum»:null тоже. 

и этот вот параметр

"OriginalOutSum":0.0,

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

4 минуты назад, madvolkov сказал:

сделал ! но ничего не поменялось. Поставил последнюю опции false тоже ничего не изменилось ! 

когда после нажатия оформить перенаправляет на старницу:

https://auth.robokassa.ru/Merchant/Index.aspx

то там в коде такое вот:

<script>
    var RoboxContext = {"ShopName":null,"ShopUrl":null,"ShopDescription":null,"SumString":null,"Sum":null,"PureSum":null,"OpKey":null,"OperationState":null,"Receipt":null,"StartDate":"2022-03-03T12:56:26.2272869+03:00","Description":null,"Email":null,"CurrencyGroups":null,"AllCurrencies":null,"Error":{"header":null,"message":null,"code":31},"Customization":null,"StatementUrl":null,"ReceiptUrl":null,"SecureDoneUrl":null,"UserName":null,"isHighRisk":false,"Country":null,"JurType":null,"MerchantType":0,"MerchantId":0,"Owner":null,"IsTestInvoice":false,"SavedCards":null,"DefaultCurrencyLabel":null,"DefaultLocalization":null,"InvoiceLanguage":"ru","InvoiceID":"00000000-0000-0000-0000-000000000000","FailReturnInfo":null,"MrhInvoiceId":0,"OriginalCurrency":null,"OriginalOutSum":0.0,"TelegramNewCard":false,"TelegramConfirm":false,"TelegramPayId":null};
</script>

везде Null и «Sum»:null тоже. 

Нужно смотреть, что в форме до ухода на сайт робокассы.

Создайте тикет в тех. поддержку — https://forum.vamshop.ru/support/

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

25 минут назад, support сказал:

Страница, к которой вы пытаетесь получить доступ, недоступна для вашего аккаунта.

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

6 минут назад, madvolkov сказал:

Страница, к которой вы пытаетесь получить доступ, недоступна для вашего аккаунта.

Понятно, у Вас нет доступа к тех. поддержке.

Тогда выясняйте что передаётся в форме перед уходом на робокассу.

Ссылка на сообщение
Поделиться на другие сайты


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

можно как-то оплатить только тех поддержку ?

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share
Ссылка на сообщение
Поделиться на другие сайты
  • 3 weeks later…


madvolkov

madvolkov

0


  • Автор
    • Жалоба
    • Share

formid=d5c8b734a1ce351fca0e5bd3949d7ca3&action=logged_on&shipping_count=0&sc_payment_address_show=1&sc_payment_modules_show=1&create_account=&sc_shipping_modules_show=1&sc_shipping_address_show=1&checkout_possible=&hours1=27.03.2022&hours2=8&minute2=00&hours3=9&minute3=00&comments=&payment=roboxchange&s_name=&s_inn=&s_telephone=8+499+653+69+68

вот что форма отправляет после подтверждения, потом запрос перенаправляет почему то в файл shopping_cart.php и там уже все запросе полный код страницы почему то)

А не после подтверждения редиректит на страницу https://auth.robokassa.ru/Merchant/Index.aspx, где код страницы содержит вот такую строчку

<script>
    var RoboxContext = {«ShopName»:null,»ShopUrl»:null,»ShopDescription»:null,»SumString»:null,»Sum»:null,»PureSum»:null,»OpKey»:null,»OperationState»:null,»Receipt»:null,»StartDate»:»2022-03-25T14:12:26.9131097+03:00″,»Description»:null,»Email»:null,»CurrencyGroups»:null,»AllCurrencies»:null,»Error»:{«header»:null,»message»:null,»code»:31},»Customization»:null,»StatementUrl»:null,»ReceiptUrl»:null,»SecureDoneUrl»:null,»UserName»:null,»isHighRisk»:false,»Country»:null,»JurType»:null,»MerchantType»:0,»MerchantId»:0,»Owner»:null,»IsTestInvoice»:false,»SavedCards»:null,»DefaultCurrencyLabel»:null,»DefaultLocalization»:null,»InvoiceLanguage»:»ru»,»InvoiceID»:»00000000-0000-0000-0000-000000000000″,»FailReturnInfo»:null,»MrhInvoiceId»:0,»OriginalCurrency»:null,»OriginalOutSum»:0.0,»TelegramNewCard»:false,»TelegramConfirm»:false,»TelegramPayId»:null,»CardNetworksApplePay»:null,»CardNetworksGooglePay»:null,»CardNetworksYandexPay»:null,»CardNetworksSamsungPay»:null};
</script>

Ссылка на сообщение
Поделиться на другие сайты


support

support

446


    • Жалоба
    • Share

4 часа назад, madvolkov сказал:

formid=d5c8b734a1ce351fca0e5bd3949d7ca3&action=logged_on&shipping_count=0&sc_payment_address_show=1&sc_payment_modules_show=1&create_account=&sc_shipping_modules_show=1&sc_shipping_address_show=1&checkout_possible=&hours1=27.03.2022&hours2=8&minute2=00&hours3=9&minute3=00&comments=&payment=roboxchange&s_name=&s_inn=&s_telephone=8+499+653+69+68

вот что форма отправляет после подтверждения, потом запрос перенаправляет почему то в файл shopping_cart.php и там уже все запросе полный код страницы почему то)

А не после подтверждения редиректит на страницу https://auth.robokassa.ru/Merchant/Index.aspx, где код страницы содержит вот такую строчку

<script>
    var RoboxContext = {«ShopName»:null,»ShopUrl»:null,»ShopDescription»:null,»SumString»:null,»Sum»:null,»PureSum»:null,»OpKey»:null,»OperationState»:null,»Receipt»:null,»StartDate»:»2022-03-25T14:12:26.9131097+03:00″,»Description»:null,»Email»:null,»CurrencyGroups»:null,»AllCurrencies»:null,»Error»:{«header»:null,»message»:null,»code»:31},»Customization»:null,»StatementUrl»:null,»ReceiptUrl»:null,»SecureDoneUrl»:null,»UserName»:null,»isHighRisk»:false,»Country»:null,»JurType»:null,»MerchantType»:0,»MerchantId»:0,»Owner»:null,»IsTestInvoice»:false,»SavedCards»:null,»DefaultCurrencyLabel»:null,»DefaultLocalization»:null,»InvoiceLanguage»:»ru»,»InvoiceID»:»00000000-0000-0000-0000-000000000000″,»FailReturnInfo»:null,»MrhInvoiceId»:0,»OriginalCurrency»:null,»OriginalOutSum»:0.0,»TelegramNewCard»:false,»TelegramConfirm»:false,»TelegramPayId»:null,»CardNetworksApplePay»:null,»CardNetworksGooglePay»:null,»CardNetworksYandexPay»:null,»CardNetworksSamsungPay»:null};
</script>

Не знаю, наугад сложно сказать, надо разбираться.

Это возможно только в рамках тех. поддержки.

Ссылка на сообщение
Поделиться на другие сайты

Для клиентов от Мегагрупп 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

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

[решено] Ошибка сетевой карты в Windows с кодом 31

Несмотря на то что Windows-системы способны устанавливать драйвера практически для всех устройств самостоятельно, иногда при интегрировании в систему нестандартного специфичного оборудования могут возникать неполадки. Реже встречаются ситуации, когда драйвер не соответствует установленному устройству. Так что все попытки активации его работы ни к чему не приводят. Однако проблема того, как исправить ошибку “Code 31”, решается достаточно просто. И выполнить такие процедуры сможет практически любой пользователь, имеющий даже примитивные навыки работы с ПК.

Руководство по поиску и устранению ошибок кода 31 в диспетчере устройств

Пользователи часто сталкиваются с ошибкой «Это устройство работает неправильно» код 31. Такая ошибка указывает на то, что оборудование компьютера конфликтует с операционной системой. По факту, сбой может произойти с любым элементом, указанным в Диспетчере устройств.

Итак, распространенные причины ошибки:

Результат вполне очевиден – неправильная работа оборудования (код ошибки 31) и системы в целом, что приводит даже к «экрану смерти» или абсолютно не влияет на работу.

Как это выглядит в системе?

Устраняем ошибку Code 31

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

Его нужно будет удалить. Тип ключа: REG_BINARY

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

Источники:

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

https://rucore. net/resheno-oshibka-setevoj-karty-v-windows-s-kodom-31/

Робокасса

Вы можете организовать прием платежей в бота используя платежный агрегатор Робокасса

Всем, зарегистрировавшимся по ссылке(или промокоду) предоставляются лояльные стартовые условия в виде тарифного плана «Реальный» (2.9%) сроком на 3 календарных месяца.

Робокасса больше не работает с физическими лицами.

Рассмотрим как реализовать прием оплат в боте через сервис Робокасса.

  1. 1.

    Создайте интернет магазин в личном кабинете Робокассы и укажите данные технические настройки:

— Алгоритм расчета хеша: MD5
— Result Url: https://chatter.salebot.pro/robokassa_callback/result
— Метод отсылки данных по Result Url: GET
— Success Url: https://chatter.salebot.pro/robokassa_callback/success
— Метод отсылки данных по Success Url: GET
— Fail Url: https://chatter.salebot.pro/robokassa_callback/fail
— Метод отсылки данных по Fail Url: GET (Рисунок 1)

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

Зайдите в Платежные системы — Робокасса и заполните форму в Salebot.pro:

На этом подключение закончено. Теперь давайте разберемся как использовать данный функционал.

Обратите внимание: переменной payment_sum присваивается значение последней, после необязательных переменных payment_description, product_name и т.д.

Для генерации ссылки на оплату, вам необходимо установить значение переменной payment_sum, сразу после этого появится переменная robokassa_pay_url. Эту переменную можно вывести на экран ссылкой или разместить на кнопке с текстом «Оплатить». Ссылка имеет вид:
https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=test_salebot&OutSum=800&InvId=1412&IsTest=1&SignatureValue=0427369c3bd068bae30935f896060dda

Как получить уведомление о результате оплаты

После успешной оплаты в бот придет колбек. Этот колбек в системе вы видите как сообщение от пользователя, чтобы их не мог отправить пользователь, они состоят из первого пароля от робокассы и приписки со статусом success, например: qxgZ7zkNX4HHnG8UpZ61_success.Также после успешной оплаты переменная robokassa_payment_completed устанавливается в True.

Этот колбек НЕ ВИДИТ пользователь, они отображаются только оператору

Тип сравнения должен быть «Полное совпадение«

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

Пример обнуления переменных:
robokassa_pay_url=»
payment_sum=0

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

Как создать тестовую схему

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

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

На рисунке ниже настройки стрелки, в ней должен быть включен переключатель «Пользователь вводит данные» и в поле вписана переменная payment_sum:

Рисунок ниже — настройки следующего блока. Обратите внимание, переменная #{robokassa_pay_url} вставляется в разделе «Настройка вложений».

Далее блок первостепенной проверки, в условии которого прописываем qxgZ7zkNX4HHnG8UpZ61_success — колбек об успешной оплате.

Тип проверки обязательно поставьте «Полное совпадение»

Как добавить описание платежа

Вы можете добавить описание к платежу, установив переменную payment_description

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

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

robokassa_sno — система налогообложения. Необязательное поле, если у организации имеется только один тип налогообложения.

  • usn_income – упрощенная СН (доходы);

  • usn_income_outcome – упрощенная СН (доходы минус расходы);

  • envd – единый налог на вмененный доход;

  • esn – единый сельскохозяйственный налог;

products_for_receipt — это массив с перечисленными товарами чека, следующего вида:

[{«name»: «Наименование товара», «quantity»: «Количество товара», «sum»: «Стоимость товара», «tax»: «Ставка НДС»}, {«name»: «Наименование товара 2», «quantity»: «Количество товара 2», «sum»: «Стоимость товара», «tax»: «Ставка НДС»}]

{«description»: «Наименование товара», «quantity»: «Количество товара», «sum»: «Стоимость товара», «tax»: «Ставка НДС»}

name — Наименование товара

quantity — Количество или вес товара (целое или дробное число через точку)

sum — Полная сумма в рублях за все количество данного товара с учетом всех возможных скидок, бонусов и специальных цен.

Дополнительно можно передать два параметра:

payment_method — Признак способа расчёта.

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

  • full_prepayment — предоплата 100%. Полная предварительная оплата до момента передачи предмета расчёта;

  • prepayment — предоплата. Частичная предварительная оплата до момента передачи предмета расчёта;

  • full_payment — полный расчёт. Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчёта;

  • partial_payment — частичный расчёт и кредит. Частичная оплата предмета расчёта в момент его передачи с последующей оплатой в кредит;

  • credit — передача в кредит. Передача предмета расчёта без его оплаты в момент его передачи с последующей оплатой в кредит;

  • credit_payment — оплата кредита. Оплата предмета расчёта после его передачи с оплатой в кредит (оплата кредита).

payment_object — предмет расчета (если не передать, будет commodity (товар)), может принимать следующие значения:

  • commodity — товар. О реализуемом товаре, за исключением подакцизного товара (наименование и иные сведения, описывающие товар);

  • excise — подакцизный товар. О реализуемом подакцизном товаре (наименование и иные сведения, описывающие товар);

  • job — работа. О выполняемой работе (наименование и иные сведения, описывающие работу);

  • service — услуга. Об оказываемой услуге (наименование и иные сведения, описывающие услугу);

  • gambling_bet — ставка азартной игры. О приеме ставок при осуществлении деятельности по проведению азартных игр;

  • gambling_prize — выигрыш азартной игры. О выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр;

  • lottery — лотерейный билет. О приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей;

  • lottery_prize — выигрыш лотереи. О выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотерей;

  • intellectual_activity — предоставление результатов интеллектуальной деятельности. О предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации;

  • payment — платеж. Об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета;

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

  • composite — составной предмет расчета. О предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение выше перечисленных признаков;

  • another — иной предмет расчета. О предмете расчета, не относящемуся к выше перечисленным предметам расчета;

  • property_right – имущественное право;

  • non-operating_gain – внереализационный доход;

  • insurance_premium – страховые взносы;

  • sales_tax – торговый сбор;

  • resort_fee – курортный сбор.

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

Общая стоимость всех товаров (сумма всех параметров sum) должна быть равной переменной payment_sum!

product_name = Первый платеж

products_for_receipt = [{«name»: «Наименование товара», «quantity»: 2, «sum»: 2, «tax»: «none»}, {«name»: «Наименование товара 2», «quantity»: 1, «sum»: 6, «tax»: «none»}]

Обратите внимание: переменной payment_sum присваивается значение последней, после необязательных переменных session_timeout, product_name и т.д.

«Повторная оплата счета с тем же номером невозможна».

После успешного платежа необходимо перевести диалог в блок «Конец сбора данных», чтобы сформировался новый номер платежа.

«Услуга рекуррентных платежей не разрешена магазину».

«Неверная сумма платежа».

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

«Неверный параметрSignature»

Здесь причин может быть несколько, но все они связаны со скриптом, отвечающим за инициализацию оплаты (а конкретнее, его часть, которая формирует параметрSignatureпо формуле, состоящей из переменных). Эта ошибка встречается довольно часто, и вот 3 возможных причины:

  • Первая: некорректный Идентификатор магазина (MerchantLogin);

  • Вторая: неверный Пароль 1 (MerchantPass1);

  • Третья: вы используете дополнительные параметры (shp_), которые добавлены в программный код кассы, но не занесены в формулу подсчета — или наоборот, в формуле подсчета они указаны, а в коде нет. Если таковые используются, передавайте их в алфавитном порядке – как в параметрах на оплату, так и в формуле подсчета Signature.

Важный момент! Если вы работаете в тестовом режиме, передавая параметр IsTest=1 или включая его галочкой в настройках модуля/бота, используйте только тестовую пару технических паролей (закладка «Технические настройки» карточки вашего магазина).

«Тестовый платёж не может быть создан. У магазина отсутствуют настройки тестовых параметров».

Это значит, что перед проведением тестового платежа вы не заполнили все необходимые данные в блоке «Параметры проведения тестовых платежей» закладки «Технические настройки».

«Магазин не активирован».

Эта ошибка встречается нередко, и здесь могут быть 2 причины.

  • Первая: это действительно так – и необходимо активировать магазин, а лишь потом выставлять счет.

  • Вторая: вы неверно указали Идентификатор магазина в технических настройках на сайте. Посмотреть правильный можно в разделе «Мои магазины» Личного кабинета. Перейдите в закладку «Технические настройки» и найдите поле «Идентификатор магазина». Скопируйте идентификатор и введите его в настройках сайта.

Как проводить автоматические платежи Робокассы

Для проведения автоматического платежа, нужно включить их в настройка платежной системы Robokassa в Salebot — переключить ползунок “Включить автоплатежи”

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

Далее, чтобы совершить автоплатеж, в нужном блоке в поле Назначение переменных при переходе, нужно добавить следующее:

response = robokassa_recurrent_payment(Сумма платежа, ‘Описание платежа’)

В переменную response запишется ответ функции

Пример:
response = robokassa_recurrent_payment(100, ‘Описание платежа’)

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

При выполнении автоплатежа не должно быть ссылки на оплату робокассы и переменной payment_sum!

Какие требования Робокассы к чатботам

Официальный ответ Робокассы:

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

Ссылку на телеграммы канал в качестве URL мы не включаем. Также требования к наполнению сайта: «Сайт должен быть функционирующий, с заполненным контентом, работающими внутренними ссылками.

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

На Вашем сайте обязательно должна быть размещена актуальная информация: телефон, e-mail, правила оформления и сроки исполнения заказа, условия его оплаты, доставки и возврата.

Каждый сайт рассматривается индивидуально.

Подключение платежей в Telegram

Данный раздел рассмотрен

тут

Подключение тестового бота RobokassaPaymentTestBot.

  1. 1.

    При выборе Connect Robokassa Test пользователь переходит в бота RobokassaPaymentTestBot.

  2. 2.

    Пользователь нажимает кнопку /начать.

  3. 3.

    Пользователь получает ответ от бота «Введите ID магазина”.

  4. 4.

    Необходимо ввести id от магазина в сервисе Robokassa.

  5. 5.

    Бот попросит подтверждение, подтверждающее владение магазином посредством отправки смс на номер, указанный в магазине: «Отправлена СМС на номер *%%%%» где %%%% — последние 4 цифры телефона

  6. 6.

    Пользователь вводит 6-значный код.

  7. 7.

    Если все успешно то пользователю покажется сообщение: “Вы успешно подключили бота @BotName к Robokassa. @BotFather сообщит Вам новый токен.”

  8. 8.

    После этого в BotFather появляется платежный токен, к которому подключаются платежи.

Подключение live- бота RobokassaPaymentBot.

  1. 1.

    При выборе Connect Robokassa Live пользователь переходит в бота RobokassaPaymentBot,

  2. 2.

    Пользователь нажимает кнопку /начать.

  3. 3.

    Пользователь получает ответ от бота «Введите ID магазина”.

  4. 4.

    Необходимо ввести id от магазина в сервисе Robokassa.

  5. 5.

    Бот попросит подтверждение, подтверждающее владение магазином посредством отправки смс на номер, указанный в магазине: «Отправлена СМС на номер *%%%%», где %%%% — последние 4 цифры телефона

  6. 6.

    Пользователь вводит 6-значный код.

  7. 7.

    Если все успешно то пользователю покажется сообщение: “Вы успешно подключили бота @BotName к Robokassa. @BotFather сообщит Вам новый токен.”

  8. 8.

    После этого в BotFather появляется платежный токен, к которому подключаются платежи.

Обработка результатов оплаты аналогична описанному

тут

#1

pettrovich

  • ГородСанкт-Петербург

Отправлено 15 Апрель 2011 — 21:44

Приветствую. Постараюсь описать подробнее. У меня аккаунт на моем же сайте для тестирования заказов, оплат и т.п.
Провожу обычные действия. Захожу в аккаунт, выбираю товар ,оформляю и вконце оформления, если нажать кнопку перейти к оплате вываливается ошибка:
snap0010.jpg

Жму назад:
snap0011.jpg

Жму назад еще раз, попадаю обратно в кабинет, снова жму «перейти к оплате» и только теперь:
snap0012.jpg

Если после первой ошибки вернуться в кабинет и зайти на страницу заказа, то ошибки нет и попадаешь в робокассу успешно.
Судя по моим исследованиям глюк проявляется в 80% случаев. Не отрицаю, что это может быть ошибка не у вас, а у робокассы, но т.к. их поддержка еще не вышла из зимней спячки, то решил у вас узнать. Пользую chrome, пробовал на разных компах из разных мест (дом, работа, друзья) из под разных аккаунтов и с другими браузерами (opera, mozilla). Аккаунт на робокассе успешно активирован и пару тестовых оплат я уже успешно проводил. Тогда как раз и заметил.
Спасибо.

  • Наверх


#2

Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 282 сообщений

Отправлено 18 Апрель 2011 — 06:08

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

  • Наверх


#3

SIZIY

SIZIY

    Новичок

  • Пользователи
  • Pip

  • 7 сообщений

Отправлено 20 Июнь 2011 — 12:27

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

Ответ робокассы:
Здравствуйте,

Запрос обновлен. — Скрипт расположенный по Result Url должен возвращать OKnMerchantInvID.
См. нашу документацию Cash Register(описание интерфейсов)»
прямая ссылка:
http://www.robokassa.ru/Doc/Ru/Interface.aspx

Пункт 3, стр 6.

«Факт успешности сообщения магазину об исполнении операции определяется по результату, возвращаемому обменному пункту. Результат должен содержать “OKnMerchantInvID”, т.е. для счета #5 должен быть возвращен текст “OK5”.»

Так же обратите внимание на то в каком регистре у вас выводится после подсчёта контрольная сумма (MD5). Мы отправляем её вам ВСЕГДА только в верхнем регистре.
Следовательно, вам так же нужно сравнивать её со своей в верхнем регистре.

Не забудьте учесть, что для подсчёта контрольной суммы на своей стороне вам нужно использовать те данные о платеже, которые мы вам присылаем в запросе на Result URL. (номер заказа, сумма и дополнительные параметры если они есть) Это нужно делать исключительно для того, что бы проверять, что это именно мы прислали вам информацию об успешном платеже, а не кто-то другой. Т.е. буквально — вы проверяете то, что мы вам присылаем, высчитывая из полученных данных контрольную сумму и сверяя её с присланной нами контрольной суммой.

  • Наверх


#4

SIZIY

SIZIY

    Новичок

  • Пользователи
  • Pip

  • 7 сообщений

Отправлено 21 Июнь 2011 — 12:27

Люди прошу помогите.Несу убытки:((( помогите разобраться с робокассой

  • Наверх


#5

support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 22 Июнь 2011 — 16:56

Интерфейс взаимодействия работает, но статус заказа меняется только при 100% уверенности системы в том что средства поступили на счёт. Робокасса отправляет запросы на result url, здесь все обрабатывается корректно. Другой вопрос о смене статуса оплаты. Все дело в том что когда робокасса делает запрос на наш сервис мы проверяем реально ли оплачен заказ, делая запрос обратно к робокассе и к сожалению она где-то в 10% случаев даёт положительный ответ, о том что деньги поступили на счёт. В остальных случаях статус заказа не меняется, поскольку системе говорят что заказ оплачен, а по факту проверки робокасса говорит обратное. В будущем мы сделаме автоматическую проверку всех оплат в фоновом режиме, когда система работая с робокассой принудительно будет делать запросы после проведения оплаты самостоятельно к робокассе для проверки статуса оплаты, который стоит в их админке. После этого надеемся проблема исчезнет. Извиняюсь за временные неудобства. Мы их исправим.

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

  • Наверх


#6

zvrv

Отправлено 30 Сентябрь 2011 — 21:17

[quote name=’support’ timestamp=’1308750964′ post=’4516′]
Интерфейс взаимодействия работает, но статус заказа меняется только при 100% уверенности системы в том что средства поступили на счёт. Робокасса отправляет запросы на result url, здесь все обрабатывается корректно. Другой вопрос о смене статуса оплаты. Все дело в том что когда робокасса делает запрос на наш сервис мы проверяем реально ли оплачен заказ, делая запрос обратно к робокассе и к сожалению она где-то в 10% случаев даёт положительный ответ, о том что деньги поступили на счёт. В остальных случаях статус заказа не меняется, поскольку системе говорят что заказ оплачен, а по факту проверки робокасса говорит обратное. В будущем мы сделаме автоматическую проверку всех оплат в фоновом режиме, когда система работая с робокассой принудительно будет делать запросы после проведения оплаты самостоятельно к робокассе для проверки статуса оплаты, который стоит в их админке. После этого надеемся проблема исчезнет. Извиняюсь за временные неудобства. Мы их исправим.

В карточке заказа  при оплате робокассой сейчас есть кнопочка (2 стрелочки вверх и вниз). При нажатии на неё происходит запрос к сервису робокассы и получается ответ о реальном статусе оплаты заказа, чтобы не заходить отдельно в их панель. В большинстве случаев этот функционал помогает существенно облегчить работу с приёмом оплаты через робокассу.
[/quote]
Хотелось бы уточнить, когда будет решена эта проблема? Стрелочки в админке не помогают, выдается ошибка (Неизвестный номер операции для robox xml opstate->nState).

Снимок.JPG

  • Наверх


#7

support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 17 Октябрь 2011 — 23:48

[quote name=’zvrv’ timestamp=’1317406644′ post=’8039′]
Хотелось бы уточнить, когда будет решена эта проблема? Стрелочки в админке не помогают, выдается ошибка (Неизвестный номер операции для robox xml opstate->nState).

Снимок.JPG

[/quote]
Видимо поломалось… Похоже сейчас остался один вариант — проверять через робокассу. Скоро (думаю меньше чем через месяц) мы поправим эту ошибку и доработаем механизм обработки и проверки оплаты от робокассы, всё будет работать.

  • Наверх


#8

shpionsale

shpionsale

    Новичок

  • Пользователи
  • Pip

  • 4 сообщений

Отправлено 31 Октябрь 2011 — 00:02

При оплате клиентами через Robokassy в личном кабинете в разделе «Поиск операций» у меня отображается ввод денег, однако уже через некоторое время появляется строка с отменой операции, и деньги не поступают ко мне на счет. И у меня такая же проблема при попытке проверить заказ — вылезает «Неизвестный номер операции для robox xml opstate->nState» Что делать?

  • Наверх


Как обмануть Робокассу

Время прочтения
5 мин

Просмотры 89K

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

Суть вопроса

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

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

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

Я не стану углубляться далеко в подробности о том, как работают транзакции в Робокассе, статья немного не об этом. Если вас интересует техдокументация, она в подробностях разжевана на официальном сайте.
Скажу лишь, что в процессе платежей все держится на нескольких вещах:

  • MerchantLogin — ваш логин в системе
  • InvId — ID выставляемого счета
  • OutSum — сумма, которую мы хотим получить
  • MerchantPass1 — технический пароль №1 для транзакций (всего их два, второй — для получения информации о состояниях платежей)
  • SignatureValue — md5-хеш строки вида «sMerchantLogin:nOutSum:nInvId:sMerchantPass1»

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

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

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

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

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

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

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

Формат запроса: merchant.roboxchange.com/WebService/Service.asmx/CalcOutSumm?MerchantLogin=string&IncCurrLabel=string&IncSum=string

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

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

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

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

Нет. Неправда. Если оставить его пустым — сервер вернет такой ответ (на примере ссылки merchant.roboxchange.com/WebService/Service.asmx/CalcOutSumm?MerchantLogin=demo&IncCurrLabel=&IncSum=3500 )

<CalcSummsResponseData>
    <Result>
        <Code>6</Code>
        <Description>Переданы некорректные значения параметров.</Description>
    </Result>
    <OutSum>0</OutSum>
</CalcSummsResponseData>

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

Пример запроса методом HTTP GET:
merchant.roboxchange.com/WebService/Service.asmx/GetRates?MerchantLogin=demo&IncCurrLabel=&OutSum=10.45&Language=ru

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

Missing parameter: IncCurrLabel.

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

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

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

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

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

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

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

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


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

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

Выход номер раз

Зверский

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

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

Выход номер два

Единственный

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

Выход номер три

Несуществующий

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

Робокасса код ошибки 31 что это такое

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

Суть вопроса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

Пользователи часто сталкиваются с ошибкой «Это устройство работает неправильно» код 31. Такая ошибка указывает на то, что оборудование компьютера конфликтует с операционной системой. Чаще всего виновником этой ошибки выступает неправильно установленный драйвер или старые их версии. Рассмотрим подробнее проблему и определим, что предпринимать в этом случае.

Ошибка "Код 31" при установке драйвера

Ошибка «Код 31» при установке драйвера

Причины возникновения ошибки с кодом 31

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

Устраняем ошибку Code 31

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

Через некоторое время система попытается определить все подключенные устройства и установить необходимые драйвера самостоятельно, если это необходимо. Если этот метод не помог, а оборудование продолжает выдавать ошибку 31 «данное оборудование работает неправильно», попробуйте следующее.

Перезагрузите систему и проверьте наличие ошибки на своем компьютере.

Обновление драйвера в Диспетчере устройств

Обновление драйвера в Диспетчере устройств

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

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

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

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

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

device-vid-and-pid

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

Источники:

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

https://itdesc. ru/eto-ustrojstvo-rabotaet-nepravilno-kod-31/

Сервис по приему платежей Robokassa не работает вторые сутки и не может восстановить работу.

Последние полгода у «скалы» начались проблемы, которые они объясняли DDoS-атаками.

Именно так они хотели себя называть

Сначала сервис был недоступен на 1-2 часа, что раз один в месяц проблем не вызывало. Но со временем это время возрастало и с 16 марта 20:00 МСК сервис недоступен полностью.

Магазины не могут принимать платежи, вывести свои средства, которые зависли в сервисе.

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

Первое письмо о недоступности сервиса пришло спустя 3.5 часа.

Второе письмо письмо пришло через 16 часов. Они обещали восстановить работоспособность.

Надо ли говорить, что ничего не произошло и сервис так не стал доступен? Клиенты магазинов не могут оплатить, магазины не могут сделать возврат средств клиентам и вывести денежные средства.

Все это время в соц. сетях отвечает поддержка и только кормит завтраками.

Спустя 24 часа после падения на почту приходит еще одно письмо.

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

Наступает час X. Сервис все также не работает. Поддержка говорит, что частично восстановили и для полного восстановления надо подождать еще 4 часа.

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

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

UPD. 18 марта в 08:00 первые платежи пошли у нас в магазине. Но в ВК еще есть жалобы, что у них не работает и клиенты не могут оплатить.

UPD2. 18 марта в 12:00 опять сломалось у них что-то.


Добавлено в 14:10.

В Robokassa подтвердили vc.ru, что сервис работает некорректно на приём платежей. «Тем не менее никакой остановки выплат нет. К концу сегодняшнего дня мы полностью восстановим работоспособность сервиса», — добавили в компании.

Пользователи часто сталкиваются с ошибкой «Это устройство работает неправильно» код 31. Такая ошибка указывает на то, что оборудование компьютера конфликтует с операционной системой. Чаще всего виновником этой ошибки выступает неправильно установленный драйвер или старые их версии. Рассмотрим подробнее проблему и определим, что предпринимать в этом случае.

Ошибка "Код 31" при установке драйвера

Ошибка «Код 31» при установке драйвера

Причины возникновения ошибки с кодом 31

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

Устраняем ошибку Code 31

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

Через некоторое время система попытается определить все подключенные устройства и установить необходимые драйвера самостоятельно, если это необходимо. Если этот метод не помог, а оборудование продолжает выдавать ошибку 31 «данное оборудование работает неправильно», попробуйте следующее.

Перезагрузите систему и проверьте наличие ошибки на своем компьютере.

Обновление драйвера в Диспетчере устройств

Обновление драйвера в Диспетчере устройств

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

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

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

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

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

device-vid-and-pid

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

[решено] Ошибка сетевой карты в Windows с кодом 31

Несмотря на то что Windows-системы способны устанавливать драйвера практически для всех устройств самостоятельно, иногда при интегрировании в систему нестандартного специфичного оборудования могут возникать неполадки. Реже встречаются ситуации, когда драйвер не соответствует установленному устройству. Так что все попытки активации его работы ни к чему не приводят. Однако проблема того, как исправить ошибку “Code 31”, решается достаточно просто. И выполнить такие процедуры сможет практически любой пользователь, имеющий даже примитивные навыки работы с ПК.

Руководство по поиску и устранению ошибок кода 31 в диспетчере устройств

Пользователи часто сталкиваются с ошибкой «Это устройство работает неправильно» код 31. Такая ошибка указывает на то, что оборудование компьютера конфликтует с операционной системой. По факту, сбой может произойти с любым элементом, указанным в Диспетчере устройств.

Итак, распространенные причины ошибки:

Результат вполне очевиден – неправильная работа оборудования (код ошибки 31) и системы в целом, что приводит даже к «экрану смерти» или абсолютно не влияет на работу.

Как это выглядит в системе?

Устраняем ошибку Code 31

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

Его нужно будет удалить. Тип ключа: REG_BINARY

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

Источники:

https://itdesc. ru/eto-ustrojstvo-rabotaet-nepravilno-kod-31/

https://rucore. net/resheno-oshibka-setevoj-karty-v-windows-s-kodom-31/

Понравилась статья? Поделить с друзьями:
  • Robocopy ошибка 123 0x0000007b
  • Robocopy error 5 0x00000005 creating destination directory
  • Robocopy error 267
  • Robloxplayerbeta exe initialization error 2
  • Roblox ошибка dzn