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

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

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

Шаг 1. Переходим в раздел Developers -> API key:

Шаг 2. Находим и копируем Secret key:

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

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

Откроется форма:

Шаг 1. Нажимаем на "+add destination".

Шаг 2. Выбираем events:

Шаг 3. Выбираем тип "Webhook endpoint":

Шаг 4. Ознакамливаемся с типом запроса и кликаем "Продолжить":

Шаг 5. Прописываем название и указываем URL endpoint:

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

Шаг 6. Будет создано два эндпоинта, можно посмотреть настройки перед добавлением:

Шаг 7. Далее нажмите кнопку "Add destinations". Тогда вебхуки будут сохранены.

Шаг 8. Нажмите кнопку "Done".

Сохраняем и попадаем на страницу с установленным вебхуком:

Шаг 9. Далее нажимаем на вебхук, в котором вы выбрали все ивенты:

Шаг 10. Находим Signig key и сохраняем его себе (в дальнейшем он понадобится для подключения к Salebot):

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

В salebot открываем раздел "Эквайринг", выбираем Stripe.

На странице подключения, нужно ввести полученные ключи:

Нажмите "Сохранить настройки".

Готово!

На этом подключение платежной системы окончено!

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

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

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

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

  • charge.failed
  • charge.pending
  • charge.succeeded

Подробнее о каждом из типов вебхука:

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

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

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

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

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

И нажмите "+ Add 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, то значения в них ОБЯЗАТЕЛЬНО должны быть РАЗНЫМИ!

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: посмотреть на сайте

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

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

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

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

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

Пример 1. Выводим ссылку на оплату прямо в сообщении:

Тестирование в боте:

Пример 2. Добавляем ссылку на оплату в кнопку:

Пример 3. Добавляем ссылку в качестве вложения к сообщению:

Тестирование в боте:

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

При клике на кнопку или при переходе по ссылке, вашего плательщика переадресует на платежную страницу:

В примере видно, что параметры, которые мы указывали в калькуляторе в настройках блока были применены: описание заказа, валюта и сумма.

Если передадите параметр налоговой ставки (stripe_tax_id) в блоке:

То также будет отображена налоговая ставка в форме оплаты:

payment_description = 'Тестовая оплата в Страйп'
currency = 'RUB'
stripe_tax_id = 'скопируйте сюда ваш tax ID'
payment_sum = 1000

Где найти tax ID:

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

Для рекуррентных платежей (подписки) нужно до объявления переменной 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, то значения в них ОБЯЗАТЕЛЬНО должны быть РАЗНЫМИ!

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 за 1 месяц и повторный платеж будет проведен с той же суммой по истечении 1 месяца:

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

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

Чтобы списывать платеж по подписке один раз в два, три, четыре месяца, передайте параметр interval_count:

stripe_subscription = 'My_subscription'

interval = 'month'

interval_count = 3

payment_sum = 90

Чтобы изменить интервал для оплаты подписки с месяца на неделю, то передайте в параметре interval слово week:

stripe_subscription = 'My_subscription'

interval = 'week'

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 (необязательный параметр)

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

Для получения идентификатора скидки создайте купон в личном кабинете в разделе ”coupons”.

При нажатии кнопки “New” откроется страница, где нужно указать:

  1. Name — название скидки;
  2. ID — идентификатор, генерируется автоматически,
  3. Type — вид скидки: в процентах или фиксированная сумма
  4. Duration — длительность скидки (разовая или продолжительная, например, для подписок) и другие параметры.

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

Нажмите на купон, чтобы скопировать ID купона:

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

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

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

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

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

stripe_subscription = 'Подписка премиум'
interval = 'month'
payment_description = 'Тестовая оплата в Страйп'
currency = 'USD'
coupon_id = 'ID вашего купона'
stripe_add_subscription_discount(stripe_subscription_id, coupon_id)
stripe_tax_id = 'ID налога'
payment_sum = 90

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

Подробнее о создании подписки расказали в разделе "Как настроить рекуррентные платежи"

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

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

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

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

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

Как получить идентификатор скидки, рассказали в разделе "Как создать купон и получить ID скидки".

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

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

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

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

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

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

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

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

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

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

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

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

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

Если что-то не работает, сравните данные с данными на официальном сайте.