版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章微信公众平台开发准备第2章微信公众平台开发准备1能力CAPACITY要求能够搭建好开发环境。掌握接口在线调试工具调试接口的方法。掌握基础接口调用凭证与获取微信服务器IP地址的方法。掌握微信Web开发调试工具的使用方法。能力CAPACITY要求能够搭建好开发环境。掌握接口在线调试2基础接口开发环境搭建微信Web开发调试工具基础接口开发环境搭建微信Web开发调试工具32.1开发环境搭建01OPTION02OPTION03OPTION接入指南接口测试号申请接口在线调试2.1开发环境搭建01OPTION02OPTION03OP42.1开发环境搭建
2.1.1接入指南——获取服务器资源
服务器类型虚拟空间百度BAE新浪SAE云主机….指自己托管于IDC机房的服务器或者第三方服务商提供的服务器,一般一个人使用一整台服务器。第三方服务商将一台主机分成多个虚拟主机,供多人使用可以申请免费使用,但是有一定条件限制可以申请免费使用,但是有一定条件限制2.1开发环境搭建服务器类型虚拟空间百度BAE新浪SA52.1开发环境搭建2.1.1接入指南——获取服务器资源(1)申请账号
/(2)创建应用以新浪SAE为例介绍如何申请免费的SAE应用空间以及上传程序文件2.1开发环境搭建2.1.1接入指南——获取服务器资源62.1开发环境搭建(3)创建版本(4)上传代码2.1.1接入指南——获取服务器资源2.1开发环境搭建(3)创建版本(4)上传代码开发环境搭建2.1.1接入指南——填写服务器配置(1)服务器地址URL
开发者用来接收微信消息和事件的接口URL,该URL必须正确响应微信发送的Token验证。(2)Token
Token是由开发者任意填写的签名,该Token会与服务器接口URL中包含的Token进行比对,从而验证安全性。
(3)EncodingAESKey
由开发者手动填写或随机生成的,主要用于消息体加密解密的密钥。2.1开发环境搭建2.1.1接入指南——填写服务器配置82.1开发环境搭建2.1.1接入指南——填写服务器配置服务器配置填写2.1开发环境搭建2.1.1接入指南——填写服务器配置92.1开发环境搭建2.1.1接入指南——验证服务器地址的有效性
开发者提交配置信息后,微信服务器将发送GET请求到填写的服务器地址URL上从而验证消息的确来自微信服务器,GET请求携带参数如下表所示:参数描述signature微信加密签名,signature结合了开发者请求中的timestamp参数,nonce参数。timestamp时间戳nonce随机数echostr随机字符串GET请求参数列表2.1开发环境搭建2.1.1接入指南——验证服务器地址102.1开发环境搭建2.1.1接入指南——验证服务器地址的有效性
获得GET请求的几个参数后,开发者就可以通过signature对请求进行校验。开发者开发的校验程序要能够处理GET请求,并对请求者进行身份验证,确保请求来自微信服务器。校验流程为:首先将token、timestamp、nonce三个参数进行字典序排序;随后将三个参数字符串拼接成一个字符串并进行sha1加密;开发者获得加密后的字符串可与signature对比,标识该请求来源于微信,原样返回echostr参数内容,则接入生效。2.1开发环境搭建2.1.1接入指南——验证服务器地址112.1开发环境搭建2.1.1接入指南——验证服务器地址的有效性
publicvoidProcessRequest(HttpContextcontext){strings="";List<string>l=newList<string>();l.Add("你填写的token");l.Add(context.Request.QueryString["timestamp"]);l.Add(context.Request.QueryString["nonce"]);l.Sort();foreach(string_sinl)s+=_s;s=FormsAuthentication.HashPasswordForStoringInConfigFiles(s,"SHA1").ToLower();if(s==context.Request.QueryString["signature"]){context.Response.Write(context.Request.QueryString["echostr"]);}}publicboolIsReusable{get{returnfalse;}}2.1开发环境搭建2.1.1接入指南——验证服务器地址122.1开发环境搭建01OPTION02OPTION03OPTION接入指南接口测试号申请接口在线调试2.1开发环境搭建01OPTION02OPTION03OP132.1开发环境搭建2.1.2接口测试号申请由于用户体验和安全性方面的考虑,微信公众号的注册有一定的门槛,某些高级接口权限需要微信认证后才可以获取,微信认证必须是企业或组织才能申请认证,而个人是不可以的。所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信团队推出了微信公众账号测试号。测试号申请网址:/debug/cgi-bin/sandbox?t=sandbox/login2.1开发环境搭建2.1.2接口测试号申请142.1开发环境搭建2.1.2接口测试号申请在出现的页面中单击登录即会跳转至如左侧所示的一个微信二维码页面,使用手机微信扫一扫网页中二维码,手机则会出现如右图所示的界面登陆公众平台测试账号系统。2.1开发环境搭建2.1.2接口测试号申请152.1开发环境搭建2.1.2接口测试号申请测试号接口权限表2.1开发环境搭建2.1.2接口测试号申请测试号接口162.1开发环境搭建01OPTION02OPTION03OPTION接入指南接口测试号申请接口在线调试2.1开发环境搭建01OPTION02OPTION03OP172.1开发环境搭建2.1.3接口在线测试微信公众平台接口在线调试工具微信公众平台接口在线调试网站:/debug2.1开发环境搭建2.1.3接口在线测试微信公众平台18基础接口开发环境搭建微信Web开发调试工具基础接口开发环境搭建微信Web开发调试工具19
2.2基础接口1、access_token的使用2、access_token的生成获取接口调用凭证获取微信服务器IP地址
如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过以下接口获得微信服务器IP地址列表或者IP网段信息。access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。2.2基础接口1、access_token的使用2、ac202.2基础接口
2.2.1获取接口调用凭证——access_token的使用
为了对appsecrect进行保密,开发者或运营商需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新access_token。在刷新过程中,中控服务器对外输出的依然是旧的access_token。access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口。2.2基础接口212.2基础接口
2.2.1获取接口调用凭证——access_token的生成
公众号可以使用AppID和AppSecret调用接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发页中获得。http请求方式:
GET/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET2.2基础接口222.2基础接口
2.2.1获取接口调用凭证——access_token的生成
获取access_token参数说明表参数名称是否必须参数描述grant_type是获取access_token填写client_credentialappid是第三方用户唯一凭证secret是第三方用户唯一凭证密钥,即appsecret2.2基础接口232.2基础接口
2.2.1获取接口调用凭证——access_token的生成
正常情况下,返回数据包:{"access_token":"ACCESS_TOKEN","expires_in":7200}错误时会返回错误码等信息,数据包示例:{"errcode":40013,"errmsg":"invalid
appid"}参数名称参数描述expires_in凭证有效时间,单位:秒2.2基础接口参数名称参数描述expires_242.2基础接口
2.2.2获取微信服务器IP地址
http请求方式:
GET/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN正常情况下,返回数据包:{"ip_list":["","","/25"]}错误时返回错误码信息,示例数据包:{"errcode":40013,"errmsg":"invalid
appid"}2.2基础接口错误时返回错误码信息,示例数据包25基础接口开发环境搭建微信Web开发调试工具基础接口开发环境搭建微信Web开发调试工具262.3微信Web开发调试工具01OPTION02OPTION03OPTION04OPTION调试微信网页授权调试JS-SDK相关功能移动调试与Chrome集成使用2.3微信Web开发调试工具01OPTION02OPTIO272.3微信web开发调试工具
为了帮助开发者更方便、更安全地开发和调试基于微信的网页,微信公众号团队推出了Web开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在PC或者Mac上进行开发和调试工作。2.3微信web开发调试工具282.3微信web开发调试工具
顶部菜单栏是刷新、后退、选中地址栏等动作的统一入口,以及微信客户端版本的模拟设置页。
左侧是微信的WebView模拟器,可以直接操作网页,模拟用户真实行为。
右侧上方是地址栏,用于输入待调试的页面链接,以及清除缓存按钮。
右侧下方是相关的请求和返回结果,以及调试界面和登录按钮。2.3微信web开发调试工具顶部菜单栏是刷新292.3微信web开发调试工具
2.3.1调试微信网页授权
开发者可以直接在PC或者Mac上进行网页调试,具体操作步骤为:1、使用手机微信扫码登录2、绑定开发者微信号3、调试微信网页授权2.3微信web开发调试工具1、使用手机微信扫302.3微信web开发调试工具01OPTION02OPTION03OPTIONJS-SDK的使用基础接口调试JS-SDK调试调试JS-SDK相关功能2.3微信web开发调试工具01OPTION02OPTIO312.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用
微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。JS-SDK的使用如下:(1)绑定域名
登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”就完成了域名的绑定。登录后可在“开发者中心”查看对应的接口权限。(2)引入JS文件
在需要调用JS接口的页面引入如下JS文件/open/js/jweixin-1.0.0.js2.3微信web开发调试工具322.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用(3)通过config接口注入权限验证配置
所有需要使用JS-SDK的页面首先需要注入配置信息,否则将无法调用。而同一个URL仅需调用一次,对于变化URL的SPA的WebApp可以在每次URL变化的时进行调用。wx.config({debug:true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:'',//必填,公众号的唯一标识timestamp:,//必填,生成签名的时间戳nonceStr:'',//必填,生成签名的随机串signature:'',//必填,签名,见附录1jsApiList:[]//必填,需要使用的JS接口列表,所有JS接口列表见附录2});2.3微信web开发调试工具332.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用(4)通过ready接口处理成功验证
wx.ready(function(){//config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});2.3微信web开发调试工具2.3.2调试J342.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用(5)通过error接口处理失败验证wx.error(function(res){//config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});2.3微信web开发调试工具2.3.2调试J352.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用以上所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:1、success:接口调用成功时执行的回调函数。2、fail:接口调用失败时执行的回调函数。3、complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。4、cancel:用户单击取消时的回调函数,仅部分有用户取消操作的api才会用到。5、trigger:监听Menu中的按钮单击时触发的方法,该方法仅支持Menu中的相关接口。2.3微信web开发调试工具2.3.2调试J362.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用以上所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:1、success:接口调用成功时执行的回调函数。2、fail:接口调用失败时执行的回调函数。3、complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。4、cancel:用户单击取消时的回调函数,仅部分有用户取消操作的api才会用到。5、trigger:监听Menu中的按钮单击时触发的方法,该方法仅支持Menu中的相关接口。2.3微信web开发调试工具2.3.2调试J372.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试判断当前客户端版本是否支持指定JS接口的方法如下:wx.checkJsApi{jsApiList:['chooseImage'],//需要检测的JS接口列表,所有JS接口列表见附录2,success:function(res){//以键值对的形式返回,可用的api值true,不可用为false
//如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}}});2.3微信web开发调试工具2.3.2调试J382.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(1)分享接口①获取“分享到朋友圈”按钮单击状态及自定义分享内容接口:wx.onMenuShareTimeline({title:'',//分享标题link:'',//分享链接imgUrl:'',//分享图标success:function(){
//用户确认分享后执行的回调函数},cancel:function(){//用户取消分享后执行的回调函数}});2.3微信web开发调试工具2.3.2调试J392.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(1)分享接口②获取“分享给朋友”按钮单击状态及自定义分享内容接口:wx.onMenuShareAppMessage({title:'',//分享标题desc:'',//分享描述link:'',//分享链接imgUrl:'',//分享图标type:'',//分享类型,music、video或link,不填默认为linkdataUrl:'',//如果type是music或video,则要提供数据链接,默认为空success:function(){
//用户确认分享后执行的回调函数},cancel:function(){//用户取消分享后执行的回调函数}});2.3微信web开发调试工具2.3.2调试J402.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(1)分享接口③获取“分享到QQ”按钮单击状态及自定义分享内容接口:wx.onMenuShareQQ({title:'',//分享标题desc:'',//分享描述link:'',//分享链接imgUrl:'',//分享图标success:function(){
//用户确认分享后执行的回调函数},cancel:function(){//用户取消分享后执行的回调函数}});2.3微信web开发调试工具2.3.2调试J412.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(1)分享接口④获取“分享到腾讯微博”按钮单击状态及自定义分享内容接口:wx.onMenuShareWeibo({title:'',//分享标题desc:'',//分享描述link:'',//分享链接imgUrl:'',//分享图标success:function(){
//用户确认分享后执行的回调函数},cancel:function(){//用户取消分享后执行的回调函数}});2.3微信web开发调试工具2.3.2调试J422.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(1)分享接口⑤获取“分享到QQ空间”按钮单击状态及自定义分享内容接口:wx.onMenuShareQZone({title:'',//分享标题desc:'',//分享描述link:'',//分享链接imgUrl:'',//分享图标success:function(){
//用户确认分享后执行的回调函数},cancel:function(){//用户取消分享后执行的回调函数}});2.3微信web开发调试工具2.3.2调试J432.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(2)图像接口①拍照或从手机相册中选图接口:wx.chooseImage({count:1,//默认9sizeType:['original','compressed'],//可以指定是原图还是压缩图,默认二者都有sourceType:['album','camera'],//可以指定来源是相册还是相机,默认二者都有success:function(res){
varlocalIds=res.localIds;//返回选定照片的本地ID列表,localId可以作为img标签src属性显示图片}});2.3微信web开发调试工具2.3.2调试J442.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(2)图像接口②预览图片接口:wx.previewImage({current:'',//当前显示图片的http链接urls:[]//需要预览的图片http链接列表});2.3微信web开发调试工具2.3.2调试J452.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(2)图像接口③上传图片接口wx.uploadImage({localId:'',//需要上传的图片的本地ID,由chooseImage接口获得isShowProgressTips:1,//默认为1,显示进度提示success:function(res){varserverId=res.serverId;//返回图片的服务器端ID}});2.3微信web开发调试工具2.3.2调试J462.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(2)图像接口④下载图片接口wx.downloadImage({serverId:'',//需要下载的图片的服务器端口ID,由uploadImage接口获得isShowProgressTips:1,//默认为1,显示进度提示success:function(res){varlocalId=res.localId;//返回图片下载后的本地ID}});2.3微信web开发调试工具2.3.2调试J472.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(3)音频接口①开始录音接口:wx.startRecord();②停止录音接口:wx.stopRecord({success:function(res){varlocalId=res.localId;}});2.3微信web开发调试工具2.3.2调试J482.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(3)音频接口③监听录音自动停止接口:wx.onVoiceRecordEnd({//录音时间超过一分钟没有停止的时候会执行complete回调complete:function(res){
varlocalId=res.localId;
}});2.3微信web开发调试工具2.3.2调试J492.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(3)音频接口④播放语音接口:wx.playVoice({localId:''//需要播放的音频的本地ID,由stopRecord接口获得});⑤监听语言播放完毕接口:wx.onVoicePlayEnd({success:function(res){varlocalId=res.localId;//返回音频的本地ID}});2.3微信web开发调试工具2.3.2调试J502.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(3)音频接口⑥上传语音接口:wx.uploadVoice({localId:'',//需要上传的音频的本地ID,由stopRecord接口获得isShowProgressTips:1,//默认为1,显示进度提示success:function(res){varserverId=res.serverId;//返回音频的服务器端ID}});2.3微信web开发调试工具2.3.2调试J512.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(3)音频接口⑦下载语音接口:wx.downloadVoice({serverId:'',//需要下载的音频的服务器端ID,由uploadVoice接口获得isShowProgressTips:1,//默认为1,显示进度提示success:function(res){varlocalId=res.localId;//返回音频的本地ID}});2.3微信web开发调试工具2.3.2调试J522.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(4)智能接口(识别音频并返回结果)wx.translateVoice({localId:'',//需要识别的音频的本地Id,由录音相关接口获得isShowProgressTips:1,//默认为1,显示进度提示success:function(res){alert(res.translateResult);//语音识别的结果}});2.3微信web开发调试工具2.3.2调试J532.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(5)设备信息(获取网络状态)wx.getNetworkType({success:function(res){varnetworkType=workType;//返回网络类型2g,3g,4g,wifi}});2.3微信web开发调试工具2.3.2调试J542.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(6)地理位置①使用微信内置地图查看位置接口:wx.openLocation({latitude:0,//纬度,浮点数,范围为90~-90longitude:0,//经度,浮点数,范围为180~-180name:'',//位置名address:'',//地址详情说明scale:1,//地图缩放级别,整形值,范围从1~28。默认为最大infoUrl:''//在查看位置界面底部显示的超链接,可单击跳转});2.3微信web开发调试工具2.3.2调试J552.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(6)地理位置②获取地理位置接口:wx.getLocation({type:'wgs84',//默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'success:function(res){varlatitude=res.latitude;//纬度,浮点数,范围为90~-90varlongitude=res.longitude;//经度,浮点数,范围为180~-180varspeed=res.speed;//速度,以米/每秒计varaccuracy=res.accuracy;//位置精度}});2.3微信web开发调试工具2.3.2调试J562.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(7)摇一摇周边①开启查找周边ibeacon设备接口:wx.startSearchBeacons({ticket:"",
//摇周边的业务ticket,系统自动添加在摇出来的页面链接后面complete:function(argv){//开启查找完成后的回调函数}});2.3微信web开发调试工具2.3.2调试J572.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(7)摇一摇周边②关闭查找周边ibeacon设备接口:wx.stopSearchBeacons({complete:function(argv){//关闭查找完成后的回调函数}});2.3微信web开发调试工具2.3.2调试J582.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(7)摇一摇周边③监听周边ibeacon设备接口:wx.onSearchBeacons({complete:function(argv){//回调函数,可以数组形式取得该商家注册的在周边的相关设备列表}});2.3微信web开发调试工具2.3.2调试J592.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(8)界面操作①关闭当前网页窗口接口:wx.closeWindow();②批量隐藏功能按钮接口:wx.hideMenuItems({menuList:[]//要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮});2.3微信web开发调试工具2.3.2调试J602.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(8)界面操作③批量显示功能按钮接口:wx.showMenuItems({menuList:[]//要显示的菜单项});④隐藏所有非基础按钮接口:wx.hideAllNonBaseMenuItem();⑤显示所有功能按钮接口:wx.showAllNonBaseMenuItem();2.3微信web开发调试工具2.3.2调试J612.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(9)微信扫一扫wx.scanQRCode({needResult:0,//默认为0,扫描结果由微信处理,1则直接返回扫描结果,scanType:["qrCode","barCode"],//可以指定扫二维码还是一维码,默认二者都有success:function(res){varresult=res.resultStr;//当needResult为1时,扫码返回的结果}});2.3微信web开发调试工具2.3.2调试J622.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(10)微信小店跳转微信商品页接口:wx.openProductSpecificView({productId:'',//商品idviewType:''//0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页});2.3微信web开发调试工具2.3.2调试J632.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(11)微信卡券接口调用请求说明:http请求方式:GET/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card返回数据示例:{"errcode":0,"errmsg":"ok","ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKdvsdshFKA","expires_in":7200}参数名参数描述errmsg错误信息ticketapi_ticket,卡券接口中签名所需签证2.3微信web开发调试工具2.3.2调试J642.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(11)微信卡券①拉取适用卡券列表并获取用户选择信息:wx.chooseCard({shopId:'',//门店IdcardType:'',//卡券类型cardId:'',//卡券Idtimestamp:0,//卡券签名时间戳nonceStr:'',//卡券签名随机串signType:'',//签名方式,默认'SHA1'cardSign:'',//卡券签名success:function(res){varcardList=res.cardList;//用户选中的卡券列表信息}});2.3微信web开发调试工具2.3.2调试J652.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(11)微信卡券①拉取适用卡券列表并获取用户选择信息:wx.chooseCard({shopId:'',//门店IdcardType:'',//卡券类型cardId:'',//卡券Idtimestamp:0,//卡券签名时间戳nonceStr:'',//卡券签名随机串signType:'',//签名方式,默认'SHA1'cardSign:'',//卡券签名success:function(res){varcardList=res.cardList;//用户选中的卡券列表信息}});参数名称是否必填数据类型示例值参数描述shopId否string(24)1234门店ID。shopID用于筛选出拉起带有指定location_list(shopID)的卡券列表,非必填。cardType否string(24)GROUPON卡券类型,用于拉起指定卡券类型的卡券列表。当cardType为空时,默认拉起所有卡券的列表,非必填。cardId否string(32)p1Pj9jr90_SQRaVqYI239Ka1erk卡券ID,用于拉起指定cardId的卡券列表,当cardId为空时,默认拉起所有卡券的列表,非必填。timestamp是string(32间戳。nonceStr是string(32)sduhi123随机字符串。signType是string(32)SHA1签名方式,目前仅支持SHA1cardSign是string(64)abcsdijcous123签名。2.3微信web开发调试工具2.3.2调试J662.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(11)微信卡券②批量添加卡券接口:wx.addCard({cardList:[{cardId:'',cardExt:''}],//需要添加的卡券列表success:function(res){varcardList=res.cardList;//添加的卡券列表信息}success:function(res){varcardList=res.cardList;//用户选中的卡券列表信息}});2.3微信web开发调试工具2.3.2调试J672.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(11)微信卡券③查看微信卡包中的卡券接口:wx.openCard({cardList:[{cardId:'',code:''}],//需要打开的卡券列表});2.3微信web开发调试工具2.3.2调试J682.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——基础接口调试(12)微信支付wx.chooseWXPay({timestamp:0,//支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr:'',//支付签名随机串,不长于32位package:'',//统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)signType:'',//签名方式,默认为'SHA1',使用新版支付需传入'MD5'paySign:'',//支付签名success:function(res){//支付成功后的回调函数}});2.3微信web开发调试工具2.3.2调试J692.3微信web开发调试工具
2.3.3移动调试通过微信Web开发者工具中的远程调试功能,实时映射手机屏幕到微信Web开发者工具上,将帮助开发者更高效地调试X5Blink内核的网页,具体步骤如下:1.准备工作安装0.5.0或以上版本的微信Web开发者工具。确认移动设备是否支持远程调试功能。打开移动设备中的USB调试功能。安装移动设备USB驱动。打开X5Blink内核的inspector功能。2.3微信web开发调试工具2.3.3移动调702.3微信web开发调试工具
2.3.3移动调试2.开始调试
使用USB数据线将移动设备与pc或mac端连接后,单击打开微信Web开发者工具“移动调试”tab,选择X5Blink调试功能,将会打开一个新窗口,在微信中访问任意网页即可开始调试。连接设备信息手机微信打开的网页信息2.3微信web开发调试工具2.3.3移动调712.3微信web开发调试工具
2.3.4与Chrome集成调试
微信开发者工具上集成了ChromeTools模块,我们可以直接在微信Web开发者工具上对相关元素的样式进行调试,该功能与之前在PC上的调试体验一致。与ChromeTools模块的集成2.3微信web开发调试工具2.3.4与Ch72THANKSTHANKS73第2章微信公众平台开发准备第2章微信公众平台开发准备74能力CAPACITY要求能够搭建好开发环境。掌握接口在线调试工具调试接口的方法。掌握基础接口调用凭证与获取微信服务器IP地址的方法。掌握微信Web开发调试工具的使用方法。能力CAPACITY要求能够搭建好开发环境。掌握接口在线调试75基础接口开发环境搭建微信Web开发调试工具基础接口开发环境搭建微信Web开发调试工具762.1开发环境搭建01OPTION02OPTION03OPTION接入指南接口测试号申请接口在线调试2.1开发环境搭建01OPTION02OPTION03OP772.1开发环境搭建
2.1.1接入指南——获取服务器资源
服务器类型虚拟空间百度BAE新浪SAE云主机….指自己托管于IDC机房的服务器或者第三方服务商提供的服务器,一般一个人使用一整台服务器。第三方服务商将一台主机分成多个虚拟主机,供多人使用可以申请免费使用,但是有一定条件限制可以申请免费使用,但是有一定条件限制2.1开发环境搭建服务器类型虚拟空间百度BAE新浪SA782.1开发环境搭建2.1.1接入指南——获取服务器资源(1)申请账号
/(2)创建应用以新浪SAE为例介绍如何申请免费的SAE应用空间以及上传程序文件2.1开发环境搭建2.1.1接入指南——获取服务器资源792.1开发环境搭建(3)创建版本(4)上传代码2.1.1接入指南——获取服务器资源2.1开发环境搭建(3)创建版本(4)上传代码2.1.1802.1开发环境搭建2.1.1接入指南——填写服务器配置(1)服务器地址URL
开发者用来接收微信消息和事件的接口URL,该URL必须正确响应微信发送的Token验证。(2)Token
Token是由开发者任意填写的签名,该Token会与服务器接口URL中包含的Token进行比对,从而验证安全性。
(3)EncodingAESKey
由开发者手动填写或随机生成的,主要用于消息体加密解密的密钥。2.1开发环境搭建2.1.1接入指南——填写服务器配置812.1开发环境搭建2.1.1接入指南——填写服务器配置服务器配置填写2.1开发环境搭建2.1.1接入指南——填写服务器配置822.1开发环境搭建2.1.1接入指南——验证服务器地址的有效性
开发者提交配置信息后,微信服务器将发送GET请求到填写的服务器地址URL上从而验证消息的确来自微信服务器,GET请求携带参数如下表所示:参数描述signature微信加密签名,signature结合了开发者请求中的timestamp参数,nonce参数。timestamp时间戳nonce随机数echostr随机字符串GET请求参数列表2.1开发环境搭建2.1.1接入指南——验证服务器地址832.1开发环境搭建2.1.1接入指南——验证服务器地址的有效性
获得GET请求的几个参数后,开发者就可以通过signature对请求进行校验。开发者开发的校验程序要能够处理GET请求,并对请求者进行身份验证,确保请求来自微信服务器。校验流程为:首先将token、timestamp、nonce三个参数进行字典序排序;随后将三个参数字符串拼接成一个字符串并进行sha1加密;开发者获得加密后的字符串可与signature对比,标识该请求来源于微信,原样返回echostr参数内容,则接入生效。2.1开发环境搭建2.1.1接入指南——验证服务器地址842.1开发环境搭建2.1.1接入指南——验证服务器地址的有效性
publicvoidProcessRequest(HttpContextcontext){strings="";List<string>l=newList<string>();l.Add("你填写的token");l.Add(context.Request.QueryString["timestamp"]);l.Add(context.Request.QueryString["nonce"]);l.Sort();foreach(string_sinl)s+=_s;s=FormsAuthentication.HashPasswordForStoringInConfigFiles(s,"SHA1").ToLower();if(s==context.Request.QueryString["signature"]){context.Response.Write(context.Request.QueryString["echostr"]);}}publicboolIsReusable{get{returnfalse;}}2.1开发环境搭建2.1.1接入指南——验证服务器地址852.1开发环境搭建01OPTION02OPTION03OPTION接入指南接口测试号申请接口在线调试2.1开发环境搭建01OPTION02OPTION03OP862.1开发环境搭建2.1.2接口测试号申请由于用户体验和安全性方面的考虑,微信公众号的注册有一定的门槛,某些高级接口权限需要微信认证后才可以获取,微信认证必须是企业或组织才能申请认证,而个人是不可以的。所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信团队推出了微信公众账号测试号。测试号申请网址:/debug/cgi-bin/sandbox?t=sandbox/login2.1开发环境搭建2.1.2接口测试号申请872.1开发环境搭建2.1.2接口测试号申请在出现的页面中单击登录即会跳转至如左侧所示的一个微信二维码页面,使用手机微信扫一扫网页中二维码,手机则会出现如右图所示的界面登陆公众平台测试账号系统。2.1开发环境搭建2.1.2接口测试号申请882.1开发环境搭建2.1.2接口测试号申请测试号接口权限表2.1开发环境搭建2.1.2接口测试号申请测试号接口892.1开发环境搭建01OPTION02OPTION03OPTION接入指南接口测试号申请接口在线调试2.1开发环境搭建01OPTION02OPTION03OP902.1开发环境搭建2.1.3接口在线测试微信公众平台接口在线调试工具微信公众平台接口在线调试网站:/debug2.1开发环境搭建2.1.3接口在线测试微信公众平台91基础接口开发环境搭建微信Web开发调试工具基础接口开发环境搭建微信Web开发调试工具92
2.2基础接口1、access_token的使用2、access_token的生成获取接口调用凭证获取微信服务器IP地址
如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过以下接口获得微信服务器IP地址列表或者IP网段信息。access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。2.2基础接口1、access_token的使用2、ac932.2基础接口
2.2.1获取接口调用凭证——access_token的使用
为了对appsecrect进行保密,开发者或运营商需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新access_token。在刷新过程中,中控服务器对外输出的依然是旧的access_token。access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口。2.2基础接口942.2基础接口
2.2.1获取接口调用凭证——access_token的生成
公众号可以使用AppID和AppSecret调用接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发页中获得。http请求方式:
GET/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET2.2基础接口952.2基础接口
2.2.1获取接口调用凭证——access_token的生成
获取access_token参数说明表参数名称是否必须参数描述grant_type是获取access_token填写client_credentialappid是第三方用户唯一凭证secret是第三方用户唯一凭证密钥,即appsecret2.2基础接口962.2基础接口
2.2.1获取接口调用凭证——access_token的生成
正常情况下,返回数据包:{"access_token":"ACCESS_TOKEN","expires_in":7200}错误时会返回错误码等信息,数据包示例:{"errcode":40013,"errmsg":"invalid
appid"}参数名称参数描述expires_in凭证有效时间,单位:秒2.2基础接口参数名称参数描述expires_972.2基础接口
2.2.2获取微信服务器IP地址
http请求方式:
GET/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN正常情况下,返回数据包:{"ip_list":["","","/25"]}错误时返回错误码信息,示例数据包:{"errcode":40013,"errmsg":"invalid
appid"}2.2基础接口错误时返回错误码信息,示例数据包98基础接口开发环境搭建微信Web开发调试工具基础接口开发环境搭建微信Web开发调试工具992.3微信Web开发调试工具01OPTION02OPTION03OPTION04OPTION调试微信网页授权调试JS-SDK相关功能移动调试与Chrome集成使用2.3微信Web开发调试工具01OPTION02OPTIO1002.3微信web开发调试工具
为了帮助开发者更方便、更安全地开发和调试基于微信的网页,微信公众号团队推出了Web开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在PC或者Mac上进行开发和调试工作。2.3微信web开发调试工具1012.3微信web开发调试工具
顶部菜单栏是刷新、后退、选中地址栏等动作的统一入口,以及微信客户端版本的模拟设置页。
左侧是微信的WebView模拟器,可以直接操作网页,模拟用户真实行为。
右侧上方是地址栏,用于输入待调试的页面链接,以及清除缓存按钮。
右侧下方是相关的请求和返回结果,以及调试界面和登录按钮。2.3微信web开发调试工具顶部菜单栏是刷新1022.3微信web开发调试工具
2.3.1调试微信网页授权
开发者可以直接在PC或者Mac上进行网页调试,具体操作步骤为:1、使用手机微信扫码登录2、绑定开发者微信号3、调试微信网页授权2.3微信web开发调试工具1、使用手机微信扫1032.3微信web开发调试工具01OPTION02OPTION03OPTIONJS-SDK的使用基础接口调试JS-SDK调试调试JS-SDK相关功能2.3微信web开发调试工具01OPTION02OPTIO1042.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用
微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。JS-SDK的使用如下:(1)绑定域名
登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”就完成了域名的绑定。登录后可在“开发者中心”查看对应的接口权限。(2)引入JS文件
在需要调用JS接口的页面引入如下JS文件/open/js/jweixin-1.0.0.js2.3微信web开发调试工具1052.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用(3)通过config接口注入权限验证配置
所有需要使用JS-SDK的页面首先需要注入配置信息,否则将无法调用。而同一个URL仅需调用一次,对于变化URL的SPA的WebApp可以在每次URL变化的时进行调用。wx.config({debug:true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:'',//必填,公众号的唯一标识timestamp:,//必填,生成签名的时间戳nonceStr:'',//必填,生成签名的随机串signature:'',//必填,签名,见附录1jsApiList:[]//必填,需要使用的JS接口列表,所有JS接口列表见附录2});2.3微信web开发调试工具1062.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用(4)通过ready接口处理成功验证
wx.ready(function(){//config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});2.3微信web开发调试工具2.3.2调试J1072.3微信web开发调试工具
2.3.2调试JS-SDK相关功能——JS-SDK的使用(5)通过error接口处理失败验证wx.error(function(res){//config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年《堆雪人》音乐课件在早教中心的应用探讨
- 2024年教育创新:《六国论》课件的跨界合作
- 2HAZOP系统培训课件:2024年行业标准解析
- 《神州谣》教学课件:传承与发扬中华文化
- 教育创新:2024年三角形分类教案新编
- 小学生食品安全班会课件
- 部编版五年级上册语文第三单元综合检测卷(带答案)
- 《葡萄沟》说课稿
- 2024年电流测量技术在医疗设备中的应用
- 计算机三级网络考前模拟试题及答案
- 快递统计明细表
- 混凝土用水检测
- 平键键槽的尺寸与公差
- 勘察项目服务计划方案
- 土地报批流程
- 小学低段学生数学审题能力培养的实践与研究实验方案
- 铁路信号工程施工技术及工艺工法
- 换热站运行记录表
- 混凝土早强剂检测报告
- 反洗钱终结性考试题目及答案
- 学生家长会调查问卷
评论
0/150
提交评论