PHP, MySQL | Telegram Stars
Кто работал с платежами с ботах через Telegram Stars ? Не понимаю, почему списание не происходит при оплате Вот код php:
php
<?php $botToken = ''; $apiURL = "https://api.telegram.org/bot" . $botToken; $productTitle = "Звезда"; $productDescription = "Тестовый товар - 1 звезда"; $productPayload = "star_1"; $productPrice = 1; $currency = 'XTR'; // Валюта $providerToken = ""; function telegramRequest($method, $params = []) { global $apiURL; $url = $apiURL . "/" . $method; if(!empty($params)){ $url .= '?' . http_build_query($params); } $response = file_get_contents($url); return json_decode($response, true); } function sendMessage($chatId, $text, $replyMarkup = null) { $params = [ 'chat_id' => $chatId, 'text' => $text, 'parse_mode' => 'HTML' ]; if($replyMarkup) { $params['reply_markup'] = json_encode($replyMarkup); } telegramRequest('sendMessage', $params); } function createInvoice($chatId) { global $productTitle, $productDescription, $productPayload, $productPrice, $currency, $providerToken; $prices = [ ['label' => '1 звезда', 'amount' => $productPrice] ]; $params = [ 'chat_id' => $chatId, 'title' => $productTitle, 'description' => $productDescription, 'payload' => $productPayload, 'provider_token' => $providerToken, 'currency' => $currency, 'photo_url' => "https://img.freepik.com/free-photo/holographic-reminder-with-star-shape-washi-tape_53876-137585.jpg", 'photo_width' => 3600, 'photo_height' => 2338, 'photo_size' => 262000, 'is_flexible' => false, 'prices' => json_encode($prices), 'start_parameter' => "one-star" ]; return telegramRequest('sendInvoice', $params); } function answerPreCheckoutQuery($preCheckoutQueryId, $ok = true, $errorMessage = null) { $params = [ 'pre_checkout_query_id' => $preCheckoutQueryId, 'ok' => $ok ? true : false, ]; if($errorMessage) { $params['error_message'] = $errorMessage; } telegramRequest('answerPreCheckoutQuery', $params); } $update = json_decode(file_get_contents('php://input'), true); if (isset($update['message'])) { $message = $update['message']; $chatId = $message['chat']['id']; $text = $message['text'] ?? ''; if ($text === '/start') { $keyboard = [ 'inline_keyboard' => [ [ ['text' => 'Купить 1 звезду ⭐', 'callback_data' => 'buy_star'], ] ] ]; sendMessage($chatId, 'Привет! Нажми кнопку для покупки 1 звезды.', $keyboard); } } elseif (isset($update['callback_query'])) { $callbackQuery = $update['callback_query']; $chatId = $callbackQuery['message']['chat']['id']; $data = $callbackQuery['data']; if($data === 'buy_star') { createInvoice($chatId); } telegramRequest('answerCallbackQuery', ['callback_query_id' => $callbackQuery['id']]); } elseif(isset($update['pre_checkout_query'])) { $preCheckoutQuery = $update['pre_checkout_query']; $preCheckoutQueryId = $preCheckoutQuery['id']; $payload = $preCheckoutQuery['payload']; if ($payload === $productPayload) { answerPreCheckoutQuery($preCheckoutQueryId); } else { answerPreCheckoutQuery($preCheckoutQueryId, false, "Некорректный payload"); } } elseif (isset($update['message']['successful_payment'])) { $successfulPayment = $update['message']['successful_payment']; $chatId = $update['message']['chat']['id']; $payload = $successfulPayment['invoice_payload']; $telegramPaymentChargeId = $successfulPayment['telegram_payment_charge_id']; if($payload === $productPayload) { sendMessage($chatId, "Спасибо за покупку звезды!\nId транзакции: ".$telegramPaymentChargeId); } else { sendMessage($chatId, "Ошибка! Неизвестный payload"); } } ?>
Здравствуйте. Это какой код? Оплата через телеграм старс?
Толку с этих помогаторов нет, форум вымер видно