Ошибка при регистрации QR-кода через API

Avatar
  • обновлен
  • На рассмотрении

Настраиваем интеграцию интернет-магазина для работы с СБП через API tochka.com 

Пока используем тестовый url  и токен working_token. При любых запросах, например, регистрация QR-кода, в ответ получаем ошибку { "code": "500", "id": "50e7130b-2198-4b25-bb54-b80b4ffc052a", "message": "Что-то пошло не так", "Errors": [ { "errorCode": "Something going wrong", "message": "ModelMetaclass object argument after ** must be a mapping, not list", "url": "http:\/\/enter.tochka.com\/docs\/redoc" } ] }

С чем это может быть связано? Описания ошибок, к сожалению, не удалось найти. 

Или возможно уже есть готовая библиотека php для работы с СБП?

Avatar
mikhailr
Цитата от trin4ik

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

Т.е. условно, вам в момент создания qr надо давать команду back-end своему, что в течении минуты, надо раз в секунду, опрашивать статус QR кода.

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

Если у вас небольшой бизнес и нет постоянного разраба в штате, это хороший выход, ибо обратные апи предполагают постоянный мониторинг со стороны ИТ специалиста.

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

Avatar
trin4ik
Цитата от Александр Михневич

Собственно, в этом и вопрос - как узнать, что прошла оплата на такой странице? ) https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJL2?type=01&bank=100000000001&sum=10000&cur=RUB&crc=C08B

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

Т.е. условно, вам в момент создания qr надо давать команду back-end своему, что в течении минуты, надо раз в секунду, опрашивать статус QR кода.

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

Если у вас небольшой бизнес и нет постоянного разраба в штате, это хороший выход, ибо обратные апи предполагают постоянный мониторинг со стороны ИТ специалиста.

Avatar
Команда Точки Администратор
Цитата от Команда Точки

Александр, унесём вопрос коллегам и вернёмся скорее всего уже завтра.

Чуть выше делились контактами команды API, если понадобится совет, можно сразу же писать им public-api@tochka.com :)

Чтобы узнать статус QR-кода, нужно вызвать метод Get Qr Codes Payment Status: https://enter.tochka.com/doc/v2/redoc#operation/get_qr_codes_payment_status_sbp__apiVersion__qr_codes__qrc_ids__payment_status_get

Этим методом сможете получить статус платежа по QR-коду. Если написано Accepted - это значит что операция завершена успешно и оплата по QR-коду прошла.

Описание возможных статусов платежа:

NotStarted - операции по QR-коду не существует

Received - операция в обработке

InProgress - операция в обработке

Accepted - операция завершена успешно

Rejected - операция отклонена

Avatar
Команда Точки Администратор
Цитата от Александр Михневич

Собственно, в этом и вопрос - как узнать, что прошла оплата на такой странице? ) https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJL2?type=01&bank=100000000001&sum=10000&cur=RUB&crc=C08B

Александр, унесём вопрос коллегам и вернёмся скорее всего уже завтра.

Чуть выше делились контактами команды API, если понадобится совет, можно сразу же писать им public-api@tochka.com :)

Avatar
Александр Михневич
Цитата от Команда Точки

Например, как только прошла оплата, то вы запрашиваете метод, который подсказали выше - Get Qr Codes Payment Status: :https://enter.tochka.com/doc/v2/redoc#operation/get_qr_codes_payment_status_sbp__apiVersion__qr_codes__qrc_ids__payment_status_get

Получаете статус Accepted и после этого внутри своего приложения делаете переброс на другую страничку. 

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

Собственно, в этом и вопрос - как узнать, что прошла оплата на такой странице? ) https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJL2?type=01&bank=100000000001&sum=10000&cur=RUB&crc=C08B

Avatar
Команда Точки Администратор
Цитата от Александр Михневич

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

Например, как только прошла оплата, то вы запрашиваете метод, который подсказали выше - Get Qr Codes Payment Status: :https://enter.tochka.com/doc/v2/redoc#operation/get_qr_codes_payment_status_sbp__apiVersion__qr_codes__qrc_ids__payment_status_get

Получаете статус Accepted и после этого внутри своего приложения делаете переброс на другую страничку. 

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

Avatar
Александр Михневич
Цитата от Команда Точки

Спасибо, что дали время. 

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

Когда оплата по QR проведена, страница с кодом может закрыться или перебросить на другую страницу, где будет указано то, что захотите. Это нужно сделать самостоятельно на своей стороне. Чтобы получить от нас ответ, можно использовать метод получения статуса QR-кода Get Qr Codes Payment Status: https://enter.tochka.com/doc/v2/redoc#operation/get_qr_codes_payment_status_sbp__apiVersion__qr_codes__qrc_ids__payment_status_get

И ещё можно настроить вебхуки: https://enter.tochka.com/doc/v2/redoc#tag/Rabota-s-vebhukami

Если ещё понадобится помощь, пишите, пожалуйста, на почту public-api@tochka.com. Всегда рады помочь!

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

Avatar
Команда Точки Администратор

Спасибо, что дали время. 

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

Когда оплата по QR проведена, страница с кодом может закрыться или перебросить на другую страницу, где будет указано то, что захотите. Это нужно сделать самостоятельно на своей стороне. Чтобы получить от нас ответ, можно использовать метод получения статуса QR-кода Get Qr Codes Payment Status: https://enter.tochka.com/doc/v2/redoc#operation/get_qr_codes_payment_status_sbp__apiVersion__qr_codes__qrc_ids__payment_status_get

И ещё можно настроить вебхуки: https://enter.tochka.com/doc/v2/redoc#tag/Rabota-s-vebhukami

Если ещё понадобится помощь, пишите, пожалуйста, на почту public-api@tochka.com. Всегда рады помочь!

Avatar
Команда Точки Администратор

Добрый день! Посмотрим всё подробнее, вернёмся с ответом.

Avatar
Александр Михневич
Цитата от Команда Точки

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

А где можно найти информацию о том, что происходит после оплаты по qr-коду? Т.е. регистрируем qr-код https://enter.tochka.com/doc/v2/redoc#operation/register_qr_code_sbp__apiVersion__qr_code_merchant__merchant_id___account__post, далее получаем ссылку вида https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJL2?type=01&bank=100000000001&sum=10000&cur=RUB&crc=C08B и переходим по ней для оплаты. После оплаты по коду на этой странице, что происходит? В документации не удалось найти информацию, а проводить реальные оплаты для теста, это лишняя работа для бухгалтерии. Поэтому решили имитировать оплату.