Stripe
Last updated
Last updated
Для подключения платежной системы 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 Вы увидите следующее
Для генерации ссылки на оплату вам необходимо установить значение переменной payment_sum (например 150 или 100.55 (через точку!)), сразу после этого появится переменная stripe_pay_url. Эту переменную можно вывести на экран ссылкой или разместить на кнопке с текстом "Оплатить".
Ссылка имеет вид:
https://checkout.stripe.com/pay/cs_test_a17mskKFFRwEuo3WgBSAUjfk7xaZZIrct9B3Ds2AdODVq1I8aRiqYEBdrU#fidkdWxOYHwnPyd1blpxYHZxWjA0TGFsVzFPVmpmMzJAbVYzUkp1Y0lLYDVgfzR2Q0NxcWZBNUNnTnRSVVRJSGFobEB1UExSczRMMTc8PWRLMGBddl8xalxyPDRoUGhnZm9xXXZANDZyaF0wNTVBVExsPHZyfycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl
По умолчанию установлен USD (доллар), если нужна другая валюта нужно установить значение переменной currency
Также до установки значения переменной payment_sum, можно задать следующие необязательные переменные, для настройки платежа.
Важно! Если используете обе переменные stripe_payment_method_type и stripe_additional_payment_method_type, то значения в них ОБЯЗАТЕЛЬНО должны быть РАЗНЫМИ!
Список значений для 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, в которой содержится ссылка в блоке либо в кнопке:
Допустимо оба варианта вставки ссылки в блок.
Пример платежной страницы
При генерации ссылки на оплату (работает как для подписок, так и для разовых платежей).
В калькуляторе блока до объявления переменной payment_sum задайте переменную coupon_id, передав в неё идентификатор скидки из личного кабинета stripe.
В существующую подписку с помощью функции stripe_add_subscription_discount.
Задайте условия для срабатывания блока и в калькуляторе вызовите указанную функцию, передав в нее параметры stripe_subscription_id (id подписки) и coupon_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, ранее сформированную ссылку и уже после переназначить переменную payment_sum для получения свежей ссылки. Можно указать предыдущее значение.
Для рекуррентных платежей (подписки) нужно до объявления переменной payment_sum объявить переменную stripe_subscription и присвоить ей название подписки. Также можно добавить следующие переменные: interval – продолжительность интервала подписки, в эту переменную нужно передать значение ‘day’ - для дней, ‘week’ - недель, ‘month’ - месяцев, ‘year’ - лет. Если переменная не объявлена, то по умолчанию будет передан параметр ‘month’;
Важно! Продолжительность одного цикла подписки не может быть более 1 года (для параметра ‘year’), более 12 месяцев (для параметра ‘month’), более 52 недель (для параметра ‘week’).
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, то значения в них ОБЯЗАТЕЛЬНО должны быть РАЗНЫМИ!
Список значений для 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: посмотреть на сайте
Важно! Продолжительность подписки не может быть более 1 года (для параметра ‘year’), более 12 месяцев (для параметра ‘month’), более 52 недель (для параметра ‘week’).
В данном примере подписка с названием 'My_subscription' будет создана с ценой 90 USD за 3 месяца и повторный платеж будет с той же суммой по истечении этих 3 месяцев:
Пример для копирования:
stripe_subscription = 'My_subscription'
interval = 'month'
interval_count = 3
payment_sum = 90
После оплаты в переменных сделки у клиента появится переменные stripe_subscription_id, которая потребуется для настройки отмены подписки, и stripe_customer_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
Параметры функции | Описание паараметра |
---|---|
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