zoukankan      html  css  js  c++  java
  • 微信公众号-学习

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

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

    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

  • 相关阅读:
    Eclipse 导入项目乱码问题(中文乱码)
    sql中视图视图的作用
    Java基础-super关键字与this关键字
    Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的参数理解
    Android View和ViewGroup
    工厂方法模式(java 设计模式)
    设计模式(java) 单例模式 单例类
    eclipse乱码解决方法
    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
    【转】使用 Eclipse 调试 Java 程序的 10 个技巧
  • 原文地址:https://www.cnblogs.com/yachao1120/p/6294115.html
Copyright © 2011-2022 走看看