微信开发培训资料.docx

上传人:小飞机 文档编号:2022711 上传时间:2022-12-31 格式:DOCX 页数:45 大小:196.55KB
返回 下载 相关 举报
微信开发培训资料.docx_第1页
第1页 / 共45页
微信开发培训资料.docx_第2页
第2页 / 共45页
微信开发培训资料.docx_第3页
第3页 / 共45页
微信开发培训资料.docx_第4页
第4页 / 共45页
微信开发培训资料.docx_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《微信开发培训资料.docx》由会员分享,可在线阅读,更多相关《微信开发培训资料.docx(45页珍藏版)》请在三一办公上搜索。

1、微信JS-SDK说明文档目录1 概述 1.1 JSSDK使用步骤 1.1.1 步骤一:绑定域名 1.1.2 步骤二:引入JS文件 1.1.3 步骤三:通过config接口注入权限验证配置 1.1.4 步骤四:通过ready接口处理成功验证 1.1.5 步骤五:通过error接口处理失败验证 1.2 接口调用说明 2 基础接口 2.1 判断当前客户端版本是否支持指定JS接口 3 分享接口 3.1 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 3.2 获取“分享给朋友”按钮点击状态及自定义分享内容接口 3.3 获取“分享到QQ”按钮点击状态及自定义分享内容接口 3.4 获取“分享到腾讯微博

2、”按钮点击状态及自定义分享内容接口 3.5 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 4 图像接口 4.1 拍照或从手机相册中选图接口 4.2 预览图片接口 4.3 上传图片接口 4.4 下载图片接口 5 音频接口 5.1 开始录音接口 5.2 停止录音接口 5.3 监听录音自动停止接口 5.4 播放语音接口 5.5 暂停播放接口 5.6 停止播放接口 5.7 监听语音播放完毕接口 5.8 上传语音接口 5.9 下载语音接口 6 智能接口 6.1 识别音频并返回识别结果接口 7 设备信息 7.1 获取网络状态接口 8 地理位置 8.1 使用微信内置地图查看位置接口 8.2 获取地

3、理位置接口 9 摇一摇周边 9.1 开启查找周边ibeacon设备接口 9.2 关闭查找周边ibeacon设备接口 9.3 监听周边ibeacon设备接口 10 界面操作 10.1 隐藏右上角菜单接口 10.2 显示右上角菜单接口 10.3 关闭当前网页窗口接口 10.4 批量隐藏功能按钮接口 10.5 批量显示功能按钮接口 10.6 隐藏所有非基础按钮接口 10.7 显示所有功能按钮接口 11 微信扫一扫 11.1 调起微信扫一扫接口 12 微信小店 12.1 跳转微信商品页接口 一三 微信卡券 一三.1 获取api_ticket 一三.2 拉取适用卡券列表并获取用户选择信息 一三.3 批量

4、添加卡券接口 一三.4 查看微信卡包中的卡券接口 14 微信支付 14.1 发起一个微信支付请求 一五 附录1-JS-SDK使用权限签名算法 16 附录2-所有JS接口列表 17 附录3-所有菜单项列表 一八 附录4-卡券扩展字段及签名生成算法 19 附录5-常见错误及解决方法 20 附录6-DEMO页面和示例代码 21 附录7-问题反馈 概述微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更

5、优质的网页体验。 此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项。 JSSDK使用步骤步骤一:绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注:登录后可在“开发者中心”查看对应的接口权限。 步骤二:引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持https):xres.wx.qqx/open/js/jweixin-1.0.0.js 请注意,如果你的页面启用了https,务必引入 https:/res.wx.qqx/open/js/jweixin-1.0.0.js ,否则将无法在iOS9.0以上系统中成功使用JSSDK 如需

6、使用摇一摇周边功能,请引入 jweixin-1.1.0.js 备注:支持使用 AMD/CMD 标准模块加载方法加载 步骤三:通过config接口注入权限验证配置所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。 wx.config( debug: true, / 开启调试模式,调用的所有api的返回值会在客户端al

7、ert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: , / 必填,公众号的唯一标识 timestamp: , / 必填,生成签名的时间戳 nonceStr: , / 必填,生成签名的随机串 signature: ,/ 必填,签名,见附录1 jsApiList: / 必填,需要使用的JS接口列表,所有JS接口列表见附录2);步骤四:通过ready接口处理成功验证wx.ready(function() / config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所

8、以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。);步骤五:通过error接口处理失败验证wx.error(function(res) / config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。);接口调用说明所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数: success

9、:接口调用成功时执行的回调函数。 fail:接口调用失败时执行的回调函数。 complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。 cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。 trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。 备注:不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。 以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下: 调用成功时

10、:xxx:ok ,其中xxx为调用的接口名 用户取消时:xxx:cancel,其中xxx为调用的接口名 调用失败时:其值为具体错误信息 基础接口判断当前客户端版本是否支持指定JS接口wx.checkJsApi( jsApiList: chooseImage, / 需要检测的JS接口列表,所有JS接口列表见附录2, success: function(res) / 以键值对的形式返回,可用的api值true,不可用为false / 如:checkResult:chooseImage:true,errMsg:checkJsApi:ok );备注:checkJsApi接口是客户端6.0.2新引入的一

11、个预留接口,第一期开放的接口均可不使用checkJsApi来检测。 分享接口请注意不要有诱导分享等违规行为,对于诱导分享行为将永久回收公众号接口权限,详细规则请查看:朋友圈管理常见问题 。 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口wx.onMenuShareTimeline( title: , / 分享标题 link: , / 分享链接 imgUrl: , / 分享图标 success: function () / 用户确认分享后执行的回调函数 , cancel: function () / 用户取消分享后执行的回调函数 );获取“分享给朋友”按钮点击状态及自定义分享内容接口wx.

12、onMenuShareAppMessage( title: , / 分享标题 desc: , / 分享描述 link: , / 分享链接 imgUrl: , / 分享图标 type: , / 分享类型,music、video或link,不填默认为link dataUrl: , / 如果type是music或video,则要提供数据链接,默认为空 success: function () / 用户确认分享后执行的回调函数 , cancel: function () / 用户取消分享后执行的回调函数 );获取“分享到QQ”按钮点击状态及自定义分享内容接口wx.onMenuShareQQ( titl

13、e: , / 分享标题 desc: , / 分享描述 link: , / 分享链接 imgUrl: , / 分享图标 success: function () / 用户确认分享后执行的回调函数 , cancel: function () / 用户取消分享后执行的回调函数 );获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口wx.onMenuShareWeibo( title: , / 分享标题 desc: , / 分享描述 link: , / 分享链接 imgUrl: , / 分享图标 success: function () / 用户确认分享后执行的回调函数 , cancel: fun

14、ction () / 用户取消分享后执行的回调函数 );获取“分享到QQ空间”按钮点击状态及自定义分享内容接口wx.onMenuShareQZone( title: , / 分享标题 desc: , / 分享描述 link: , / 分享链接 imgUrl: , / 分享图标 success: function () / 用户确认分享后执行的回调函数 , cancel: function () / 用户取消分享后执行的回调函数 );图像接口拍照或从手机相册中选图接口wx.chooseImage( count: 1, / 默认9 sizeType: original, compressed, /

15、 可以指定是原图还是压缩图,默认二者都有 sourceType: album, camera, / 可以指定来源是相册还是相机,默认二者都有 success: function (res) var localIds = res.localIds; / 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 );预览图片接口wx.previewImage( current: , / 当前显示图片的http链接 urls: / 需要预览的图片http链接列表);上传图片接口wx.uploadImage( localId: , / 需要上传的图片的本地ID,由chooseI

16、mage接口获得 isShowProgressTips: 1, / 默认为1,显示进度提示 success: function (res) var serverId = res.serverId; / 返回图片的服务器端ID );备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id,参考文档 ./12/58bfcfabbd501c7cd77c19bd9cfa8354.html 目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-openxqqx,邮件主题为【申请多媒体接口调用量】,请对你的项目

17、进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。 下载图片接口wx.downloadImage( serverId: , / 需要下载的图片的服务器端ID,由uploadImage接口获得 isShowProgressTips: 1, / 默认为1,显示进度提示 success: function (res) var localId = res.localId; / 返回图片下载后的本地ID );音频接口开始录音接口wx.startRecord();停止录音接口wx.stopRecord( success: function (res) var localId = res.loca

18、lId; );监听录音自动停止接口wx.onVoiceRecordEnd( / 录音时间超过一分钟没有停止的时候会执行 complete 回调 complete: function (res) var localId = res.localId; );播放语音接口wx.playVoice( localId: / 需要播放的音频的本地ID,由stopRecord接口获得);暂停播放接口wx.pauseVoice( localId: / 需要暂停的音频的本地ID,由stopRecord接口获得);停止播放接口wx.stopVoice( localId: / 需要停止的音频的本地ID,由stopRe

19、cord接口获得);监听语音播放完毕接口wx.onVoicePlayEnd( success: function (res) var localId = res.localId; / 返回音频的本地ID );上传语音接口wx.uploadVoice( localId: , / 需要上传的音频的本地ID,由stopRecord接口获得 isShowProgressTips: 1, / 默认为1,显示进度提示 success: function (res) var serverId = res.serverId; / 返回音频的服务器端ID );备注:上传语音有效期3天,可用微信多媒体接口下载语音

20、到自己的服务器,此处获得的 serverId 即 media_id,参考文档 ./12/58bfcfabbd501c7cd77c19bd9cfa8354.html 目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-openxqqx,邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。 下载语音接口wx.downloadVoice( serverId: , / 需要下载的音频的服务器端ID,由uploadVoice接口获得 isShowProgressTips: 1, / 默认为1,显示进度提示 suc

21、cess: function (res) var localId = res.localId; / 返回音频的本地ID );智能接口识别音频并返回识别结果接口wx.translateVoice( localId: , / 需要识别的音频的本地Id,由录音相关接口获得 isShowProgressTips: 1, / 默认为1,显示进度提示 success: function (res) alert(res.translateResult); / 语音识别的结果 );设备信息获取网络状态接口wx.getNetworkType( success: function (res) var networ

22、kType = workType; / 返回网络类型2g,3g,4g,wifi );地理位置使用微信内置地图查看位置接口wx.openLocation( latitude: 0, / 纬度,浮点数,范围为90 -90 longitude: 0, / 经度,浮点数,范围为一八0 -一八0。 name: , / 位置名 address: , / 地址详情说明 scale: 1, / 地图缩放级别,整形值,范围从128。默认为最大 infoUrl: / 在查看位置界面底部显示的超链接,可点击跳转);获取地理位置接口wx.getLocation( type: wgs84, / 默认为wgs84的gps

23、坐标,如果要返回直接给openLocation用的火星坐标,可传入gcj02 success: function (res) var latitude = res.latitude; / 纬度,浮点数,范围为90 -90 var longitude = res.longitude; / 经度,浮点数,范围为一八0 -一八0。 var speed = res.speed; / 速度,以米/每秒计 var accuracy = res.accuracy; / 位置精度 );摇一摇周边开启查找周边ibeacon设备接口wx.startSearchBeacons(ticket:, /摇周边的业务tic

24、ket, 系统自动添加在摇出来的页面链接后面complete:function(argv)/开启查找完成后的回调函数);备注:如需接入摇一摇周边功能,请参考:申请开通摇一摇周边 关闭查找周边ibeacon设备接口wx.stopSearchBeacons(complete:function(res)/关闭查找完成后的回调函数);监听周边ibeacon设备接口wx.onSearchBeacons(complete:function(argv)/回调函数,可以数组形式取得该商家注册的在周边的相关设备列表);备注:上述摇一摇周边接口使用注意事项及更多返回结果说明,请参考:摇一摇周边获取设备信息 界面操

25、作隐藏右上角菜单接口wx.hideOptionMenu();显示右上角菜单接口wx.showOptionMenu();关闭当前网页窗口接口wx.closeWindow();批量隐藏功能按钮接口wx.hideMenuItems( menuList: / 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3);批量显示功能按钮接口wx.showMenuItems( menuList: / 要显示的菜单项,所有menu项见附录3);隐藏所有非基础按钮接口wx.hideAllNonBaseMenuItem();/ “基本类”按钮详见附录3显示所有功能按钮接口wx.showAllN

26、onBaseMenuItem();微信扫一扫调起微信扫一扫接口wx.scanQRCode( needResult: 0, / 默认为0,扫描结果由微信处理,1则直接返回扫描结果, scanType: qrCode,barCode, / 可以指定扫二维码还是一维码,默认二者都有 success: function (res) var result = res.resultStr; / 当needResult 为 1 时,扫码返回的结果);微信小店跳转微信商品页接口wx.openProductSpecificView( productId: , / 商品id viewType: / 0.默认值,普

27、通商品详情页1.扫一扫商品详情页2.小店商品详情页);微信卡券微信卡券接口中使用的签名凭证api_ticket,与步骤三中config使用的签名凭证jsapi_ticket不同,开发者在调用微信卡券JS-SDK的过程中需依次完成两次不同的签名,并确保凭证的缓存。 获取api_ticketapi_ticket 是用于调用微信卡券JS API的临时票据,有效期为7200 秒,通过access_token 来获取。 开发者注意事项: 1.此用于卡券接口签名的api_ticket与步骤三中通过config接口注入权限验证配置使用的jsapi_ticket不同。 2.由于获取api_ticket 的ap

28、i 调用次数非常有限,频繁刷新api_ticket 会导致api调用受限,影响自身业务,开发者需在自己的服务存储与更新api_ticket。 接口调用请求说明 http请求方式: GEThttps:/api.weixin.qqx/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card参数说明 参数 是否必须 说明 access_token 是 调用接口凭证 返回数据 数据示例: errcode:0,errmsg:ok,ticket:bxLdikRXVbTPdHSM05e5u5sUoXNKdvsdshFKA,expires_

29、in:7200参数名 描述 errcode 错误码 errmsg 错误信息 ticket api_ticket,卡券接口中签名所需凭证 expires_in 有效时间 拉取适用卡券列表并获取用户选择信息wx.chooseCard( shopId: , / 门店Id cardType: , / 卡券类型 cardId: , / 卡券Id timestamp: 0, / 卡券签名时间戳 nonceStr: , / 卡券签名随机串 signType: , / 签名方式,默认SHA1 cardSign: , / 卡券签名 success: function (res) var cardList= re

30、s.cardList; / 用户选中的卡券列表信息 );参数名 必填 类型 示例值 描述 shopId 否 string(24) 1234 门店ID。shopID用于筛选出拉起带有指定location_list(shopID)的卡券列表,非必填。 cardType 否 string(24) GROUPON 卡券类型,用于拉起指定卡券类型的卡券列表。当cardType为空时,默认拉起所有卡券的列表,非必填。 cardId 否 string(32) p1Pj9jr90_SQRaVqYI239Ka1erk 卡券ID,用于拉起指定cardId的卡券列表,当cardId为空时,默认拉起所有卡券的列表,非

31、必填。 timestamp 是 string(32) 14300000000 时间戳。 nonceStr 是 string(32) sduhi123 随机字符串。 signType 是 string(32) SHA1 签名方式,目前仅支持SHA1 cardSign 是 string(64) abcsdijcous123 签名。 cardSign详见附录4。开发者特别注意:签名错误会导致拉取卡券列表异常为空,请仔细检查参与签名的参数有效性。 特别提醒 拉取列表仅与用户本地卡券有关,拉起列表异常为空的情况通常有三种:签名错误、时间戳无效、筛选机制有误。请开发者依次排查定位原因。 批量添加卡券接口w

32、x.addCard( cardList: cardId: , cardExt: , / 需要添加的卡券列表 success: function (res) var cardList = res.cardList; / 添加的卡券列表信息 );cardExt详见附录4,值得注意的是,这里的card_ext参数必须与参与签名的参数一致,格式为字符串而不是Object,否则会报签名错误。 查看微信卡包中的卡券接口wx.openCard( cardList: cardId: , code: / 需要打开的卡券列表);微信支付发起一个微信支付请求wx.chooseWXPay( timestamp: 0,

33、 / 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: , / 支付签名随机串,不长于 32 位 package: , / 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=*) signType: , / 签名方式,默认为SHA1,使用新版支付需传入MD5 paySign: , / 支付签名 success: function (res) / 支付成功后的回调函数 );备注:prepay_id 通过微信支付统一下单接口拿到,paySign 采用

34、统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,即最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。 微信支付开发文档:https:/pay.weixin.qqx/wiki/doc/api/index.html 附录1-JS-SDK使用权限签名算法jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过

35、access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。 参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):./一五/54ce45d8d30b6bf6758f68d2e95bc627.html 用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):ht

36、tps:/api.weixin.qqx/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi 成功返回如下JSON: errcode:0,errmsg:ok,ticket:bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA,expires_in:7200获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。 签名算法 签名生成规则如下:参与签名的字段包括noncestr(随机字符串),

37、 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。 即signature=sha1(string1)。示例: noncestr=Wm3WZYTPz0wzccnW jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGG

38、Vi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg timestamp=1414587457 url=xmp.weixin.qqx?params=value 步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2)拼接成字符串string1: jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHK

39、P7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=xmp.weixin.qqx?params=value步骤2. 对string1进行sha1签名,得到signature: 0f9de62fce790f9a083d5c99e95740ceb90c27ed注意事项 签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。 签名用的url必须是调用JS接口页面的完整URL。 出于安全考虑,开发者必须在服务器端实现签名的逻辑。 如出现invalid signature 等错误详见附

40、录5常见错误及解决办法。 附录2-所有JS接口列表版本1.0.0接口 onMenuShareTimeline onMenuShareAppMessage onMenuShareQQ onMenuShareWeibo onMenuShareQZone startRecord stopRecord onVoiceRecordEnd playVoice pauseVoice stopVoice onVoicePlayEnd uploadVoice downloadVoice chooseImage previewImage uploadImage downloadImage translateVoi

41、ce getNetworkType openLocation getLocation hideOptionMenu showOptionMenu hideMenuItems showMenuItems hideAllNonBaseMenuItem showAllNonBaseMenuItem closeWindow scanQRCode chooseWXPay openProductSpecificView addCard chooseCard openCard 附录3-所有菜单项列表基本类 举报: menuItem:exposeArticle 调整字体: menuItem:setFont 日间模式: menuItem:dayMode 夜间模式: menuItem:nightMode 刷新: menuItem:refresh 查看公众号(已添加): menuItem:profile 查看公众号(未添加): menuItem:addContact 传播类 发送给朋友: menuItem:share:appMessage 分享到朋友圈: menuItem:share:timeline 分享到QQ: menuItem:share:qq 分享到Weibo: menuItem:sha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号