Платежные системы

Прием платежей в ботах WhatsApp, Viber, Telegram, ICQ

Общая схема

Чтобы принимать платежи в ботах нужно в разделе Настройки -> Интеграции подключить платежную систему Яндекс.Касса.

Заполните соответствующие поля во вкладке Основное и нажмите кнопку Сохранить, после чего система сгенерирует webhook (ссылку), который нужно скопировать и сохранить в личном кабинете сервиса Яндекс.Касса в настройках в поле URL для уведомлений.

Во вкладке Оповещения вы можете указать URL для уведомлений (только https), на который будет приходить информация о платежах. Ответ должен содержать код состояния 200. В случае ошибки, система будет пытаться доставить уведомление в течение суток, постепенно увеличивая интервал между запросами.

О каких статусах вы будете получать уведомления:

  • pending - платеж создан, но не завершен.

  • waiting_for_capture - платеж выполнен и ожидает подтверждения.

  • succeeded - платеж успешно завершен.

  • canceled - платеж отменен.

Подробнее о статусах сервиса Яндекс.Касса смотрите по ссылке:

Пример оповещения для статуса pending. Платеж на 900 руб.

{
    "id": 1,
    "provider": "yandex_kassa",
    "provider_id": "12345678-1234-1234-1234-123456789ab",
    "currency": "RUB",
    "amount": 90000,
    "state": "pending",
    "created_at": 1554717083,
    "payload": null,
    "order": [
         {
             "name": "Название товара",
             "description": "Описание товара",
             "amount": 900
         }
    ],
    "contact": {
         "id": 1,
         "name": "Дмитрий",
         "messenger": "whatsapp",
         "phone": "79999999999"
    }
}

Поле amount содержит сумму в минимальной единице измерения валюты.

Пример оповещения для статуса waiting_for_capture

{
    "id": 1,
    "provider": "yandex_kassa",
    "provider_id": "12345678-1234-1234-1234-123456789ab",
    "currency": "RUB",
    "amount": 90000,
    "state": "waiting_for_capture",
    "created_at": 1554717099,
    "payload": {
        "type": "notification",
        "event": "payment.waiting_for_capture",
        "object": {
            "id": "12345678-1234-1234-1234-123456789ab",
            "status": "waiting_for_capture",
            "paid": true,
            "amount": {
                "value": "900.00",
                "currency": "RUB"
            },
            "authorization_details": {
                "rrn": "858585858585",
                "auth_code": "555444"
            },
            "created_at": "2019-04-08T09: 51: 35.762Z",
            "description": "[ID1] Дмитрий +79999999999",
            "expires_at": "2019-04-15T09: 51: 38.488Z",
            "metadata": [

            ],
            "payment_method": {
                "type": "bank_card",
                "id": "12345678-1234-1234-1234-123456789ab",
                "saved": false,
                "card": {
                    "first6": "555555",
                    "last4": "4444",
                    "expiry_month": "12",
                    "expiry_year": "2021",
                    "card_type": "MasterCard"
                },
                "title": "Bank card *4444"
            },
            "recipient": {
                "account_id": "123456",
                "gateway_id": "654321"
            }
        }
    },
    "order": [
        {
            "name": "Название товара",
            "description": "Описание товара",
            "amount": 900
        }
    ],
    "contact": {
        "id": 1,
        "name": "Дмитрий",
        "messenger": "whatsapp",
        "phone": "79999999999"
    }
}

Настройка приема платежей в Телеграм

Для Телеграм вы можете подключить встроенные платежи, для этого в разделе Опубликовать -> Telegram добавьте платежный токен, выданный ботом @BotFather.

Вы можете указать URL для уведомлений (только https), на который будет приходить информация о платежах. Ответ должен содержать код состояния 200. В случае ошибки, система будет пытаться доставить уведомление в течение суток, постепенно увеличивая интервал между запросами.

О каких статусах вы будете получать уведомления:

  • pending - платеж создан, но не завершен.

  • pre_checkout_query - система готова принять платеж.

  • succeeded - платеж успешно завершен.

  • canceled - платеж отменен.

Пример оповещения для статуса pending. Платеж на 900 руб.

{
   "id": 1,
   "provider": "telegram",
   "provider_id": null,
   "currency": "RUB",
   "amount": 90000,
   "state": "pending",
   "created_at": 1554717025,
   "payload": null,
   "order": [
      {
         "name": "Название товара",
         "description": "Описание товара",
         "amount": 900
      }
   ],
   "contact": {
      "id": 1,
      "name": "Дмитрий Иванов",
      "messenger": "telegram",
      "phone": "79999999999",
      "telegram_id": "1234567",
      "telegram_username": "superman"
   }
}

Поле amount содержит сумму в минимальной единице измерения валюты.

Пример оповещения для статуса pre_checkout_query

{
   "id": 1,
   "provider": "telegram",
   "provider_id": null,
   "currency": "RUB",
   "amount": 90000,
   "state": "pre_checkout_query",
   "created_at": 1554717052,
   "payload": {
      "id": "12345678901234567",
      "from": {
         "id": 1234567,
         "is_bot": false,
         "first_name": "Дмитрий",
         "last_name": "Иванов",
         "username": "superman",
         "language_code": "ru"
      },
      "currency": "RUB",
      "total_amount": 90000,
      "invoice_payload": "ba9ff39b297685db6102df93f97c8f66"
   },
   "order": [
      {
         "name": "Название товара",
         "description": "Описание товара",
         "amount": 900
      }
   ],
   "contact": {
      "id": 1,
      "name": "Дмитрий Иванов",
      "messenger": "telegram",
      "phone": "79999999999",
      "telegram_id": "1234567",
      "telegram_username": "superman"
   }
}

Обратите внимание на то, что Телеграм принимает платежи в диапазоне 1-10000$ USD.

Last updated