3.3.1. 公众号

自定义菜单

限制:

1. 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2. 一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
3. 菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单

自定义菜单接口可实现多种类型按钮,如下:

1. click:点击推事件。
   用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口)
2. view:跳转URL。
   微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
3. scancode_push:扫码推事件。
   用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL)
      且会将扫码的结果传给开发者,开发者可以下发消息。
4. scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框。
   用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具
      然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
5. pic_sysphoto:弹出系统拍照发图。
   用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,
      同时收起系统相机,随后可能会收到开发者下发的消息。
6. pic_weixin:弹出微信相册发图器。
   用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,
      同时收起相册,随后可能会收到开发者下发的消息。
7. pic_photo_or_album:弹出拍照或者相册发图。
   用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。
      用户选择后即走其他两种流程。
8. location_select:弹出地理位置选择器。
   用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,
      同时收起位置选择工具,随后可能会收到开发者下发的消息。
9. media_id:下发消息(除文本消息)
    用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,
      永久素材类型可以是图片、音频、视频、图文消息。
      请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
10. view_limited:跳转图文消息URL。
    用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,
      永久素材类型只支持图文消息。
      请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。​

Note

3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。9和10,是专门给第三方平台旗下未微信认证(具体而言,是资质认证未通过)的订阅号准备的事件类型,它们是没有事件推送的,能力相对受限,其他类型的公众号不必使用。

JSSDK

步骤一:绑定域名:

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

步骤二:引入JS文件:

在需要调用JS接口的页面引入如下JS文件:http://res.wx.qq.com/open/js/jweixin-1.6.0.js

步骤三:通过config接口注入权限验证配置:

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用:
wx.config({
  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的JS接口列表
});

步骤四:通过ready接口处理成功验证:

wx.ready(function(){
  // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,
  // 所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
  // 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

步骤五:通过error接口处理失败验证:

wx.error(function(res){
  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
  // 也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});

Note

jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。access_token(有效期7200秒)jsapi_ticket(有效期7200秒)

Note

卡券签名和JSSDK的签名完全独立,两者的算法和意义完全不同,请不要混淆。卡券 api_ticket 是用于调用卡券相关接口的临时票据,有效期为 7200 秒,通过 access_token 来获取。这里要注意与 jsapi_ticket 区分开来。

JSAPI