微信公众平台接入方式

来源:互联网 发布:苹果手机数据漫游 编辑:程序博客网 时间:2024/05/21 10:40

微信公众平台目前有订阅号、服务号、企业号三种类型。接入的方式分为明文、兼容和密文三种。明文模式下,不使用消息体加解密功能,安全系数较低。兼容模式下,明文、密文将共存,方便开发者调试和维护安全模式下,消息包为纯密文,需要开发者加密和解密,安全系数高。推荐使用安全模式。微信后台对要发送的消息进行AES-CBC加密,具体使用的是SHA1算法。三种类型公众号的接入原理都是一样的。
注意事项:接入验证TOKEN的过程中,微信后台会额外带上3个参数:signature、timestamp(时间戳)、nonce(随机数)。signature是对timestamp、nonce和TOKEN进行SHA1加密运算后的字符串。我们自己的服务器收到上面三个参数后,同样适用SHA1运算得到自己的签名signature,并将结果与微信后台提供的签名signature进行比较,一致那么接入成功。不一致可通过微信官方提供的接口调试工具进行调试。
下面是明文接入和密文接入的两种PHP源代码。仅供参考。
//接入公众号验证基类
class wechatlogin
{
public function valid()
{
echoStr=_GET[“echostr”];
//验证签名是否有效 , 用于判断是否为接入验证请求。

    if($this->checkSignature())        {            echo $echoStr;            exit;        }}private function checkSignature()    {        if (!defined("TOKEN"))             {            throw new Exception('TOKEN is not defined!');            }    $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;            }    }

};

0 0