Ushbu repository Telegram botining soddalashtirilgan implementatsiyasini o'z ichiga oladi. Bot foydalanuvchilarga Telegram stars orqali to'lovlarni amalga oshirish imkoniyatini beradi.
- Invoice yuborish: Foydalanuvchi Telegram chatida invoice (to'lov summasi) oladi.
- To'lovga ruxsat berish: Bot foydalanuvchidan to'lovni tasdiqlash uchun so'rovni qayta ishlaydi.
- To'lovni tasdiqlash: To'lov muvaffaqiyatli amalga oshirilganda, bot tafsilotlarni foydalanuvchiga yuboradi.
- Invoice yuborish: Foydalanuvchi
/buy
komandasi orqali invoice oladi. Invoice-da xizmat yoki premium a'zo bo'lish uchun narx va ma'lumotlar ko'rsatiladi. - To'lovga ruxsat berish: Foydalanuvchi to'lovni tasdiqlaganida, bot
pre_checkout_query
ni qayta ishlaydi va to'lovga ruxsat beradi. - To'lovni tasdiqlash: To'lov muvaffaqiyatli amalga oshgandan so'ng, bot foydalanuvchiga tasdiqlash xabarini yuboradi va tafsilotlarni saqlaydi.
bot.php
: Botning asosiy fayli. Barcha funksiyalar va yangilanishlarni qayta ishlashni o'z ichiga oladi.
function callTelegramApi(string $method, array $data = []) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.telegram.org/bot' . API_KEY . '/' . $method);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
Ushbu funksiya Telegram API bilan ishlashni soddalashtiradi. U API'ga so'rov yuboradi va javobni qaytaradi.
function sendInvoice($chat_id) {
$invoiceData = [
'chat_id' => $chat_id,
'title' => 'Premium A\'zolik',
'description' => 'Botimizning barcha funksiyalaridan foydalanish uchun premium a\'zolikni sotib oling.',
'payload' => 'invoice-payload-12345',
'currency' => 'XTR',
'prices' => [
['label' => 'Premium A\'zolik', 'amount' => 1000]
],
'start_parameter' => 'start-premium'
];
callTelegramApi('sendInvoice', $invoiceData);
}
Foydalanuvchiga premium a'zolik uchun invoice yuboradi.
if (isset($update['pre_checkout_query'])) {
$pre_checkout_query_id = $update['pre_checkout_query']['id'];
callTelegramApi('answerPreCheckoutQuery', [
'pre_checkout_query_id' => $pre_checkout_query_id,
'ok' => true
]);
}
Ushbu kod pre_checkout_query
so'rovini qayta ishlaydi va to'lovni davom ettirishga ruxsat beradi.
function processSuccessfulPayment($paymentData) {
$chat_id = $paymentData['chat']['id'];
$user_id = $paymentData['from']['id'];
$currency = $paymentData['successful_payment']['currency'];
$total_amount = $paymentData['successful_payment']['total_amount'] / 100;
$invoice_payload = $paymentData['successful_payment']['invoice_payload'];
$telegram_payment_id = $paymentData['successful_payment']['telegram_payment_charge_id'];
$provider_payment_id = $paymentData['successful_payment']['provider_payment_charge_id'];
callTelegramApi('sendMessage', [
'chat_id' => $chat_id,
'text' => "To'lov amalga oshirildi!\n"
. "Foydalanuvchi ID: $user_id\n"
. "Miqdor: $total_amount $currency\n"
. "Invoice: $invoice_payload\n"
. "Telegram Payment ID: $telegram_payment_id\n"
. "Provider Payment ID: $provider_payment_id"
]);
}
To'lov muvaffaqiyatli amalga oshganda, ushbu funksiya foydalanuvchiga to'lov haqida ma'lumot yuboradi.
- Foydalanuvchi invoice oladi:
/buy
komandasi orqali. - To'lovga ruxsat beriladi:
pre_checkout_query
so'rovi qayta ishlanadi. - To'lov muvaffaqiyatli amalga oshiriladi: Bot foydalanuvchiga tasdiqlash xabarini yuboradi.
API_KEY
nibot.php
fayliga qo'shing.- Serveringizga ushbu faylni joylashtiring.
- Webhook sozlamalarini Telegram API orqali sozlang.
/buy
komandasi orqali invoice jarayonini sinab ko'ring.
- Ushbu kod faqat o'quv maqsadida yozilgan. Real loyihalarda xavfsizlik choralari ko'rilishi tavsiya etiladi.
provider_token
kerak bo'lmagan holatlar uchun o'chirilgan.