You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Telegram Bot向Web App转发用户ID及购物车数据?

解决方案:Telegram Bot 传递用户ID与购物车数据至Web App服务器

1. 直接通过Telegram Web App获取已验证的用户ID

Telegram Web App加载时会自动携带初始化数据,其中包含经过官方验证的用户信息,你可以直接从Web App前端提取用户ID,再传递给服务器:

  • 前端(Web App)示例代码:
// 直接获取已验证的用户ID
const userId = window.Telegram.WebApp.user.id;

// 将用户ID与修改后的购物车/地址数据一同提交到服务器
fetch('https://your-server.com/update-cart', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    user_id: userId,
    updated_cart: [
      { product_id: 'prod_001', quantity: 2 },
      { product_id: 'prod_003', quantity: 1 }
    ],
    shipping_address: {
      name: '张三',
      phone: '13xxxxxxxxx',
      detail: 'XX市XX区XX路XX号'
    }
  })
});

2. Bot传递购物车数据的两种可行方式

方式一:启动Web App时携带购物车关联标识

当用户在Bot中完成加购操作后,Bot生成一个关联用户购物车的标识(可直接用用户ID,或加密后的会话ID),通过start_param参数嵌入Web App启动链接:

  • Bot端示例代码(Python):
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CallbackContext

def add_to_cart(update, context: CallbackContext):
    user_id = update.effective_user.id
    # 先将商品数据存入你的服务器数据库(关联user_id)
    # ...(此处省略数据库写入逻辑)
    
    # 发送带Web App按钮的消息
    context.bot.send_message(
        chat_id=user_id,
        text="点击下方按钮修改购物车与收货地址",
        reply_markup=InlineKeyboardMarkup([
            [InlineKeyboardButton(
                "修改购物车",
                web_app={
                    "url": "https://your-webapp.com/cart",
                    "start_param": f"user_{user_id}" # 携带用户ID作为购物车关联标识
                }
            )]
        ])
    )
  • Web App前端提取标识并拉取购物车数据:
const startParam = window.Telegram.WebApp.initDataUnsafe.start_param;
const userId = startParam.split('_')[1];

// 请求服务器获取该用户的购物车数据
fetch(`https://your-server.com/get-cart?user_id=${userId}`)
  .then(res => res.json())
  .then(cartData => {
    // 渲染购物车数据供用户修改
    renderCart(cartData);
  });

方式二:Bot实时调用服务器API同步购物车

用户在Bot中点击加购时,Bot直接调用你的服务器API,将用户ID和商品数据写入数据库,Web App打开时直接通过用户ID拉取数据:

  • Bot端示例代码(Python):
import requests

def add_to_cart(update, context: CallbackContext):
    user_id = update.effective_user.id
    target_product = {
        "product_id": "prod_002",
        "quantity": 1,
        "price": 99.9
    }
    
    # 调用服务器API同步购物车数据
    requests.post(
        "https://your-server.com/add-to-cart",
        json={
            "user_id": user_id,
            "product": target_product
        }
    )
    
    # 发送打开Web App的按钮
    # ...(同方式一的按钮代码)

3. 核心注意事项

  • 必须验证Web App初始化数据的合法性:服务器端需用Bot的token对initData进行校验,防止伪造用户请求。
  • 购物车数据统一存储在你的服务器数据库中,以用户ID为唯一关联键,Bot和Web App均通过API读写,避免数据不一致。

内容的提问来源于stack exchange,提问作者Khalil Ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:20:56