大模型支付宝小程序对接:从零配置到接口验证

大模型支付宝小程序对接,核心原则只有一条:不要在支付宝小程序前端直接调用大模型 API。
小程序代码包可以被反编译,任何写在 app.js 或页面里的 API Key 都会泄露。
正确做法是由你自己的服务器(或云函数)持有密钥,对外暴露一个受控接口,小程序通过 my.request 调用这个接口。
下面按准备、操作、验证和避坑的顺序展开。

先确认你手里有什么

开始前需要准备三样东西:一个已创建好的支付宝小程序(能拿到 APPID)、一个可用的大模型 API Key 及调用地址、一台能运行 HTTPS 服务的服务器或云函数。
小程序真机调试要求请求域名在支付宝开放平台后台配置为白名单,测试阶段可临时关闭域名校验,但上线前必须配好。

服务端语言不限,本文以 Node.js + Express 为例,其他语言逻辑一致。
服务器上建议安装 nginx 做反向代理并启用 HTTPS,宝塔面板用户可在“网站”中直接申请 Let's Encrypt 证书。

服务端转发接口怎么写

服务端要做两件事:从环境变量读取大模型密钥,接收小程序传来的用户输入,转发请求后把结果原样返回。
不要在小程序端拼接 Authorization 头。

# 在服务器项目目录安装依赖
npm init -y
npm install express axios dotenv

创建 .env 文件(不要提交到 Git):

LLM_API_KEY=你的大模型APIKey
LLM_API_URL=https://你的大模型服务地址/v1/chat/completions
PORT=3000

入口文件 server.js 示例:

require('dotenv').config();
const express = require('express');
const axios = require('axios');
const app = express();
app.use(express.json());

app.post('/api/chat', async (req, res) => {
  const { message } = req.body;
  if (!message) return res.status(400).json({ error: 'message 不能为空' });
  try {
    const resp = await axios.post(process.env.LLM_API_URL, {
      model: '你使用的模型名',
      messages: [{ role: 'user', content: message }]
    }, {
      headers: { Authorization: `Bearer ${process.env.LLM_API_KEY}` },
      timeout: 30000
    });
    res.json({ reply: resp.data.choices[0].message.content });
  } catch (err) {
    console.error(err.response?.data || err.message);
    res.status(502).json({ error: '大模型服务调用失败' });
  }
});

app.listen(process.env.PORT, () => console.log('server running'));

启动后用 curl 自测,确认服务端本身可用:

curl -X POST http://127.0.0.1:3000/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"你好"}'

返回 JSON 中应包含 reply 字段。
如果这一步失败,先查 .env 是否被正确加载、大模型地址是否可达,不要急着改小程序代码。

小程序端如何发起请求

在支付宝小程序页面中,用 my.request 调用你的服务端接口。
注意 url 必须是 HTTPS 且已加入白名单。

Page({
  data: { input: '', answer: '' },
  onInput(e) { this.setData({ input: e.detail.value }); },
  send() {
    my.request({
      url: 'https://你的域名/api/chat',
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      data: { message: this.data.input },
      success: (res) => {
        if (res.status === 200 && res.data.reply) {
          this.setData({ answer: res.data.reply });
        } else {
          my.alert({ content: res.data.error || '请求失败' });
        }
      },
      fail: (err) => {
        my.alert({ content: '网络异常:' + err.errorMessage });
      }
    });
  }
});

真机调试前,在支付宝开放平台“开发设置”中把 https://你的域名 添加到服务器域名白名单。
若临时关闭校验,真机预览可能仍受限,建议直接配好白名单再测。

常见报错与避坑清单

  • request:fail 或域名不合法:检查白名单是否包含完整域名(不带路径),且证书是否有效。
  • 服务端返回 502:说明大模型上游调用失败,看服务端日志里的 err.response.data,常见原因是密钥错误、模型名写错或余额不足。
  • 小程序收到 400:检查 message 字段是否为空,以及请求头是否为 application/json。
  • 密钥泄露风险:永远不要在 .wxml、.js 或小程序云函数控制台中明文写 Key;服务端用环境变量,并给服务器设置防火墙,只开放 443 端口。
  • 超时:大模型响应可能超过 10 秒,服务端 timeout 建议设为 30 秒左右,小程序端也要给用户加载提示,避免重复点击。

怎么判断对接成功

完成以上步骤后,按三层验证:第一层,用 curl 请求服务端接口能拿到 reply;
第二层,在支付宝开发者工具中模拟器发起请求,能在控制台看到 200 响应;
第三层,真机扫码测试,输入问题后页面能显示模型返回内容。
三层都通过,说明链路完整。
如果只有真机失败,优先检查域名白名单和手机网络环境。

上线前再做一次安全检查:确认 .env 未被打包进前端、服务端错误信息不返回堆栈、接口增加简单的频率限制(例如同一 IP 每分钟最多 20 次),避免被刷。

两个容易混淆的问题

支付宝小程序能不能直接调大模型接口? 不建议。
即使临时可用,密钥暴露后会被他人盗用,且域名白名单管理也会更麻烦。

服务端必须用 Node.js 吗? 不必。
PHP、Python、Go 都可以,只要完成“接收请求、转发带密钥的请求、返回结果”这三步。
关键是密钥只存在于服务端。

按本文顺序执行,先让服务端接口跑通,再配小程序域名和页面请求,最后做真机验证。
遇到异常时,回到对应层用 curl 或日志定位,比反复改前端代码更有效。

分享到:
上一篇
大模型微信小程序对接:从零配置到对话验证
下一篇
大模型抖音小程序对接:从零配置到消息回传验证
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意