微信公众号-学习

微信公众平台是什么 ? 是通过公众号为微信用户提供资讯和服务的平台。

微信公众平台开发接口是什么?是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,提供相关的服务。

OpenID是什么? 是为了识别用户,每个用户针对每个公众账号都会有一个安全的OpenID.如果需要在多个公众号、移动应用之间做用户共通,则需要在微信开发平台,将这些公众号和应用绑定到同一个开放平台账号下。绑定后,一个用户虽然对多个公众号有多个OpenID,但是有一个UnionID。

公众号为用户提供服务的方式有哪两种?1 公众号消息会话 2 公众号内网页。

公众号消息会话是什么? 有四种类型 1 群发消息 公众号可以以一定的频率(订阅号每天一次、服务号每月四次)向用户发送消息,包括文字消息、图片消息、视频消息、语言消息

2 被动回复消息 公众号接收到用户发送的给公众号的消息后,会到开发者预先在开发者中心设置的服务器地址做相应的处理,公众号可以在5秒内回复一个消息,也可以告诉微信服务器该消息暂不回复

3 客户消息 在用户给公众号发送消息的48小时内,公众号可以给用户发送不限数量的消息,主要用于客服场景。用户的行为也会触发事件推动。

4 模板消息 需要特定的时间给用户发送通知(比如工资发放 消费情况),公众号可以利用特定的模板,给用户发送消息。

 公众号内网页是什么 ?

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

2 微信JS-SDK. 是开发者在网页上通过Javascript使用微信原生功能包,可以使用它在微信上录制或者播放语言,拍照或者上传图片等;

1 微信公众号的类型 

1.1 订阅号 

1.2 服务号

1.3 企业号

------2017-01-20  下午17:40

企业自己的服务器接入微信公众号,为自己的用户提供讯息和服务,那么如何接入微信公众平台?

1 填写服务器配置

2 验证服务器地址的有效性

3 依据接口文档实现业务逻辑

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

同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。

2 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数描述signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp时间戳nonce随机数echostr随机字符串;

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

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

PHP事例代码如下:
private function checkSignature()
{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
	$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;
	}
}

继续学习~


作者:RichardCui
出处:https://www.cnblogs.com/yachao1120/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-RichardCuiBlog

原文地址:https://www.cnblogs.com/yachao1120/p/6294115.html