Tipy

Stručně o platbách přes boty v Telegramu / Habru

Už žádné přepínání mezi různými aplikacemi nebo weby za účelem nákupu. Teď to vše je možné přímo v košíku, platforma, která je již součástí každodenního života milionů lidí.

Platby robotů umožňují uživatelům nakupovat přímo z rozhraní chatu. A pro samotné vývojáře je možné do bota integrovat funkce elektronického obchodování, což uživatelům umožňuje nakupovat zboží nebo služby, aniž by opustili košík.

Platby jsou zpracovávány prostřednictvím důvěryhodných a spolehlivých poskytovatelů plateb, kteří zajišťují bezpečné transakce. Uživatelé se nemusí obávat o bezpečnost svých finančních dat, protože Telegram neukládá informace o kartě. Vše, co musí udělat, je vybrat položku, kliknout na tlačítko koupit a budou přesměrováni na stránku zabezpečeného platebního systému, kde dokončí transakci.

Vlastnosti plateb 2.0

Telegram poprvé představil platby roboty v roce 2017. Tato funkce umožňovala robotům odesílat faktury uživatelům. Uživatelé mohli zadávat údaje o své kartě přímo do chatu a nakupovat.

V těchto raných verzích Platební funkce byly značně omezené. Například, neexistovala podpora online režimu, což znamenalo, že všechny platební transakce musely probíhat uvnitř chatu s robotem.

Platby byly zpracovány prostřednictvím poskytovatelů plateb třetích stran, jako je Stripe, Yandex.Money a další. Telegram nezpracovával platby přímo, ale poskytoval pouze platformu pro jejich integraci.

Platby 2.0 poskytuje pokročilé funkce pro zasílání faktur. Vývojáři nyní mohou na fakturách uvádět další informace, jako jsou fotografie produktů, popisy, a dokonce přímo na faktuře poskytovat zákazníkům různé možnosti produktů nebo služeb. To ano nákupní proces vizuálnější a pohodlnější.

Nejúžasnější funkcí plateb 2.0 je podpora inline režimu. To uživatelům umožňuje rychle a snadno nakupovat při chatování v jakémkoli chatu nebo skupině, pomocí inline dotazů. Vývojáři zase dostávají příležitost vytvářet dynamičtější a poutavější nákupní scénáře.

Vývojáři mohou také implementovat funkci přijímání tipů. To otevírá další zdroj příjmů pro tvůrce obsahu a služby a dává uživatelům příležitost ocenit jejich práci malými finančními příspěvky.

Platby 2.0 se zaměřují na zlepšení uživatelské zkušenosti. Uživatelé si mohou uložit údaje o své platební kartě pro budoucí nákupy v Telegramu, čímž je proces nákupu ještě rychlejší a pohodlnější.

Rozšířeny byly také platební oblasti.

Kroky platebního procesu

Vytvořte si účet

Vytvoření faktury se provádí pomocí metody sendInvoice, která je součástí Bot API.

Metoda sendInvoice se používá k zasílání faktur uživatelům. Tato metoda vyžaduje řadu parametrů včetně ID chatu, názvu faktury, popisu, užitečného zatížení, poskytovatele zpracování plateb, informací o ceně a měně.

Parametry API

chat_id : Jedinečný identifikátor uživatele nebo skupiny.

title : Název produktu nebo služby.

popis : Popis produktu nebo služby.

užitečné zatížení: Jedinečný identifikátor transakce.

provider_token : Token přijatý od poskytovatele plateb.

start_parameter : Řetězcový parametr pro přímé odkazy.

měna : Měna transakce.

Ceny : Pole cen, jejichž každý prvek obsahuje štítek (název) a částku (cena v nejmenších jednotkách měny, jako jsou kopejky nebo centy).

Přečtěte si více
Krvavý průjem: Příčiny a léčba

Řekněme, že chcete poslat fakturu za nákup knihy. Váš kód může vypadat nějak takto:

from telegram import LabeledPrice, Bot bot = Bot(token='ВАШ_TELEGRAM_BOT_TOKEN') chat_id = 'CHAT_ID_ПОЛЬЗОВАТЕЛЯ' title = 'Название Книги' description = 'Описание книги' payload = 'Уникальный_Payload_Транзакции' provider_token = 'TOKEN_ПЛАТЕЖНОГО_ПРОВАЙДЕРА' start_parameter = 'start' currency = 'RUB' # Валюта prices = [LabeledPrice('Цена Книги', 10000)] # Цена в копейках bot.send_invoice(chat_id, title, description, payload, provider_token, start_parameter, currency, prices)

Výběr způsobu platby uživatelem

Po obdržení faktury si uživatel vybere způsob platby. Telegram nezpracovává platby od uživatelů přímo, ale místo toho využívá různé poskytovatele plateb po celém světě. Tito poskytovatelé jsou odpovědní za zpracování a uchovávání všech citlivých údajů, jako jsou údaje o kreditních kartách. Telegram ani vývojáři botů nemají k těmto informacím přístup. Telegram v současné době podporuje platby z více než 200 zemí prostřednictvím řady poskytovatelů plateb, včetně Stripe, YooMoney, Sberbank a dalších.

Každý platební systém poskytuje jedinečný token (token poskytovatele), který se používá při vytváření faktur pomocí robota.

Zpracování plateb

Když uživatel potvrdí platební údaje, robot obdrží dotaz před pokladnou ( pre_checkout_query ). Robot by měl na tento požadavek odpovědět pomocí metody answerPreCheckoutQuery, aby potvrdil, že všechny platební údaje jsou správné.

Po úspěšném dokončení platby je robotovi odeslána aktualizace potvrzující úspěšnou transakci. Tato aktualizace obsahuje jedinečný identifikátor transakce ( telegram_payment_charge_id ) a identifikátor transakce poskytovatele ( provider_payment_charge_id ).

from telegram.ext import PreCheckoutQueryHandler def pre_checkout_callback(update, context): query = update.pre_checkout_query if query.invoice_payload != 'Ожидаемый_Payload': # Ответить с ошибкой, если payload не совпадает query.answer(ok=False, error_message="Ошибка в данных платежа.") else: # Подтвердить предпроверку query.answer(ok=True) # Добавить обработчик PreCheckoutQueryHandler в диспетчер dispatcher.add_handler(PreCheckoutQueryHandler(pre_checkout_callback))

V příkladu funkce pre_checkout_callback zkontroluje fakturu_payload a potvrdí předběžnou kontrolu platby.

Přijímat oznámení o stavu platby

Jakmile uživatel dokončí proces platby, robot obdrží oznámení o stavu platby. Toto oznámení obsahuje všechny podrobnosti transakce, včetně ID platby.

Robot musí potvrdit přijetí oznámení o platbě, což je poslední krok v procesu.

Dokončení transakce

Když je platba úspěšně zpracována poskytovatelem plateb, robot obdrží od Telegramu oznámení o úspěšné platbě. Toto oznámení obsahuje všechny podrobnosti o transakci, včetně ID plateb a částky.

Po úspěšném zpracování platby je důležité odeslat uživateli potvrzení, jako je zpráva s poděkováním nebo informace o doručení.

Informace o transakcích můžete zaznamenat do databáze pro další zpracování a vykazování.

Platební API

Podívejme se na pár funkcí z API. Podrobnější dokumentaci naleznete na oficiální stránce API.

sendInvoice se používá k zasílání faktur uživatelům. Zde je příklad požadavku JSON:

createInvoiceLink se používá k vytvoření odkazu na fakturu. Příklad požadavku:

Pokud jste odeslali fakturu s požadavkem na dodací adresu, odpovězte pomocí metody answerShippingQuery. Příklad:

Poté, co uživatel potvrdí své platební a dodací údaje, musíte k odpovědi na požadavek použít answerPreCheckoutQuery. Příklad:

Označená cena: Tento objekt se používá k určení ceny produktu nebo služby. Například:

Možnost dopravy: Popisuje možnost dopravy produktu. Příklad:

Přečtěte si více
Artróza čelistního kloubu

Úspěšná platba: Obsahuje potvrzení o úspěšné platbě. Příklad:

O YuKassa

Yukassa je dobrá volba pro platby v robotech. Předpokládejme, že jste se již zaregistrovali u ЮKassa a máte všechny potřebné klíče a tokeny. V ЮKassa a získejte ID obchodu a tajný klíč.

Když si uživatel vybere něco k nákupu, vytvoříte fakturu v ЮKassa a pošlete uživateli tlačítko k zaplacení:

import requests from telegram import InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import Updater, CommandHandler, CallbackQueryHandler SHOP_ID = 'your_shop_id' SECRET_KEY = 'your_secret_key' BOT_TOKEN = 'your_bot_token' def start(update, context): # Ваш код для отображения товаров и/или услуг def create_invoice(update, context): chat_id = update.message.chat_id # Сумма и описание покупки amount = description = 'Описание покупки' headers = < 'Idempotence-Key': 'unique_key', # Уникальный ключ для предотвращения дублирования транзакций 'Content-Type': 'application/json', 'Authorization': 'Basic ' + SHOP_ID + ':' + SECRET_KEY >payload = < 'amount': amount, 'capture': True, 'confirmation': < 'type': 'embedded' >, 'description': description > response = requests.post('https://payment.yandex.net/api/v3/payments', json=payload, headers=headers) payment_info = response.json() # Отправка сообщения с кнопкой для оплаты keyboard = [[InlineKeyboardButton("Оплатить", url=payment_info['confirmation']['confirmation_url'])]] reply_markup = InlineKeyboardMarkup(keyboard) update.message.reply_text('Пожалуйста, оплатите ваш заказ:', reply_markup=reply_markup) def main(): updater = Updater(BOT_TOKEN, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("start", start)) dp.add_handler(CommandHandler("buy", create_invoice)) updater.start_polling() updater.idle() if __name__ == '__main__': main()

Abyste mohli dostávat upozornění o stavu plateb, musíte si také nastavit webhook v ЮKassa. Váš server musí tato oznámení přijímat a zpracovávat.

Funkce s platbou v telegramu poskytuje nejen pohodlný způsob nákupu a platby za služby, ale také výrazně rozšiřuje možnosti použití Telegramu jako nástroje pro podnikání.

Doporučuji také, abyste si přečetli naše další články o telegramových robotech:

  1. Škálování telegramových robotů pomocí příkladu aiogramu
  2. Jak spravovat stav telegramového robota
  3. Vývoj vysoce výkonné mezipaměti založené na Redis v telegramovém botě
  4. 9 architektonických anti-vzorů při vývoji telegramových botů v Pythonu
  5. Jak vylepšit svého telegramového robota? Samozřejmě k tomu přidejte analytiku

A praktické dovednosti v aplikační architektuře můžete tradičně získat prostřednictvím online kurzů od mých kolegů z OTUS. Přejděte do katalogu a vyberte si vhodný kurz.

  • krajta
  • telegramové roboty
  • programování

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Back to top button