获取 Short Link

通过 服务端接口 generateShortLink 可以获取打开微信小程序任意页面的 Short Link。适用于微信内拉起微信小程序的业务场景。通过 Short Link 打开微信小程序的场景值为 1179

生成的 ShortLink 如下所示:

#微信小程序://微信小程序示例/示例页面/9pZvnVw3KMCQpVp

调用上限

Link 将根据是否为到期有效与失效时间参数,分为 短期有效 ShortLink永久有效 ShortLink

  1. 单个微信小程序每日生成 ShortLink 上限为 1000万个(包含短期有效 ShortLink 与长期有效 ShortLink )
  2. 单个微信小程序总共可生成永久有效 ShortLink 上限为 10万个,请谨慎调用。
  3. 短期有效 ShortLink 有效时间为 30天,单个微信小程序生成短期有效 ShortLink 不设上限。

开放范围

目前只开放给电商类目微信小程序,具体包含以下一级类目:电商平台、商家自营、跨境电商。

获取加密 URL Link

每个微信小程序每天 URL Scheme 和 URL Link 总打开次数上限为600万

获取方式

通过服务端接口可以获取打开微信小程序任意页面的 URL Link。适用于从短信、邮件、网页、微信内等场景打开微信小程序。 通过 URL Link 从微信外打开微信小程序的场景值为 1194。当用户在微信内访问 URL Link ,会调整为开放标签打开微信小程序,场景值为1167。
生成的 URL Link 如下所示:

https://wxaurl.cn/*TICKET* 或 https://wxmpurl.cn/*TICKET*

拼接参数

将原有 URL Link 平滑升级为加密 URL Link,支持开发者自行在链接后面拼接参数CUSTOM PARAMETE,拼接参数后的 URL Link 如下所示:

https://wxaurl.cn/*TICKET*?cq=*CUSTOM PARAMETER* 或 https://wxmpurl.cn/*TICKET*?cq=*CUSTOM PARAMETER*

注意:

  1. CUSTOM PARAMETE是一种特殊的query,最大256个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~%`,需要url_encode;
  2. 在本次规则调整生效前已经生成的 URL Scheme 可继续正常使用,并可直接进行CUSTOM PARAMETE参数拼接;
  3. 拼接参数后的加密 URL Link 打开微信小程序的场景值不变,微信外仍为1194,微信内仍会调整为开放标签打开微信小程序,场景值为1167。

频率限制

生成端:每天生成 URL Scheme(加密+明文) 和 URL Link 的总数量上限为50万;

打开端:每天通过 URL Scheme(加密+明文) 和 URL Link 打开微信小程序的总次数上限为600万。

注意事项

  1. 只能生成已发布的微信小程序的 URL Link。
  2. 在微信内或者安卓手机打开 URL Link 时,默认会先跳转官方 H5 中间页,如果需要定制 H5 内容,可以使用云开发静态网站。

开放范围

针对非个人主体微信小程序开放。

获取 URL Scheme

每个微信小程序每天 URL Scheme 和 URL Link 总打开次数上限为600万

明文 URL Scheme

获取方式

开发者无需调用平台接口,在「MP平台 – 左下角账号 – 账号设置 – 基本设置 – 隐私与安全 – 明文Scheme拉起此微信小程序」声明后,可自行根据如下格式拼接appid和path等参数,作为明文 URL Scheme 链接。

weixin://dl/business/?appid=*APPID*&path=*PATH*&query=*QUERY*&env_version=*ENV_VERSION*

其中,各个参数的定义如下:

  1. 【必填】APPID:通过明文 URL Scheme 打开微信小程序的 appid ;
  2. 【必填】PATH:通过明文 URL Scheme 打开微信小程序的页面 path ,必须是已经发布的微信小程序存在的页面,不可携带 query;
  3. 【选填】QUERY:通过明文 URL Scheme 打开微信小程序的 query ,最大512个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~%`,需要url_encode;
  4. 【选填】ENV_VERSION:要打开的微信小程序版本,正式版为release,体验版为trial,开发版为develop,仅在微信外打开时生效。注意:若不填写,则默认打开正式版微信小程序。

通过明文 URL Scheme 打开微信小程序的场景值为 1286。

加密 URL Scheme

获取方式

通过服务端接口可以获取打开微信小程序任意页面的加密 URL Scheme。适用于从短信、邮件、微信外网页等场景打开微信小程序。 通过 URL Scheme 打开微信小程序的场景值为 1065。
生成的 URL Scheme 如下所示:

weixin://dl/business/?t= *TICKET*

iOS系统支持识别 URL Scheme,可在短信等应用场景中直接通过Scheme跳转微信小程序。
Android系统不支持直接识别 URL Scheme,用户无法通过 Scheme 正常打开微信小程序,开发者需要使用 H5 页面中转,再跳转到 Scheme 实现打开微信小程序,跳转代码示例如下:

location.href = 'weixin://dl/business/?t= *TICKET*'

该跳转方法可以在用户打开 H5 时立即调用,也可以在用户触发事件后调用。

拼接参数

将原有 URL Scheme 平滑升级为加密 URL Scheme,支持开发者自行在链接后面拼接参数CUSTOM PARAMETE,拼接参数后的 URL Scheme 如下所示:

weixin://dl/business/?t= *TICKET*&cq=*CUSTOM PARAMETER*

注意:

  1. CUSTOM PARAMETE是一种特殊的query,最大256个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~%`,需要url_encode;
  2. 在本次规则调整生效前已经生成的 URL Scheme 可继续正常使用,并可直接进行CUSTOM PARAMETE参数拼接;
  3. 拼接参数后的加密 URL Scheme 打开微信小程序的场景值不变,仍为 1065。

频率限制

生成端:每天生成 加密URL Scheme 和 URL Link 的总数量上限为50万;

打开端:每天通过 URL Scheme(加密+明文) 和 URL Link 打开微信小程序的总次数上限为600万。

注意事项

  1. 微信内的网页如需打开微信小程序请使用微信开放标签-微信小程序跳转按钮,无公众号也可以直接使用微信小程序身份开发网页并免鉴权跳转微信小程序,见云开发静态网站跳转微信小程序。符合开放范围的微信小程序可以下发支持打开微信小程序的短信
  2. 该功能基本覆盖当前用户正在使用的微信版本,开发者无需进行低版本兼容
  3. 只能生成已发布的微信小程序的 URL Scheme
  4. 通过 URL Scheme 跳转到微信时,可能会触发系统弹框询问,若用户选择不跳转,则无法打开微信小程序。请开发者妥善处理用户选择不跳转的场景
  5. 部分浏览器会限制打开网页直接跳转,可参考示例网页设置跳转按钮
  6. 平台有安全策略防止开发者的链接被黑灰产批量打开,导致的达到访问上限无法正常打开微信小程序的问题

开放范围

针对非个人主体微信小程序开放。

示例代码

示例使用了云开发静态网站托管搭建网页,无需公众号,只需准备好微信小程序和开通云开发。网页会判断所在的环境来决定采用哪种跳转方式,如检测到微信客户端内,则免鉴权使用开放标签跳转,如检测到在外部浏览器或 App,则使用 URL Scheme 跳转微信小程序。

示例网页地址:https://postpay-2g5hm2oxbbb721a4-1258211818.tcloudbaseapp.com/jump-mp.html

详细代码示例和说明:云开发静态网站跳转微信小程序

获取微信小程序码

通过后台接口可以获取微信小程序任意页面的微信小程序码,扫描该微信小程序码可以直接进入微信小程序对应的页面,所有生成的微信小程序码永久有效,可放心使用。 我们推荐生成并使用微信小程序码,它具有更好的辨识度,且拥有展示“公众号关注组件”等高级能力。 生成的微信小程序码如下所示:

可以使用开发者工具 1.02.1803130 及以后版本通过 工具栏-自定义编译条件-通过二维码编译 功能来调试所获得的微信小程序

通过二维码编译

为满足不同需求和场景,这里提供了两个接口,开发者可挑选适合自己的接口。

  • 接口 A: 适用于需要的码数量较少的业务场景
    • 生成微信小程序码,可接受 path 参数较长,生成个数受限,数量限制见 注意事项,请谨慎使用。
  • 接口 B:适用于需要的码数量极多的业务场景
    • 生成微信小程序码,可接受页面参数较短,生成个数不受限。

获取微信小程序二维码(不推荐使用)

通过后台接口可以获取微信小程序任意页面的微信小程序二维码,生成的微信小程序二维码如下所示:

  • 接口 C:适用于需要的码数量较少的业务场景
    • 生成二维码,可接受 path 参数较长,生成个数受限,数量限制见 注意事项。

获取微信小程序码(一物一码)

微信一物一码 支持生成微信小程序码。微信通过“一物一码”接口发放的二维码相比较普通链接二维码更安全、支持更小的印刷面积,支持跳转到指定微信小程序页面,且无数量限制。

  • 接口 D:适用于“一物一码”的业务场景

注意事项

  1. 接口只能生成已发布的微信小程序的二维码
  2. 接口 A 加上接口 C,总共生成的码数量限制为 100,000,请谨慎调用。
  3. 接口 B 调用分钟频率受限(5000次/分钟),如需大量微信小程序码,建议预生成。

位置消息打开

微信客户端 8.0.32 及以上版本支持

为了让用户更便捷地使用微信小程序的打车服务,我们在位置消息详情页的菜单中,新增了用微信小程序打车的入口,接入说明详见:接入文档

产品示意图

在客服消息中使用临时素材

开发者可在接收和发送客服消息的过程中获取或上传临时素材。

获取客服消息内的临时素材

接收到用户消息之后,可通过 获取临时素材接口 获取消息中的临时素材

新增图片素材

通过 新增素材接口 可以上传临时素材,并在 发送消息接口 中使用。

客服输入状态

开发者可通过调用 客服输入状态接口,返回客服当前输入状态给用户。

  1. 此接口需要客服消息接口权限。
  2. 如果不满足发送客服消息的触发条件,则无法下发输入状态。
  3. 下发输入状态,需要客服之前 30 秒内跟用户有过消息交互。
  4. 在输入状态中(持续 15 秒),不可重复下发输入态。
  5. 在输入状态中,如果向用户下发消息,会同时取消输入状态。

转发客服消息

如果微信小程序设置了消息推送,普通微信用户向微信小程序客服发消息时,微信服务器会先将消息 POST 到开发者填写的 URL 上。如果希望将消息转发到网页版客服工具,则需要开发者在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统。

用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过 30 分钟客服没有关闭时,微信服务器会自动停止转发至客服,而将消息恢复发送至开发者填写的 URL 上。

用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的 URL 上。

这里特别要注意,只针对微信用户发来的消息才进行转发,而对于其他事件(比如用户从微信小程序唤起客服会话)都不应该转发,否则客服在客服系统上就会看到一些无意义的消息了。

消息转发到网页版客服工具

开发者只要在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后就会把当次发送的消息转发至客服系统。

如果是使用自有服务器接收的消息推送,则需返回如下格式的 XML 数据:

<xml>
    <ToUserName><![CDATA[touser]]></ToUserName>
    <FromUserName><![CDATA[fromuser]]></FromUserName>
    <CreateTime>1399197672</CreateTime>
    <MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>

参数说明

参数 是否必须 描述
ToUserName 接收方账号(收到的OpenID)
FromUserName 微信小程序原始id
CreateTime 消息创建时间 (整型)
MsgType transfer_customer_service

如果是使用云函数接收的消息推送,则需在云函数被客服消息触发后返回同样格式的 JSON 数据:

// ...
exports.main = async (event, context) => {
  // 判断处理客服消息 ...
  // 最后返回 JSON
  return {
    MsgType: 'transfer_customer_service',
    ToUserName: 'touser',
    FromUserName: 'fromuser',
    CreateTime: parseInt(+new Date / 1000),
  }
}

发送客服消息

当用户和微信小程序客服产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前为 48 小时)调用客服接口,通过调用 发送客服消息接口 来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

目前允许的动作列表如下,不同动作触发后,允许的客服接口下发消息条数和下发时限不同。

用户动作 允许下发条数限制 下发时限
用户发送消息 5 条 48 小时
用户进入客服消息 2 条 1 分钟

微信小程序接收消息和事件

在页面中使用 <button open-type="contact" /> 可以显示进入客服会话按钮。

当用户在客服会话发送消息、或由某些特定的用户操作引发事件推送时,微信服务器会将消息或事件的数据包发送到开发者填写的 URL / 云开发云函数 / 云托管服务(详情请参考消息推送)。开发者收到请求后可以使用 发送客服消息 接口进行异步回复。

各消息类型的推送JSON、XML数据包结构如下。

文本消息

用户在客服会话中发送文本消息时将产生如下数据包:

XML 格式

<xml>
   <ToUserName><![CDATA[toUser]]></ToUserName>
   <FromUserName><![CDATA[fromUser]]></FromUserName>
   <CreateTime>1482048670</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[this is a test]]></Content>
   <MsgId>1234567890123456</MsgId>
</xml>

JSON 格式

{
  "ToUserName": "toUser",
  "FromUserName": "fromUser",
  "CreateTime": 1482048670,
  "MsgType": "text",
  "Content": "this is a test",
  "MsgId": 1234567890123456
}

参数说明

参数 说明
ToUserName 微信小程序的原始ID
FromUserName 发送者的openid
CreateTime 消息创建时间(整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型

图片消息

用户在客服会话中发送图片消息时将产生如下数据包:

XML 格式

<xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1482048670</CreateTime>
      <MsgType><![CDATA[image]]></MsgType>
      <PicUrl><![CDATA[this is a url]]></PicUrl>
      <MediaId><![CDATA[media_id]]></MediaId>
      <MsgId>1234567890123456</MsgId>
</xml>

JSON 格式

{
  "ToUserName": "toUser",
  "FromUserName": "fromUser",
  "CreateTime": 1482048670,
  "MsgType": "image",
  "PicUrl": "this is a url",
  "MediaId": "media_id",
  "MsgId": 1234567890123456
}

参数说明

参数 说明
ToUserName 微信小程序的原始ID
FromUserName 发送者的openid
CreateTime 消息创建时间(整型)
MsgType image
PicUrl 图片链接(由系统生成)
MediaId 图片消息媒体id,可以调用[获取临时素材]((getTempMedia)接口拉取数据。
MsgId 消息id,64位整型

微信小程序卡片消息

用户在客服会话中发送微信小程序卡片消息时将产生如下数据包:

XML 格式

<xml>
  <ToUserName><![CDATA[toUser]]></ToUserName>
  <FromUserName><![CDATA[fromUser]]></FromUserName>
  <CreateTime>1482048670</CreateTime>
  <MsgType><![CDATA[miniprogrampage]]></MsgType>
  <MsgId>1234567890123456</MsgId>
  <Title><![CDATA[Title]]></Title>
  <AppId><![CDATA[AppId]]></AppId>
  <PagePath><![CDATA[PagePath]]></PagePath>
  <ThumbUrl><![CDATA[ThumbUrl]]></ThumbUrl>
  <ThumbMediaId><![CDATA[ThumbMediaId]]></ThumbMediaId>
</xml>

JSON 格式

{
  "ToUserName": "toUser",
  "FromUserName": "fromUser",
  "CreateTime": 1482048670,
  "MsgType": "miniprogrampage",
  "MsgId": 1234567890123456,
  "Title":"title",
  "AppId":"appid",
  "PagePath":"path",
  "ThumbUrl":"",
  "ThumbMediaId":""
}

参数说明

参数 说明
ToUserName 微信小程序的原始ID
FromUserName 发送者的openid
CreateTime 消息创建时间(整型)
MsgType miniprogrampage
MsgId 消息id,64位整型
Title 标题
AppId 微信小程序appid
PagePath 微信小程序页面路径
ThumbUrl 封面图片的临时cdn链接
ThumbMediaId 封面图片的临时素材id

进入会话事件

用户在微信小程序“客服会话按钮”进入客服会话时将产生如下数据包:

XML 格式

<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>1482048670</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[user_enter_tempsession]]></Event>
    <SessionFrom><![CDATA[sessionFrom]]></SessionFrom>
</xml>

JSON 格式

{
  "ToUserName": "toUser",
  "FromUserName": "fromUser",
  "CreateTime": 1482048670,
  "MsgType": "event",
  "Event": "user_enter_tempsession",
  "SessionFrom": "sessionFrom"
}

参数说明

参数 说明
ToUserName 微信小程序的原始ID
FromUserName 发送者的openid
CreateTime 事件创建时间(整型)
MsgType event
事件 事件类型,user_enter_tempsession
SessionFrom 开发者在客服会话按钮设置的 session-from 属性