Stripe

Как подключить

Для подключения платежной системы Stripe вам потребуется секретный API-ключ и ключ webhook.

Секретный API-ключ можно скопировать перейдя в раздел Developers -> API key и копируем Secret key.

Дальше нужно установить URL-адрес для колбэков. Это необходимо для того, чтобы бот получал уведомления об оплате.

Переходим в раздел Webhooks и добавляем адрес для вебхуков.

URL указываем - https://chatter.salebot.pro/stripe_callback/result

и выбираем событие:

  • checkout.session.completed

Сохраняем и попадаем на страницу с установленным вебхуком, копируем ключ (Signing secret) вебхука (в salebot поле - Webhook key):

после нажатия Reveal откроется ключ Webhook, который будет начинаться с whsec_...

После получения ключей переходим к настройкам в Salebot.

В salebot открываем раздел платежные системы, выбираем Stripe. На странице подключения, нужно ввести полученные данные.

Как подключить колбек о статусе транзакции

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

URL указываем - https://chatter.salebot.pro/stripe_callback/<api_key>/charge_status

и выбираем события:

  • charge.failed

  • charge.pending

  • charge.succeeded

Подробнее о каждом из типов вебхука: charge.succeeded - содержит информацию об успешном завершении транзакции (аналогичен колбеку об успешной оплате) charge.pending - "транзакция выполняется", на выполнение может уйти до 7 дней. Вебхук будет иметь вид {первые 10 символов }{тип вебхука} Например: sk_test_45LDPJLKT95d_charge.pending charge.failed - "транзакция провалилась". Вебхук будет иметь вид {первые 10 символов }{тип вебхука} Например: sk_test_45LDPJLKT95d_charge.failed

Полученный после сохранения вебхук добавляем в Salebot поле - Webhook key2:

stripe_invoice_id - идентификатор сделки, по которой не пришел колбек об успешной оплате сразу после платежа

Как подключить налоги

Для использования налогов в платежах нужно сперва создать их в личном кабинете Stripe. Для этого перейдите в раздел Products, где нужно выбрать пункт Tax rates

Настройка налоговых начислений

Далее указываем применяемую налоговую ставку

Добавление налоговой ставки

В открывшемся меню выберите тип налога, регион, для которого он применяется, процентную ставку и признак - будет этот налог включен в сумму платежа Inclusive или будет добавлен сверх суммы - exclusive

После создания налоговой ставки скопируйте его id в переменную stripe_tax_id до объявления суммы платежа.

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

Если все сделать правильно, то в случае с налоговой ставкой с параметром exclusive Вы увидите следующее

Пример платежа с налоговой ставкой типа exclusive

Как получить ссылку на оплату

Для генерации ссылки на оплату вам необходимо установить значение переменной payment_sum (например 150 или 100.55 (через точку!)), сразу после этого появится переменная stripe_pay_url. Эту переменную можно вывести на экран ссылкой или разместить на кнопке с текстом "Оплатить".

Ссылка имеет вид:

https://checkout.stripe.com/pay/cs_test_a17mskKFFRwEuo3WgBSAUjfk7xaZZIrct9B3Ds2AdODVq1I8aRiqYEBdrU#fidkdWxOYHwnPyd1blpxYHZxWjA0TGFsVzFPVmpmMzJAbVYzUkp1Y0lLYDVgfzR2Q0NxcWZBNUNnTnRSVVRJSGFobEB1UExSczRMMTc8PWRLMGBddl8xalxyPDRoUGhnZm9xXXZANDZyaF0wNTVBVExsPHZyfycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl

Также до установки значения переменной payment_sum, можно задать следующие необязательные переменные, для настройки платежа.

Параметры функции
Описание паараметра

currency

валюта заказа. Допустимые значения - https://stripe.com/docs/currencies

payment_description

описание заказа

stripe_tax_id

идентификатор налоговой ставки, настроенной в личном кабинете Stripe

stripe_invoice_enable

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

stripe_locale

установить язык страницы оплаты: en, ru, de. Все доступные: https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-locale Если не передано значение stripe_locale, то будет использован язык браузера клиента.

stripe_payment_method_type

метод оплаты, по умолчанию стоит оплата картой (card). Можно заменить на другие доступные для Stripe методы оплаты. Ниже указаны доступные методы.

Например, stripe_payment_method_type = "customer_balance"

stripe_additional_payment_method_type

добавить дополнительный метод оплаты. Ниже указаны доступные методыНапример, stripe_additional_payment_method_type = "sepa_debit"

coupon_id

идентификатор купона скидки

stripe_expired

время жизни ссылки на оплату. Указывается в секундах. Минимальное время 30 минут, максимальное - 24 часа. По умолчанию 24 часа

stripe_automatic_tax

включение автоматического расчета и сбора налогов при оплате. Для включения передать "1". Подробная информация об этой настройке в документации Stripe

Список значений для stripe_payment_method_type и stripe_additional_payment_method_type:

card acss_debit affirm afterpay_clearpay alipay au_becs_debit bacs_debit bancontact blik boleto cashapp customer_balance eps fpx giropay grabpay ideal klarna konbini link oxxo p24 paynow paypal pix promptpay sepa_debit sofort us_bank_account wechat_pay zip Подробнее про каждый из методов и для каких стран они доступны можно узнать в документации Stripe: посмотреть на сайте

Пример формирования ссылки на оплату

Создадим ссылку на оплату в размере 2 евро (по умолчанию доллар)

Обратите внимание: - Сначала указываете необязательные параметры first_name, payment_description и т.д. - И последней присваиваем значение переменной payment_sum

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

Далее в нужном месте выводим переменную stripe_pay_url, в которой содержится ссылка в блоке либо в кнопке:

Допустимо оба варианта вставки ссылки в блок.

Пример платежной страницы

Как добавить скидку в заказ

  1. При генерации ссылки на оплату (работает как для подписок, так и для разовых платежей).

В калькуляторе блока до объявления переменной payment_sum задайте переменную coupon_id, передав в неё идентификатор скидки из личного кабинета stripe.

  1. В существующую подписку с помощью функции stripe_add_subscription_discount.

Задайте условия для срабатывания блока и в калькуляторе вызовите указанную функцию, передав в нее параметры stripe_subscription_id (id подписки) и coupon_id (id купона на скидку). Скидка будет применена для последующих платежей по подписке.

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

Как создать купон и получить ID скидки

Для получения идентификатора скидки создайте купон в личном кабинете в разделе ”coupons”. (https://dashboard.stripe.com/coupons).

При нажатии кнопки “New” откроется страница, где нужно указать Name (название скидки), ID (идентификатор, также генерируется автоматически), Type (вид скидки: в процентах или фиксированная сумма), Duration (длительность скидки: разовая или продолжительная, например, для подписок) и другие параметры.

Купон со скидкой появится в каталоге “Product catalogue“ в разделе “Coupons”, а ID скидки вы можете посмотреть, зайдя в меню купона:

Как удалить/изменить скидку для подписки

Прикрепленную к подписке скидку можно удалить или заменить другой скидкой.

Если вы хотите прекратить действие скидки, задайте условие для срабатывания блока и в калькуляторе вызовите функцию stripe_remove_subscription_discount, передав в неё параметр stripe_subscrition_id (id подписки).

При успешном выполнении операции функция вернёт сообщение, содержащее id подписки и дату отмены скидки.

Замена скидки, как и добавление новой, производится с помощью функции stripe_add_subscription_discount. Не забудьте передать в нее параметры stripe_subscription_id и coupon_id. Успешный запрос обновит прикрепленный к подписке купон и вернет сообщение с актуальными данными.

Например: сообщение в ответ на запрос о добавление скидки

Сообщение в ответ на запрос о замене скидки

Для получения идентификатора скидки создайте купон в личном кабинете в разделе ”coupons”. (https://dashboard.stripe.com/coupons).

Как обработать результат

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

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

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

Также после успешной оплаты переменная stripe_payment_completed устанавливается в True.

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

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

Как настроить рекуррентные платежи

Для рекуррентных платежей (подписки) нужно до объявления переменной payment_sum объявить переменную stripe_subscription и присвоить ей название подписки. Также можно добавить следующие переменные: interval – продолжительность интервала подписки, в эту переменную нужно передать значение ‘day’ - для дней, ‘week’ - недель, ‘month’ - месяцев, ‘year’ - лет. Если переменная не объявлена, то по умолчанию будет передан параметр ‘month’;

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

stripe_payment_method_type - метод оплаты, по умолчанию стоит оплата картой (card). Можно заменить на другие доступные для Stripe методы оплаты. Ниже указаны доступные методы.

Например, stripe_payment_method_type = "customer_balance"

stripe_additional_payment_method_type - добавить дополнительный метод оплаты. Ниже указаны доступные методы

Например, stripe_additional_payment_method_type = "sepa_debit"

Список значений для stripe_payment_method_type и stripe_additional_payment_method_type:

card acss_debit affirm afterpay_clearpay alipay au_becs_debit bacs_debit bancontact blik boleto cashapp customer_balance eps fpx giropay grabpay ideal klarna konbini link oxxo p24 paynow paypal pix promptpay sepa_debit sofort us_bank_account wechat_pay zip

Подробнее про каждый из методов и для каких стран они доступны можно узнать в документации Stripe: посмотреть на сайте

В данном примере подписка с названием 'My_subscription' будет создана с ценой 90 USD за 3 месяца и повторный платеж будет с той же суммой по истечении этих 3 месяцев:

Пример для копирования:

stripe_subscription = 'My_subscription' interval = 'month' interval_count = 3 payment_sum = 90

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

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

Для возврата к обычным платежам присвойте переменной subscription пустую строку stripe_subscription = ''. В таком случае переменные interval и interval_count не повлияют на создание ссылки

Настройки для отмены подписки

Для отмены подписки в калькуляторе используйте метод stripe_remove_subscription(stripe_subscription_id), где stripe_subscription_id – идентификатор, который был сохранен в переменных о сделке после оплаты Это позволит оставить оплаченную подписку активной до конца текущего оплаченного срока, но дальнейшие списания не произойдут, и по истечении срока подписка будет отменена:

answer = stripe_remove_subscription('#{stripe_subscription_id}')

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

В данном примере результат выполнения функции будет помещен в переменную answer и можно будет проверить результат выполнения.

Проверка статуса подписки

stripe_check_subscription(subscription_id, customer_id), где

stripe_subscription_id - идентификатор подписки stripe_customer_id - идентификатор клиента в Stripe (необязательный параметр)

Функция проверки подписки добавлена в обновлении от 17 мая 2023

Как тестировать платежи

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

Далее провести настройку описанную в начале этой инструкции. Ввести тестовый секретный ключ и добавить адрес для вебхуков в тестовую среду.

Тестовый номер карты

4242 4242 4242 4242 дата любая в будущем CVC - любые три цифры

Если что-то не работает, сравните данные с данными на официальном сайте: https://stripe.com/docs/testing#regulatory-cards

Last updated

Was this helpful?