微信公众号开发

开发者基本配置(登录首页)

1、填写服务器配置信息

基本配置

URL()填写的url要能正确的响应token信息,即验证token有效性所在的个控制器中的具体的方法

例如在tp框架中:http://www.shop.com/index.php/Home/Wx/token

token 用户自己定义(验证用户服务器用)

EncodingAESKey  随机生成的

开发者ID

AppID(应用ID)

wx6bca4

AppSecret(应用密钥)

65144bcd615abe6014a1e3ca9

测试号(做测试用,权限比较高)

appID

wx2ceec07b58

appsecret

608566b91ce68b2281a69c20

是否确定开启服务器配置?

请注意:开启后,用户发送的消息将自动转发到该配置地址,并且在网站中设置的自动回复和自定义菜单将失效。

OpenID:为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID

access_token:公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,       access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储,详见获取接口调用凭据(access_token)文档。

access_token的获取:

公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议

接口调用请求说明:

http请求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明:

grant_type:获取access_token填写client_credential

appid:第三方用户唯一凭证

secret:第三方用户唯一凭证密钥,即appsecret

返回说明:

正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

access_token:获取到的凭证

expires_in:凭证有效时间,单位:秒

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

公众号内网页

许多复杂的业务场景,需要通过网页形式来提供服务,这时需要用到:

1)网页授权获取用户基本信息:通过该接口,可以获取用户的基本信息(获取用户的OpenID是无需用户同意的,获取用户的基本信息则需用户同意)

登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

开发步骤的第一步:

是验证token信息的有效性:

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

发送给商户的get参数:

signature: 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数.

timestamp: 时间戳

nonce: 随机数

echostr: 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

检验signature的PHP示例代码:

private functioncheckSignature()

{

        $signature =$_GET["signature"];

        $timestamp =$_GET["timestamp"];

        $nonce = $_GET["nonce"];

        

$token = TOKEN;(开发者填写在微信公众号设置的token值)

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr, SORT_STRING);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature){

return true;

}else{

return false;

}

}

 官网文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013&token=&lang=zh_CN

你可能感兴趣的:(微信)