Платежи в ботах

Прием платежей в ботах 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.