tarunpoonia905/OfcDevShopBotPublic · Bot Template

ProfileTelegram

AIDEV SHOP appears to be a Telegram automation bot. Commands include /confirm_delete_stock, /addstock_id, /extkey_menu, /partner_api, /apidelete, /buy_hack_cat, /admin_manage_products, /check_buy. Observed in code: messaging, keyboards, payments, libs, web, http, games.

Utilityutility
228 commands0 envUpdated 12d agoCreated Oct 18, 2026
Back to folder

commands/_onBuyQR.js

javascript · 424 lines

Raw
1/**#command2name: /onBuyQR3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12try {13  function __qrSent(r) {14    if (!r) return null;15    if (r.ok === false || r.error || r.error_code) return null;16    return r;17  }18 19  function __upiIntent(upiX, amountX, orderIdX, nameX) {20    return "upi://pay?pa=" + encodeURIComponent(upiX) +21      "&pn=" + encodeURIComponent(nameX || "DEV SHOP BOT") +22      "&am=" + encodeURIComponent(Number(amountX || 0).toFixed(2)) +23      "&cu=INR&tn=" + encodeURIComponent(String(orderIdX || ""));24  }25 26  function __qrImageFromIntent(intent) {27    return "https://api.qrserver.com/v1/create-qr-code/?size=600x600&margin=12&data=" +28      encodeURIComponent(intent);29  }30 31  function __sendQrPhoto(chatIdX, rawRes, orderIdX, amountX, caption, kbJson) {32    var upiX = String(33      Bot.getProperty("paytm_upi") ||34      Bot.getProperty("payment_upi_id") || ""35    ).trim();36 37    if (!upiX) upiX = "paytm.s1zxmoz@pty";38 39    var nameX = String(Bot.getProperty("store_name") || "DEV SHOP BOT");40    var intent = "";41 42    try {43      var rr = rawRes || {};44      var dd = (rr.data && typeof rr.data === "object") ? rr.data : {};45 46      var cands = [47        dd.upi_url, dd.upi_link, dd.upi_intent, dd.intent,48        dd.intent_url, dd.qr_string, dd.qr_data, dd.upi,49        rr.upi_url, rr.upi_link, rr.upi_intent, rr.intent,50        rr.intent_url, rr.qr_string, rr.qr_data, rr.upi51      ];52 53      for (var ci = 0; ci < cands.length; ci++) {54        if (cands[ci] && /^upi:\/\//i.test(String(cands[ci]).trim())) {55          intent = String(cands[ci]).trim();56          break;57        }58      }59    } catch (e0) {}60 61    if (!intent) intent = __upiIntent(upiX, amountX, orderIdX, nameX);62 63    // Multiple QR providers - agar ek fail ho to dusra try karega64    var urls = [65      "https://api.qrserver.com/v1/create-qr-code/?size=600x600&margin=12&data=" + encodeURIComponent(intent),66      "https://quickchart.io/qr?size=600&margin=12&text=" + encodeURIComponent(intent),67      "https://chart.googleapis.com/chart?chs=600x600&cht=qr&chl=" + encodeURIComponent(intent)68    ];69 70    var lastErr = "";71 72    for (var i = 0; i < urls.length; i++) {73      try {74        var r = Api.sendPhoto({75          chat_id: chatIdX,76          photo: urls[i],77          caption: caption,78          parse_mode: "HTML",79          reply_markup: kbJson80        });81 82        var ok = __qrSent(r);83        if (ok) return { msg: ok, via: i, urlUsed: urls[i] };84 85        lastErr = (r && (r.description || r.error))86          ? String(r.description || r.error)87          : "empty response";88      } catch (e1) {89        lastErr = String(e1 && e1.message || e1);90      }91    }92 93    return { msg: null, err: lastErr, upi: upiX, intent: intent };94  }95 96  function __qrFallbackText(chatIdX, caption, kbObj, info, orderIdX, amountX, uidX) {97    var upiX = info.upi ||98      (Bot.getProperty("paytm_upi") ||99       Bot.getProperty("payment_upi_id") ||100       "paytm.s1zxmoz@pty");101 102    var upiLink = info.intent ||103      __upiIntent(104        upiX,105        amountX,106        orderIdX,107        String(Bot.getProperty("store_name") || "DEV SHOP BOT")108      );109 110    var linkRow = [{111      text: "Pay via UPI App",112      url: upiLink,113      style: "success",114      icon_custom_emoji_id: "5330237710655306682"115    }];116 117    Api.sendMessage({118      chat_id: chatIdX,119      parse_mode: "HTML",120      text: caption,121      reply_markup: JSON.stringify({122        inline_keyboard: kbObj.concat([linkRow])123      })124    });125 126    try {127      Api.sendMessage({128        chat_id: String(Bot.getProperty("owner_id") || "7127818616"),129        parse_mode: "HTML",130        text: "QR photo failed (user " + uidX +131          ", order " + orderIdX + ")\nError: " +132          String(info.err || "").slice(0, 200)133      });134    } catch (e2) {}135  }136 137  if (!content) {138    Api.sendMessage({139      chat_id: chat.chatid,140      text: "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji> <b>Error:</b> No response from payment server. Please try again later.",141      parse_mode: "HTML"142    });143    return;144  }145 146  var res;147 148  try {149    res = (typeof content === "object") ? content : JSON.parse(content);150  } catch (parseErr) {151    Api.sendMessage({152      chat_id: chat.chatid,153      text: "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji> <b>QR Parse Failed</b>\n" +154        String(content).substring(0, 500),155      parse_mode: "HTML"156    });157    return;158  }159 160  var root = res || {};161  var __rawRes = root;162  var payload = root.data || root.result || root.payment || root;163 164  var apiStatus = String(165    root.status || root.payment_status || payload.status || ""166  ).toLowerCase();167 168  var ok = root.success === true ||169    payload.success === true ||170    apiStatus === "success" ||171    apiStatus === "created" ||172    apiStatus === "pending" ||173    apiStatus === "ok";174 175  var orderValue = payload.order_id || payload.orderid ||176    payload.orderId || root.order_id || root.orderid || root.orderId;177 178  var amountValue = payload.amount || root.amount;179 180  var __lockedAmountForQr = Number(181    User.getProperty("buy_needpay") ||182    User.getProperty("buy_expected_amount") || 0183  );184 185  var __upiForQr = String(186    Bot.getProperty("paytm_upi") ||187    Bot.getProperty("payment_upi_id") || ""188  ).trim();189 190  var __fallbackIntent = (__upiForQr && __lockedAmountForQr > 0)191    ? __upiIntent(192        __upiForQr,193        __lockedAmountForQr,194        orderValue || "",195        String(Bot.getProperty("store_name") || "DEV SHOP BOT")196      )197    : "";198 199  if (ok && orderValue) {200    res = {201      status: "success",202      data: {203        order_id: String(orderValue),204        qr_url: __fallbackIntent || "upi-intent",205        amount: amountValue || __lockedAmountForQr206      }207    };208  } else {209    res = { status: "error", data: payload, original: root };210  }211 212  if (!res || res.status !== "success" || !res.data || !res.data.order_id) {213    var debugResponse = "";214 215    try {216      debugResponse = JSON.stringify(res.original || res).substring(0, 700);217    } catch (e) {218      debugResponse = String(res);219    }220 221    Api.sendMessage({222      chat_id: chat.chatid,223      text: "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji> <b>Paytm QR response incomplete</b>\nPayment server did not return an order ID.\n" +224        debugResponse,225      parse_mode: "HTML"226    });227    return;228  }229 230  var order_id = res.data.order_id;231  var userId = user.telegramid;232 233  try {234    User.setProperty("buy_pending_order_id", String(order_id), "string");235 236    User.setProperty(237      "buy_expected_amount",238      Number(User.getProperty("buy_needpay") ||239             User.getProperty("buy_expected_amount") || 0),240      "number"241    );242 243    Bot.setProperty("buy_pending_order_" + userId, String(order_id), "string");244  } catch (persistErr) {}245 246  try {247    var __gw = Bot.getProperty("pending_gateway_" + userId) ||248      User.getProperty("pending_gateway_" + userId) ||249      User.getProperty("buy_selected_gateway") || "paytm";250 251    Bot.setProperty("pay_gw_" + order_id, String(__gw).toLowerCase(), "string");252 253    var __lockedBuyAmount = Number(254      User.getProperty("buy_needpay") ||255      User.getProperty("buy_expected_amount") || 0256    );257 258    Bot.setProperty("pay_order_amount_" + order_id, __lockedBuyAmount, "number");259    User.setProperty("pay_order_amount_" + order_id, __lockedBuyAmount, "number");260  } catch (__gwBindErr) {}261 262  var price = Number(User.getProperty("buy_price") || 0);263  var userBal = Number(Libs.ResourcesLib.userRes("balance").value() || 0);264  var bonusBal = Number(Bot.getProperty("balance" + userId) || 0);265  var totalUserBal = userBal + bonusBal;266 267  var needpay = Number(268    User.getProperty("buy_needpay") ||269    User.getProperty("buy_expected_amount") ||270    (price > totalUserBal ? price - totalUserBal : 0)271  );272 273  User.setProperty("buy_expected_amount", Number(needpay.toFixed(2)), "number");274 275  var prodName = User.getProperty("buy_prod_name") || "Product";276 277  var __planLabel = String(278    User.getProperty("buy_selected_plan") ||279    User.getProperty("buy_plan_name") ||280    User.getProperty("buy_plan_label") ||281    User.getProperty("buy_plan") ||282    ""283  ).trim();284 285  var __daysRaw = User.getProperty("buy_plan_days");286 287  if (__daysRaw === undefined || __daysRaw === null || __daysRaw === "") {288    __daysRaw = User.getProperty("buy_plan_duration");289  }290 291  if (__daysRaw === undefined || __daysRaw === null || __daysRaw === "") {292    __daysRaw = User.getProperty("buy_plan_value");293  }294 295  var planDays = String(296    (__daysRaw !== undefined && __daysRaw !== null && __daysRaw !== "")297      ? __daysRaw298      : "1"299  ).trim();300 301  var __unitRaw = User.getProperty("buy_plan_unit");302 303  if (__unitRaw === undefined || __unitRaw === null || __unitRaw === "") {304    __unitRaw = User.getProperty("buy_plan_duration_unit");305  }306 307  var planUnit = String(__unitRaw || "").trim().toUpperCase();308 309  if (!planUnit || planUnit === "UNDEFINED" || planUnit === "NULL") {310    var __combinedPlan = (__planLabel + " " + planDays).toUpperCase();311 312    if (/\bHOURS?\b|\bHOUR\b|\bHR\b|\bHRS\b/.test(__combinedPlan)) {313      planUnit = "HOUR";314    } else if (/\bDAYS?\b/.test(__combinedPlan)) {315      planUnit = "DAY";316    } else if (/\bWEEKS?\b/.test(__combinedPlan)) {317      planUnit = "WEEK";318    } else if (/\bMONTHS?\b/.test(__combinedPlan)) {319      planUnit = "MONTH";320    } else if (/\bYEARS?\b/.test(__combinedPlan)) {321      planUnit = "YEAR";322    } else {323      planUnit = "DAY";324    }325  }326 327  planUnit = planUnit.replace(/S$/, "");328 329  if (!planDays || planDays === "undefined" || planDays === "null") {330    var __durationMatch = __planLabel.match(/(\d+(?:\.\d+)?)/);331    if (__durationMatch) planDays = __durationMatch[1];332  }333 334  try {335    var genMsgid = Bot.getProperty("gen_msg_id_" + userId);336 337    if (genMsgid) {338      Api.deleteMessage({339        chat_id: chat.chatid,340        message_id: genMsgid341      });342 343      Bot.setProperty("gen_msg_id_" + userId, null, "string");344    }345  } catch (e) {}346 347  var sep = "┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈";348 349  var gatewayMsg = "╔══════════════════════╗\n" +350    "   <tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji> <b>UPI QR PAYMENT</b>\n" +351    "╚══════════════════════╝\n\n" +352    sep + "\n\n" +353    "<tg-emoji emoji-id='6147767796097884213'>🏷️</tg-emoji> <b>Product:</b> <code>" + prodName + "</code>\n" +354    "<tg-emoji emoji-id='5348392971207194994'>🎁</tg-emoji> <b>Plan:</b> <code>" + planDays + " " + planUnit + "</code>\n\n" +355    "<tg-emoji emoji-id='6041705726206808304'>💰</tg-emoji> <b>Product Price:</b> ₹" + price.toFixed(2) + "\n" +356    "<tg-emoji emoji-id='5330237710655306682'>⚡</tg-emoji> <b>Amount To Pay:</b> ₹" + needpay.toFixed(2) + "\n\n" +357    sep + "\n\n" +358    "<tg-emoji emoji-id='5330237710655306682'>⚡</tg-emoji> <b>Order ID:</b>\n<code>" + order_id + "</code>\n\n" +359    sep + "\n\n" +360    "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji> <b>Scan the QR below & pay exact amount</b>";361 362  var inlineButtons = [363    [{364      text: "I have paid",365      callback_data: "/check_buy " + order_id,366      style: "success",367      icon_custom_emoji_id: "5330237710655306682"368    }],369    [{370      text: "Cancel Order",371      callback_data: "/cancel_buy " + order_id,372      style: "danger",373      icon_custom_emoji_id: "6219547832169273793"374    }]375  ];376 377  var sentQrMsg = null;378 379  var __qrRes = __sendQrPhoto(380    chat.chatid,381    __rawRes,382    order_id,383    needpay,384    gatewayMsg,385    JSON.stringify({ inline_keyboard: inlineButtons })386  );387 388  if (__qrRes.msg) {389    sentQrMsg = __qrRes.msg;390  } else {391    __qrFallbackText(392      chat.chatid,393      gatewayMsg,394      inlineButtons,395      __qrRes,396      order_id,397      needpay,398      userId399    );400    return;401  }402 403  try {404    if (sentQrMsg) {405      var qrMsgId = sentQrMsg.result406        ? sentQrMsg.result.message_id407        : sentQrMsg.message_id;408 409      if (qrMsgId) {410        Bot.setProperty("buy_qr_msg_id_" + userId, qrMsgId, "string");411        User.setProperty("buy_pending_order_id", order_id, "string");412        User.setProperty("buy_expected_amount", needpay, "number");413      }414    }415  } catch (e) {}416 417} catch (err) {418  Api.sendMessage({419    chat_id: chat.chatid,420    text: "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji> <b>System Error:</b> " +421      (err && err.message ? err.message : String(err)),422    parse_mode: "HTML"423  });424}
commands/_onBuyQR.js · tarunpoonia905/OfcDevShopBot · TeleDevs