Telegram yangilanib, unga Payments (Toʻlovlar) funksiyasi qoʻshilgandan soʻng, mazkur jarayon barcha tadbirkorlar va startapchilar uchun qiziqdek koʻrindi. Endilikda biznes egalari ana shu funksiya orqali telegramdan chiqmasdan toʻlovlarni qabul qilishlari, foydalanuvchilar esa messenjerning oʻzidayoq tolov qilishlari mumkin.

Xoʻsh, uni qanday qilib sozlash mumkin?

Bugungi maqolada bot ochish va uni toʻlovlar uchun sozlashni koʻrib chiqamiz. Kerakli botlar maqola davomida berib boriladi.

Bot yaratish

Avvalo, shunchaki BotFather-ga kiramiz va u orqali bot yaratamiz. Bu yerda hamma narsa oddiy, bu borada mazkur qoidalarga tayanish mumkin: https://core.telegram.org/bots…

Agar yuqoridagi havoladan hech narsani tushunmasangiz, unda ushbu ketma-ketlikni bajaring:

  1. BotFather botini toping va uni kontaktlar roʻyxatiga qoʻshing
  2. /help buyrugʻi yordamida mavjud bot buyruqlarini koʻrib chiqing
  3. /newbot-ni tanlang va keyin amallarni bajarish uchun koʻrsatmalarga amal qiling
  4. Bot yaratilgandan soʻng sizga botingizning kodida ishlatishingiz kerak boʻlgan token keladi. Uni saqlab qoʻyishingiz kerak.

Toʻlov funksiyasini ulash

  • BotFather botiga / mybots buyrugʻini kiriting
  • Yaratilgan botda Payments maydonini tanlang va, masalan, Stripe-ni bosing
  • Connect Stripe Test-ni tanlang va koʻrsatmalarga amal qiling
  • Jarayon tugaganidan soʻng, siz toʻlov tokenini olasiz, uni ham saqlashingiz kerak.

Botni ilova bilan bogʻlash

Biz buning uchun https://github.com/php-telegra… kutubxonasini tanladik. Oldingi bosqichdagi barcha tokenlar params.php konfiguratsiyasida koʻrsatilgan. Ular mana bunga oʻxshaydi:


return [

'bot_api_key' => '',

'bot_username' => '',

'bot_payment_token' => '',

];

Va kutubxona yordamida biz botning dastur bilan oʻzaro taʼsirini tashkil qildik:

$botApiKey = \Yii:$app→params['bot_api_key'];
$botUsername = \Yii:$app→params['bot_username'];

$telegram = new Telegram ($botApiKey, $botUsername);

$result = $telegram→setWebhook ($url);

if ($result→isOk ()) {

echo $result→getDescription ();

}

Muhim jihatlardan biri: bu jarayonni yakunlash uchun sizga domen va SSL sertifikati kerak. Biz misol tariqasida Vesta paneli va bepul SSL Letʼs Encrypt bilan VDS-ni oldik. Bot PHP-da ishlaydi, shuning uchun odatiy xosting ham boʻlaveradi.

Bot kodini yozish

Endi qiziqarli joyiga yetib keldik, yaʼni dasturlash qismiga. Ilova va botni ulab olgandan soʻng, “logika” yozishni boshlash mumkin.

Botlar bilan ishlash uchun siz turli xil buyruqlarni qoʻllab-quvvatlashni amalga oshirishingiz kerak. Bizning holatlarimizda faqat bittasini qoʻshdik — “Rahmat”. Mexanika juda ham oddiy: uni yozganingizda xabar paydo boʻladi va darhol hisob-faktura rasmiylashtiriladi.

public function execute (): ServerResponse

{

$message = $this→getChannelPost () ? $this→getChannelPost () : $this→getMessage ();
$text = $message→getText (true);

if ($text && mb_strpos (mb_strtolower ($text), 'Rahmat') ≠= false) {
//code…
}

return Request:emptyResponse ();

}

Endi, bizga kerak boʻlgan mahsulotni qoʻshish va ushbu hisob-fakturani foydalanuvchiga yuborishgina qoladi. Bularning barchasi allaqachon hujjatlar va qisqacha ishlatilgan maydonlarda mavjud.

$chatId = $message→getChat ()→getId ();

Request:sendInvoice ([
'chat_id' => $chatId,
'title' => 'Taom',
'description' => 'Hamkorlik uchun rahmat',
'payload' => uniqid (),
'provider_token' => \Yii:$app→params['bot_payment_token'],
'currency' => 'UZB',
'prices' => [
[
'label' => 'Choypuli',
'amount' => 10000,
],
],
'reply_to_message_id' => $message→getMessageId (),
'max_tip_amount' => 100000,
'suggested_tip_amounts' => [10000, 20000, 30000]
]);

Title-ga mahsulot nomini yozamiz, description-ga esa uning tavsifi, currency bu valyuta turi, price — bu narx. Aytgancha, u 100 ga boʻlinadi. Mahsulot narxini 100 soʻmdan koʻrsatish uchun siz 10 000 miqdorini belgilashingiz kerak, qiyin emas, shunday-a?

Yakuniy kodimiz quyidagicha boʻladi:

declare (strict_types=1);

namespace app\components\commands;

use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Entities\InlineKeyboard;
use Longman\TelegramBot\Entities\Keyboard;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Request;

class GenericMessageCommand extends SystemCommand
{

/**
* @var string
*/
protected $name = 'genericmessage';

/**
* @var string
*/
protected $description = '';

public function execute (): ServerResponse
{

$message = $this→getChannelPost () ? $this→getChannelPost () : $this→getMessage ();
$text = $message→getText (true);

if ($text && mb_strpos (mb_strtolower ($text), 'rahmat') ≠= false) {

$chatId = $message→getChat ()→getId ();

Request:sendInvoice ([
'chat_id' => $chatId,
'title' => 'Taom',
'description' => 'Hamkorlik uchun rahmat',
'payload' => uniqid (),
'provider_token' => \Yii:$app→params['bot_payment_token'],
'currency' => 'UZB',
'prices' => [
[
'label' => 'Choypuli',
'amount' => 10000,
],
],
'reply_to_message_id' => $message→getMessageId (),
'max_tip_amount' => 100000,
'suggested_tip_amounts' => [10000, 20000, 30000]
]);
}


return Request:emptyResponse ();
}
}


Payments 2.0 bilan bogʻliq muammolar

Payments 2.0 yaqinda chiqdi. Asosiy muammo toʻlov tizimlarining Telegram bilan oʻzaro aloqada boʻlmasligi. Biz sinov tariqasida ЮMoney-ni tanladik.

Bundan tashqari, depozitning eng kam miqdori 100 rubl (soʻm) ekanligini yodda tutish kerak. Shuningdek, mahsulotdagi maydonlarni sozlashning imkoni yoʻq. Masalan, sharhlar qoldirish funksiyasini.

Botni sozlagandan soʻng, chatingizga qoʻshing va unga administrator huquqini bering.

Namuna

Hozircha mana shular. Bizningcha, unchalik ham murakkab emas, axir tayyor shablon turibdi…

Agar siz ham Payments 2.0 yordamida bot oʻrnatgan boʻlsangiz, bu haqda oʻz tajribangiz bilan oʻrtoqlashing. Agarda xatolar yuzaga kelgan boʻlsa, izohlarda yozib qoldiring. Biz sizning qimmatli tajribangiz orqali maqolani yana-da toʻldirishimiz mumkin.

Sizningcha, Payments 2.0 qanday toʻlovlarni amalga oshirish uchun eng yaxshi tanlov?