Stripe

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

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

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

Шаг 1. Перейдите в раздел Developers -> API key:

Рис.1 Как найти раздел API

Шаг 2. Найдите и скопируйте Secret key:

Далее вам нужно задать URL для callback-ов. Это необходимо для того, чтобы бот получал уведомления об оплате.

Перейдите в раздел Webhooks и добавьте адрес для webhooks.

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

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

Шаг 2. Выберите события:

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

Шаг 4. Ознакомьтесь с типом запроса и нажмите "Continue":

Шаг 5. Укажите название и endpoint URL:

Укажите URL - https://chatter.salebot.pro/stripe_callback/result

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

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

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

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

Шаг 9. Далее нажмите на webhook, где вы выбрали все события:

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

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

В Mavibot откройте раздел "Acquiring" и выберите Stripe.

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

Нажмите "Save Settings".

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

Чтобы получить дополнительный callback, нам нужно подключить webhook в дополнение к уже существующему.

Укажите URL - https://chatter.salebot.pro/stripe_callback/<api_key>/charge_status

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

  • charge.failed

  • charge.pending

  • charge.succeeded

Добавляем webhook, полученный после сохранения, в поле Mavibot - Webhook key2:

stripe_invoice_id - ID транзакции, по которой callback об успешной оплате не был получен сразу после оплаты.

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

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

И нажмите "+ Add tax rates":

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

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

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

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

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

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

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

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

Ссылка выглядит так:

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

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

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

currency

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

payment_description

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

stripe_tax_id

Это ID налоговой ставки, настроенной в личном кабинете Stripe. Как ее настроить, описано в разделе "Как подключить налоги" ссылка "Как подключить налоги"

stripe_invoice_enable

Этот параметр указывает на необходимость сохранять инвойсы (счета, чеки). Введите любое значение — все необходимые документы затем будут доступны в вашем личном кабинете Stripe.

stripe_locale

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

stripe_payment_method_type

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

client_id = 1202020202 stripe_payment_method_type = "customer_balance"

stripe_additional_payment_method_type

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

coupon_id

ID скидочного купона

stripe_expired

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

stripe_automatic_tax

включение автоматического расчета и взимания налогов во время оплаты. Чтобы включить, передайте "1". Подробную информацию об этой настройке можно найти в документации Stripe. ссылка в документации 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: посмотреть на сайте

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

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

Далее в нужном месте выводим переменную 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’.

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

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

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

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

Возврат к настройкам обычных платежей

Чтобы вернуться к обычным платежам, присвойте переменной подписки пустую строку 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 - ID подписки stripe_customer_id - ID клиента в Stripe (необязательный параметр)

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

Чтобы получить ID скидки, создайте купон в личном кабинете в разделе ”coupons”. ссылка ”coupons”.

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

  1. Name — название скидки;

  2. ID — идентификатор, который генерируется автоматически.

  3. Type — тип скидки: процентная или фиксированная сумма

  4. Duration — длительность скидки (разовая или повторяющаяся, например, для подписок) и другие параметры.

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

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

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

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

В калькуляторе блока, перед объявлением payment_sum установите переменную coupon_id переменной присвойте ей 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 скидки, можно прочитать в разделе "Как создать купон и получить ID скидки". ссылка "Как создать купон и получить ID скидки".

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

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

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

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

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

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

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

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

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

Далее выполните настройку, описанную в начале этого руководства. Введите тестовый секретный ключ и добавьте адрес webhook в тестовое окружение.

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

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

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

Последнее обновление