php如何生成小程序短链接_php调用短链生成接口【教程】

8次阅读

小程序短链接必须通过微信官方接口生成,php无法自行生成合法短链;需调用https://api.weixin.qq.com/wxa/generateshortlink,传入有效access_Token、真实已发布page路径等参数,返回short_link供分享。

php如何生成小程序短链接_php调用短链生成接口【教程】

小程序短链接必须用微信官方接口生成

PHP 无法自行生成合法的小程序短链接,所有 wx.shortlink.generate 类型的短链必须调用微信开放平台提供的 HTTPS 接口,且需使用有效的 access_token(公众号或第三方平台令牌)。自行拼接或用通用短链服务(如 t.cn、dwz.cn)生成的链接,在微信内无法跳转到小程序,会直接被拦截或降权。

调用 wx.shortlink.generate 的关键参数和 PHP 实现

接口地址为 https://api.weixin.qq.com/wxa/generateshortlink,POST jsON 数据,需注意以下几点:

  • access_token 必须是公众号或小程序绑定的第三方平台获取的,普通 token 不可用
  • page 字段必须是已发布的小程序中真实存在的路径,带完整 query 参数(如 pages/index/index?scene=123),不支持未上线版本路径
  • is_persistent 设为 true 表示永久有效,false 则 30 天过期(默认)
  • 返回字段含 short_link(可直接分享)和 expire_time(仅当 is_persistent=false 时存在)

简单 PHP 示例(使用 curl):

$data = [     'page' => 'pages/detail/detail?id=456',     'is_persistent' => true ]; $json = json_encode($data); $token = 'YOUR_ACCESS_TOKEN'; // 来自 getAccessToken() 逻辑 $url = "https://api.weixin.qq.com/wxa/generateshortlink?access_token={$token}";  $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch);  $response = json_decode($result, true); if (isset($response['short_link'])) {     echo $response['short_link']; // 如:https://wxsurl.cn/abc123 }

常见报错及对应原因

调用失败时,微信返回的 errcode 很关键,典型错误有:

立即学习PHP免费学习笔记(深入)”;

  • errcode: 40001access_token 无效或过期,需检查刷新逻辑和存储时效
  • errcode: 47001:JSON 格式错误,常见于 PHP json_encode 含中文未加 JSON_UNESCAPED_UNICODE
  • errcode: 85079page 路径不存在或未在小程序后台「开发管理 > 开发版本」中配置业务域名(但短链本身不校验域名)
  • errcode: 85080:该小程序未开通“短链接”能力,需在【小程序后台 > 开发管理 > 接口能力】中确认已开通

短链生成后不能直接用于扫码,需配合场景码

生成的 short_link 是纯跳转链接,若要通过微信扫码打开,必须将它嵌入微信官方的「小程序码」或「二维码」中(即调用 wxa.getwxacodeunlimit 等接口,把短链作为 scene 参数传入)。直接把短链截图给别人扫码,微信会识别为普通 URL,无法触发小程序启动。

另外,短链本身不携带用户身份信息,如需关联 openid 或 unionid,必须在原始 page 路径的 query 中透传参数,并由小程序端自行处理。

text=ZqhQzanResources