ayushyadav7970824760/goldensellingstore_botPublic · Bot Template
AIThis Telegram store bot lets customers browse digital products and plans, apply coupons, add funds via UPI, and receive purchased keys. It includes a full admin panel for managing products, reordering items, setting reseller prices, viewing and removing key stock, configuring UPI payment details and update links, and checking user balances. Co-admins and resellers are supported, and support tickets are forwarded to the admin.
Commercedigital_storeadmin_panelupi_paymentsresellercouponskey_stock
146 commands0 envUpdated 2d agoCreated Sep 5, 2026
commands/_onBuyQR.js
javascript · 128 lines
1/**#command2name: /onBuyQR3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12try {13 if (!content) { 14 Api.sendMessage({ 15 chat_id: chat.chatid, 16 text: "❌ Error: No response from payment server. Please try again later.", 17 parse_mode: "HTML" 18 }); 19 return; 20 }21 22 var res;23 try {24 res = (typeof content === "object") ? content : JSON.parse(content);25 } catch (parseErr) {26 Api.sendMessage({27 chat_id: chat.chatid,28 text: "❌ <b>QR Parse Failed</b>\n<code>" + String(content).substring(0, 500) + "</code>",29 parse_mode: "HTML"30 });31 return;32 }33 34 if (!res || res.status !== "success" || !res.data) {35 Api.sendMessage({36 chat_id: chat.chatid,37 text: "<tg-emoji emoji-id='6219547832169273793'>❌</tg-emoji><b>QR Generation Failed</b>\n<code>" + JSON.stringify(res).substring(0, 500) + "</code>",38 parse_mode: "HTML"39 });40 return;41 }42 43 var order_id = res.data.order_id || res.data.orderid;44 var qr = res.data.qr_url || res.data.qrurl;45 var expire = res.data.expires_at_ist || res.data.expiresatist || "5 Minutes";46 var userId = user.telegramid;47 48 var price = Number(User.getProperty("buy_price") || 0);49 var userBal = Number(Libs.ResourcesLib.userRes("balance").value() || 0);50 var totalUserBal = userBal;51 52 var needpay = Number(User.getProperty("buy_needpay") || (price > totalUserBal ? price - totalUserBal : 0));53 var prodName = User.getProperty("buy_prod_name") || "Product";54 55 try {56 var genMsgid = Bot.getProperty("gen_msg_id_" + userId);57 if (genMsgid) {58 Api.deleteMessage({ chat_id: chat.chatid, message_id: genMsgid });59 Bot.setProperty("gen_msg_id_" + userId, null, "string");60 }61 } catch (e) {}62 63 var gatewayMsg = 64 "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji><b>PAYMENT GATEWAY</b>\n\n" +65 "<tg-emoji emoji-id='6147767796097884213'>🏷️</tg-emoji><b>Product:</b> " + prodName + "\n" +66 "<tg-emoji emoji-id='6041705726206808304'>💰</tg-emoji><b>Price:</b> ₹" + price.toFixed(2) + "\n" +67 "<tg-emoji emoji-id='5348392971207194994'>💳</tg-emoji><b>Balance:</b> ₹" + totalUserBal.toFixed(2) + "\n" +68 "<tg-emoji emoji-id='619491118249881916'>📥</tg-emoji><b>Pay Now:</b> ₹" + needpay.toFixed(2) + "\n" +69 "<tg-emoji emoji-id='6266866272848321043'>⏳</tg-emoji><b>Expire Time:</b> <code>" + expire + "</code>\n\n" +70 "<tg-emoji emoji-id='5330237710655306682'>⚡</tg-emoji><b>Scan QR & pay exact amount</b>\n";71 72 var inlineButtons = [73 [74 {75 text: "I have paid",76 callback_data: "/check_buy " + order_id,77 style: "success",78 icon_custom_emoji_id: "5330237710655306682"79 },80 {81 text: "Cancel Order",82 callback_data: "/cancel_buy " + order_id,83 style: "danger",84 icon_custom_emoji_id: "6219547832169273793"85 }86 ]87 ];88 89 var sentQrMsg;90 try {91 sentQrMsg = Api.sendPhoto({92 chat_id: chat.chatid,93 photo: qr,94 caption: gatewayMsg,95 parse_mode: "HTML",96 reply_markup: JSON.stringify({ inline_keyboard: inlineButtons })97 });98 } catch (photoErr) {99 Api.sendMessage({100 chat_id: chat.chatid,101 text: "❌ <b>sendPhoto failed</b>\nQR URL: <code>" + qr + "</code>\nError: <code>" + photoErr.message + "</code>",102 parse_mode: "HTML"103 });104 return;105 }106 107 try {108 if (sentQrMsg) {109 var qrMsgId = sentQrMsg.result ? sentQrMsg.result.message_id : sentQrMsg.message_id;110 if (qrMsgId) {111 Bot.setProperty("buy_qr_msg_id_" + userId, qrMsgId, "string");112 User.setProperty("buy_qr_msg_id_" + userId, qrMsgId, "string");113 User.setProperty("buy_pending_order_id", order_id, "string");114 Bot.setProperty("buy_qr_watch_order_" + userId, order_id, "string");115 User.setProperty("buy_qr_watch_order_" + userId, order_id, "string");116 Bot.setProperty("buy_qr_created_ts_" + userId, String(Date.now()), "string");117 }118 }119 } catch (e) {}120 // ⏰ Remove unpaid purchase QR after 5 minutes.121 try { HTTP.get({ url: "https://httpbin.org/delay/300?buy_order=" + encodeURIComponent(order_id), success: "/onQRExpire", error: "/onQRExpire" }); } catch (expiryErr) {}122} catch (err) {123 Api.sendMessage({124 chat_id: chat.chatid,125 text: "⚠️ <b>System Error:</b> <code>" + (err && err.message ? err.message : String(err)) + "</code>",126 parse_mode: "HTML"127 });128}