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");
}
}
?>
Здравствуйте. Это какой код? Оплата через телеграм старс?
Umidjon4457 , да, да я уже все написал
Толку с этих помогаторов нет, форум вымер видно
Толку с этих помогаторов нет, форум вымер видно