Работа с RobokassaShopBot

Документация сервиса

Документация сервиса Robokassa

Как настроить платежи через бота в Telegram

Чтобы принимать платежи в Telegram, нужно выполнить три действия:

  • Создать бота.
  • Подключить его к боту Робокассы.
  • Настроить своего бота для работы с платежами.

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

Как создать бота

  • Зайдите в Telegram и найдите @BotFather. Ему необходимо отправить 2 сообщения: сначала /start, а потом /newbot.
    Создание бота
  • Теперь надо придумать имя и юзернейм. Обратите внимание: имя необязательно должно быть уникальным - его будут видеть пользователи. А вот юзернейм нужен уникальный - он будет отображаться в ссылке на вашего бота.
  • Если у вас получилось придумать уникальный юзернейм, вы получите токен, обеспечивающий доступ к вашему боту. Будьте осторожны и не присылайте его третьим лицам.
    Создание бота

Вот и все - останется лишь произвести платежные настройки.

Как подключить прием платежей от Robokassa к своему боту

  • Зайдите в @BotFather и отправьте сообщение /mybots.
  • Кликните по имени вашего бота - вы увидите панель управления, в которой необходимо перейти в BotSettings — Payments.
    Кликните по имени вашего бота - вы увидите панель управления, в которой
                необходимо перейти в BotSettings — Payments
  • Здесь нужно выбрать режимы платежей: за основные платежи отвечает “Connect Robokassa Live”, а за тестовые - “Connect Robokassa Test”.
  • Если все сделано верно, вы перейдете в “платежный” бот - RobokassaPaymentBot. Отправьте ему сообщение /start и введите идентификатор вашего магазина. Вам придет SMS для подтверждения.
  • Снова зайдите в @BotFather. От него вы получите токен для выставления счетов. Если возникнет необходимость, вы всегда сможете посмотреть его в настройках: BotSettings — Payments.

Как настроить бота для работы с платежами

Дальше речь пойдёт о настройке бота через API Telegram. Если вы используете конструктор ботов (Botmother или любой другой), следуйте его инструкциям. Если вы создали бота самостоятельно, следуйте нашей инструкции ниже. При необходимости вы можете посмотреть пример бота на PHP в нашем GitHub – https://github.com/robokassa/telegram-pay.

  • Используйте метод sendinvoice из платёжного API Telegram. По вашему запросу созданный вами бот будет присылать покупателю счёт. Обратите внимание: он должен содержать цену на ваш товар, его название, информацию о товаре и два параметра - payload и provider_token.
    Json
          
    1 2 3 4 5 6 7 8 9 10 11 12 13
    { "chat_id": 000000, "title": "Оплата через Робокассу", "description": "Описание заказа", "payload": "test", "provider_token": "1111111111:LIVE:637955761195921111", "currency": "RUB", "prices": [ { "label": "Руб", "amount": 10000 } ] }

    Chat_id — уникальный идентификатор целевого чата или имя пользователя целевого канала.

    Title — название продукта, 1-32 символа.

    Description — описание продукта, 1-255 знаков.

    Payload — полезные данные счета-фактуры, определенные ботом, 1–128 байт. Это не будет отображаться пользователю, используйте его для своих внутренних процессов.

    Provider_token — токен выданный через бот Robokassa.

    Currency — трехбуквенный код валюты ISO 4217.

    Prices — разбивка цен, сериализованный список компонентов в формате JSON. Сумма указывается в копейках: "amount": 10000 == 100 руб.

    Для передачи номера заказа и номенклатуры в sendInvoice необходимо добавить еще одно поле – provider_data, который должен содержать в себе JSON c номером заказа(InvoiceId) и номенклатурой(Receipt) согласно документации Robokassa.

    Пример с использованием provider_data:

    Json
          
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
    { "InvoiceId": 100, "Receipt": { "sno": "osn", "items": [ { "name": "Товар 1", "quantity": 1, "sum": 50, "tax": "vat10", "payment_method": "full_payment", "payment_object": "commodity" }, { "name": "Товар 2", "quantity": 2, "sum": 50, "tax": "vat10", "payment_method": "full_payment", "payment_object": "commodity" } ] } }
  • После подтверждения платежа покупателем вы получите webhook с Update, содержащий объект PreCheckoutQuery. На запрос необходимо ответить в течение 10 секунд, используя метод answerPreCheckoutQuery.
  • Если все сделано правильно, вам придет сообщение с объектом SuccessfulPayment. В боте есть удобная опция: если вы продаете услугу, можно настроить ее автоматическое подключение после успешной оплаты, если цифровой контент - его отправку покупателю.