微信公众号 消息加密_文件已加密,解压码已通过微信支付公众号发送至申请人微信 - CSDN
  • 微信公众号消息加密

    千次阅读 2018-03-26 13:55:38
    加密算法采用AES 公众账号主动调用API的情况不用加密。只有被动回复用户的消息时,才需要进行消息加解密 需要加解密的类型: 新增消息体签名验证,用于公众平台和公众账号验证消息体的正确性 针对推送给微信公众...
    • 加密算法采用AES
    • 公众账号主动调用API的情况不用加密。只有被动回复用户的消息时,才需要进行消息加解密
    • 需要加解密的类型:
      1. 新增消息体签名验证,用于公众平台和公众账号验证消息体的正确性
      2. 针对推送给微信公众账号的普通消息和事件消息,以及推送给设备公众账号的设备消息进行加密
      3. 公众账号对密文消息的回复也要求加密

    注意:只有启用加解密功能(即选择兼容模式或安全模式)后才会需要加解密某些信息

    展开全文
  • 只有被动回复消息(即粉丝向公众号发送消息,由微信服务器向公众号服务器转发xml结构,同时公众号服务器返回xml结构,由微信服务器转发给粉丝)可以设置加密.其他3种消息(群发消息,客服消息,模板消息)的调...

    一.配置公众号消息加解密方式

            在公众号官方管理后台->开发->基本配置->修改配置上有3种方式,如下:

    其中,EncodingAESKey可以随机生成.

    只有被动回复消息(即粉丝向公众号发送消息,由微信服务器向公众号服务器转发xml结构,同时公众号服务器返回xml结构,由微信服务器转发给粉丝)可以设置加密.其他3种消息(群发消息,客服消息,模板消息)的调用因为是API调用而不是对请求的返回,所以不需要加解密.

    加解密方式说明:

    1).明文模式:微信服务器向公众号服务器(即我们要处理的http://szuzsq.tunnel.qydev.com/weixin/index.php)发送的xml结构是原始的,没有加密.如下:

     

    <xml>
    	<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
    	<FromUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></FromUserName>
    	<CreateTime>1468291653</CreateTime>
    	<MsgType><![CDATA[text]]></MsgType>
    	<Content><![CDATA[i love you]]></Content>
    	<MsgId>6306264631030309910</MsgId>
    </xml>


    而公众号服务器向微信服务器回复的xml结构也是原始的,没有加密.如下:

     

     

    <xml>
    	<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>
    	<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>
    	<CreateTime>12345678</CreateTime>
    	<MsgType><![CDATA[text]]></MsgType>
    	<Content><![CDATA[你好]]></Content>
    </xml>

     

     

     

     

     

    2).安全模式:微信服务器向公众号服务器发送的xml结构是加密之后的,如下:

     

    <xml>
    	<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
    	<Encrypt><![CDATA[5iQIChI9SHJ8AygPRlQXg0TjENPp/+gMsL8QWceqRXbmZa9tfwft9JtVMhsd6acMJjq7s/gi6E/dLoaJ5optAJ3ixUoHlsJSiryZC/wkFZkY4++HQEr9sj0wHbsT9UbbW/TfXY0t5pQtM62hQKHO/AUFHiXAJ31kQrcGY4QZHyJjQDS6bchvufhOnm8paDMak3HeTf0vMBzkSZcl78V23uq8wvV1rBx4K9uzPz6AZmfV2rLbaA5u/fsQFcntl8aDK19PZfZreawt0et3AXv1DgFZEciC8vlCxwta6mjuAEIdL81t4mfa8V28iD8ul+AjWEMKcHszBQqQUkG3BTItB/8o+8h6PLYD+ZsHEUBbPttRhrlo+UlfXTehtGPVnd97GZ72ImWXb5wIadKcGSgXzvRRkVv1zav3CTjRRZH5k8kLqIxso9VmjD4Un+IF8vKaJqAu0irYWFMWYIhQZZ9CQQ==]]></Encrypt>
    </xml>

     

     

    而公众号服务器向微信服务器回复的xml结构也是加密之后的.如下:

     

    <xml>
    	<Encrypt><![CDATA[lSK3AQg4RCd3GvUpEVQiZSxBWpAgH3MJjoZIGGjd0rcO14H7JasE2O8bzA/0PusNfKuxMmcCsTq3vHlbrdvALSioQKlpl/QrNH15kelS0bG12UMJhxs1CDa+ES9IuZ4wR7Ra/Oa3kCUh9x0RKdxkAWa0+jgT3bOD0OESMWp8Iynx11QiMBSMzAiEneLUCrszUdV6eBUQvdLTXkrRWYWHdMjgbvb8psc3NyxqB7N0GOG6i7ibk/Zd1s8nsDrYYDFI/BDFgl/wOEBSFC5rWgsgCdhuUEDcnU3N1eb/veL+TJ7zDAImUUPMY/auhm7mBVQcWjpCXutIo03esQJaSGiDxfj4VVBoZslPQc3gUKzm1I4QzCVU27J8/mx41I6Zc54k]]></Encrypt>
    	<MsgSignature><![CDATA[5b9bff5f6dd7075d4ec2f4bca880d8ada48c6c7d]]></MsgSignature>
    	<TimeStamp>1468291653</TimeStamp>
    	<Nonce><![CDATA[1528778891]]></Nonce>
    </xml>

     

    3).兼容模式:微信服务器向公众号服务器发送的xml结构即有原始的,也有加密之后的,如下:

     

     

    <xml>
    	<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
    	<FromUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></FromUserName>
    	<CreateTime>1468291484</CreateTime>
    	<MsgType><![CDATA[text]]></MsgType>
    	<Content><![CDATA[i love you]]></Content>
    	<MsgId>6306263905180836845</MsgId>
    	<Encrypt><![CDATA[Kd1lnxCrEr4L3qT4De7Rp2nUgbnYj8M http:// <span style="font-family: Arial, Helvetica, sans-serif;">RpdCc4uTCwMMPkcSQ8KJmlx6rFnQPGh6gBqVaQJ20kXNKCYDQGQ1fur4Pbgydet8cDB+cvYitI/aRHo2KrVbXuJyiyuMuWw1zYWaeYmRCKN3+xyCtmtvPDBTW5PIJ7ZnUX0yGyp3J0oOjIJfULoVPqkUDY4W+Vdh0ZTR9eE7o0u9ioVUd+m5W72jsP61A7mivYCZTolCHWMFdhfoSQlxXm8tnTO1gu3v+vzTUCdWuZhpJNuD6X/Ab+vcgKSdopjlMKze8bUUw9CyT/YwEhj6CJRF46LkasUGC/i5wC7ABbTvZpGpMkuylF9pEY0E6PW+PwECsmY/aEcIp1CcsveddVJUeW9flOqgaDOiRvGyuwVMDTJo9inBuZpCRCGDUKpflBlUoD8nMbZzBxxVkUySjvmdj4Pa2V7gN2jRqtfmMtu9FzFcOyKUL/w==]]></Encrypt></span>
    </xml>

     

     

    而公众号服务器向微信服务器回复的xml结构,则和安全模式下的回复是一样的.如下:

     

    <xml>
    	<Encrypt><![CDATA[lSK3AQg4RCd3GvUpEVQiZSxBWpAgH3MJjoZIGGjd0rcO14H7JasE2O8bzA/0PusNfKuxMmcCsTq3vHlbrdvALSioQKlpl/QrNH15kelS0bG12UMJhxs1CDa+ES9IuZ4wR7Ra/Oa3kCUh9x0RKdxkAWa0+jgT3bOD0OESMWp8Iynx11QiMBSMzAiEneLUCrszUdV6eBUQvdLTXkrRWYWHdMjgbvb8psc3NyxqB7N0GOG6i7ibk/Zd1s8nsDrYYDFI/BDFgl/wOEBSFC5rWgsgCdhuUEDcnU3N1eb/veL+TJ7zDAImUUPMY/auhm7mBVQcWjpCXutIo03esQJaSGiDxfj4VVBoZslPQc3gUKzm1I4QzCVU27J8/mx41I6Zc54k]]></Encrypt>
    	<MsgSignature><![CDATA[5b9bff5f6dd7075d4ec2f4bca880d8ada48c6c7d]]></MsgSignature>
    	<TimeStamp>1468291653</TimeStamp>
    	<Nonce><![CDATA[1528778891]]></Nonce>
    </xml>

     

     

     

     

     

    二.微信公众号加解密过程

            写之前要狠狠吐槽一下,微信官方文档有2个地方https://mp.weixin.qq.com/wikihttp://mp.weixin.qq.com/wiki/home,这2个地方应该是1份新的,1份旧的.但是,我从微信公众号官方后台管理->开发->开发者工具->开发者文档,进入的是第1个地方,按理说应该是新的才对.但是在消息管理->发送消息-被动回复时加解密,这章节上,有一段话:"请开发者查看接入指引和开发者FAQ来接入消息体签名及加解密功能:接入指引,开发者FAQ,若关注技术实现,可查看技术方案:技术方案"在这段话里面,我怎么都找不着接入指引和开发者FAQ这些相关内容.后来,不记得如何找到了第2个地方,同样地方的同样一句话:"请开发者查看接入指引和开发者FAQ来接入消息体签名及加解密功能:接入指引开发者FAQ,若关注技术实现,可查看技术方案:技术方案".在这里接入指引开发者FAQ技术方案这几处,是有链接的!!!!!!!这里再次鄙视下微信的文档人员!!!!!!!!.

            好了,大家去围观接入指引,里面提到在安全和兼容模式下,微信服务器向公众号服务器转发消息的url上,会添加signature,timestamp,nonce,encrypt_type,msg_signature(注意signature和msg_signature不同)参数.例如:

    http://szuzsq.tunnel.qydev.com/weixin/index.php?signature=35703636de2f9df2a77a662b68e521ce17c34db4&timestamp=1468291653&nonce=1528778891&encrypt_type=aes&msg_signature=59e47c61f82b1ac655ea94a9ad214656f573ba5b

            下载微信官方给出的示例代码: http://mp.weixin.qq.com/wiki/static/assets/a5a22f38cb60228cb32ab61d9e4c414b.zip,里面有C++、php、Java、Python和C#版本,我们只需要用到几个文件:errorCode.php,pkcs7Encoder.php,sha1.php,wxBizMsgCrypt.php,xmlparse.php,其中wxBizMsgCrypt.php实现了微信消息加解密的业务逻辑.

    1).解密微信服务器向公众号服务器发送的xml.

     

    <?php
    	$errCode = $pc->decryptMsg($msg_signature, $timestamp, $nonce, $postStr, $decryptMsg);
    ?>

    其中,$msg_signature,$timestamp,$nonce要使用微信服务器在url中传进来的.

     

     

    2).加密公众号服务器向微信服务器回复的xml.

     

    <?php
    	$errCode = $pc->encryptMsg($responseStr, $timestamp, $nonce, $encryptMsg);
    ?>

    其中,$timestamp,$nonce既可以使用微信服务器在url中传进来的,也可以使用自己生成的.

     

    三.完整示例

     

    我的项目目录如下:

    源文件如下:

     

    <?php
    //文件名: http://szuzsq.tunnel.qydev.com/weixin/index.php
    
    require_once('aes/wxBizMsgCrypt.php');
    
    define("TOKEN", "weixin");
    define("AppID", "wxc5bc41cb7c73814f");
    define("EncodingAESKey", "r0TTQS2o4xxlJcMjCs33leS56rpNJOi12QRldiXS5Lv");
    
    $wechatObj = new wechatCallbackapiTest();
    $wechatObj->responseMsg();
    
    class wechatCallbackapiTest {
    	public function responseMsg() {
    		//微信服务器向公众号服务器发送xml
    		$timestamp = $_GET['timestamp'];
    		$nonce = $_GET["nonce"];
    		$msg_signature = $_GET['msg_signature'];
    		$encrypt_type = $_GET['encrypt_type'];
    		$postStr = file_get_contents('php://input'); //$GLOBALS["HTTP_RAW_POST_DATA"];
    
    		$pc = new WXBizMsgCrypt(TOKEN, EncodingAESKey, AppID);
    		$decryptMsg = ""; //解密后的原文
    		$errCode = $pc->decryptMsg($msg_signature, $timestamp, $nonce, $postStr, $decryptMsg);
    		error_log("**********************解密**********************\r\ntimestamp:$timestamp\r\nnonce:$nonce\r\nmsg_signature:$msg_signature\r\nencrypt_type:$encrypt_type\r\npostStr:$postStr\r\nerrCode:$errCode\r\ndecryptMsg:$decryptMsg\r\n\r\n", 3, "err.log");
    
    		//公众号服务器向微信服务器回复xml
    		$responseStr = "<xml><ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName><FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>";
    		$encryptMsg = ''; //加密后的密文
    		$errCode = $pc->encryptMsg($responseStr, $timestamp, $nonce, $encryptMsg);
    		error_log("**********************加密**********************\r\nresponseStr:$responseStr\r\nerrCode:$errCode\r\nencryptMsg:$encryptMsg", 3, "err.log");
    		echo $encryptMsg;
    	}
    }
    ?>


    效果如下:

     

     

    代码中2处使用error_log打印出来的内容(为了好看,我后期手动排了下版),如下:

     

    **********************解密**********************
    timestamp:1468298136
    nonce:1156171062
    msg_signature:5d7ad0fe355e800ab05092e62489469e27347bb6
    encrypt_type:aes
    postStr:
    <xml>
    	<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
    	<Encrypt><![CDATA[sI7OWIRI1LWe0OSH3aJbg1mIcirMiMQ7Seq8udJ0OAhrIVPKDqX2cf3tD9BPtyEgGIbQcnWIoJ6/JWjRuMSPjEcUgmpSZG1lAFb1YArPXwY2HIoi/n1mPK3E2Mntt55Y2Xp3/GlxuJxH/eg1rdad/98UfBiB5pJcmSM0odJJ+jQ1/ufIAn7fBFWwGpMeEOGtpX7mpMzVMxr5Y3qrNIIT6htnjW2nlwPFatGccHo0ne6BsRDzitLVKKOVUyIRLLcJopLb03GdAQPD3wVvUNtOKxlgvPt0gta09Z5AT6axqyBqB5Po+0TF4gNb8Q3eFJAZkl0fnzCQxnMZytf2NZ9mQjAf1lsTQfc68mCdyJ+y1g4pANvidZYpOKnfl1zI1edbIHKsdKhzWP+LX7neJtL7PNpj6Dzgm6og+z//NYR4JbiMv3DTizGywFbf112yoCiZu/ogeLbarav/5brdsbDZRA==]]></Encrypt>
    </xml>
    
    errCode:0
    decryptMsg:
    <xml>
    	<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
    	<FromUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></FromUserName>
    	<CreateTime>1468298136</CreateTime>
    	<MsgType><![CDATA[text]]></MsgType>
    	<Content><![CDATA[i love you]]></Content>
    	<MsgId>6306292475303292097</MsgId>
    </xml>
    
    **********************加密**********************
    responseStr:
    <xml>
    	<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>
    	<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>
    	<CreateTime>12345678</CreateTime>
    	<MsgType><![CDATA[text]]></MsgType>
    	<Content><![CDATA[你好]]></Content>
    </xml>
    errCode:0
    encryptMsg:
    <xml>
    	<Encrypt><![CDATA[1XLHOG845Qa3YTE0/TO3bRg1EQCD+bNc93qumuX6tkYqXmlYA4nYhRDRLC8YeoJ19Zm0E5ZvoQ/+7YLNgtxwvj5OfhFoS0GYNLS9ka9rYLwePklKWa6tfbCtln75daHWFtLms95LGC8WZPFzixJhgkWh6cOvyGkMMxWkGc439qNbgbFklG1OGdzh5ae1KP7ywMtr6d5xfM6eEyBV+Mr/Fy0B3pxFMsnx/2yFUW3OCcpPL8PB0StfPgTRoTQbWwj0blxxXRNuQSasMErGd+up8xKe0kHpBZ4Hr4L6cnika+K2BXdR7ToVOGiQ37vRixNiyO34QVIb/I0AGo5LWLJxDP6Y4E7mhgKkJh4rSU6ihJ1YUZHljibKveO5s0syAEZ9]]></Encrypt>
    	<MsgSignature><![CDATA[f41080b7fc392bd3c800d56c1479f307897cb628]]></MsgSignature>
    	<TimeStamp>1468298136</TimeStamp>
    	<Nonce><![CDATA[1156171062]]></Nonce>
    </xml>

     

    研究的时候,借鉴了方倍工作室大神的博客<<微信公众平台开发者中心安全模式消息体加解密实现>>: http://www.cnblogs.com/txw1958/p/weixin-aes-encrypt-decrypt.html

     

    展开全文
  • 前言:  最近在研究微信公众平台的开发,玩得不亦乐乎。...其实图灵机器人已经有微信接口可以直接调用。...有点扯远了,如题,微信官方为了更高的安全性,10月份推出了消息体签名验证。网上关于此项的实例不多,

    前言:

          最近在研究微信公众平台的开发,玩得不亦乐乎。基本的回复功能已经实现了,而且回复用到了图灵机器人的接口。其实图灵机器人已经有微信接口可以直接调用。如果项目的需要,想要做个性化需求的话,用这种方式是行不通的。我现在的解决方案是,我开发的应用A作为中间层,连接微信接口与图灵机器人接口。有点扯远了,如题,微信官方为了更高的安全性,10月份推出了消息体签名验证。网上关于此项的实例不多,其实根据官方的例子,重新封装一下,就可以了。


    一、准备工作:

    1.已申请了相关的订阅号或者服务号(可以用虚拟器,具体的方式没试过,百度一下,有很多介绍);

    2.已经有了原来的公众平台交互应用A;

    3.按照官网提示下载相关的示例代码;

    4.保证应用的JDK是1.6以上;

    二、具体实现:

    1.去官网设置消息加密方式,点击“开发者中心”-》“修改配置”,这里为了调试,设置为“兼容模式”:


    2.将官网下载的示例代码导入应用中,我们只需关注其中重要的接口类:WXBizMsgCrypt以及它的具体应用展示Program类;


    3.根据自己的代码应用场景,将WXBizMsgCrypt重新封装一下:

    AuthProcess.java

    package cn.qtone.xxt.base.wechat.utils;
    
    import javax.servlet.http.HttpServletRequest;
    
    import cn.qtone.xxt.base.wechat.utils.aes.AesException;
    import cn.qtone.xxt.base.wechat.utils.aes.WXBizMsgCrypt;
    
    public class AuthProcess {
    	public final static String Token = "xxxx";//公众平台上面自己填写的Token
    	public final static String EncodingAESKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";//公众平台上面自己填写的43位EncodingAESKey
    	public final static String AppID = "wx488885e67d6c19e2";//应用的appid(微信生成的)
    
    
    	/**
    	* 将加密后的原文进行解密重新封装
    	* @param request
    	* @param originalXml 原xml
    	* @return    重新解密后的xml
    	 */
    	public static String  decryptMsg(HttpServletRequest request,String originalXml) {
    		// 微信加密签名 
            //String sVerifyMsgSig = request.getParameter("signature");
            String msgSignature = request.getParameter("msg_signature");
            // 时间戳
            String timestamp = request.getParameter("timestamp");
            // 随机数
            String nonce = request.getParameter("nonce");
            try {
    			WXBizMsgCrypt pc = new WXBizMsgCrypt(Token, EncodingAESKey, AppID);
    			return pc.decryptMsg(msgSignature, timestamp, nonce, originalXml);
    		} catch (AesException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return null;
    	}
    	
    	/**
    	* 对需要回复的原文进行加密重新封装
    	* @param request
    	* @param replyXml 需要回复的xml
    	* @return    重新加密后的xml
    	 */
    	public static String  encryptMsg(HttpServletRequest request,String replyXml) {
            // 时间戳
            String timestamp = request.getParameter("timestamp");
            // 随机数
            String nonce = request.getParameter("nonce");
            try {
    			WXBizMsgCrypt pc = new WXBizMsgCrypt(Token, EncodingAESKey, AppID);
    			return pc.encryptMsg(replyXml, timestamp, nonce);
    		} catch (AesException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return null;
    	}
    }

    4.找到原来自动回复接口的流程代码,在处理数据前后,加上请求数据解密,回复数据加密的流程(下面为关键代码部分):

     //加密消息处理
     String encrypt_type =request.getParameter("encrypt_type");
     if (StringTools.nil(encrypt_type) || encrypt_type.equals("raw")) {//不用加密
    	// 正常的微信处理流程
    	result = weChatService.processWechatMag(xml);
     } else {//需走加解密流程
    	//解密请求消息体
    	String nXmlString = AuthProcess.decryptMsg(request, xml);
    	//执行原处理
    	String originalResult = weChatService.processWechatMag(nXmlString);
    	//加密回复消息体
    	result = AuthProcess.encryptMsg(request, originalResult);
     }
    总结:经测试,以上流程是成功的,但中间出现一点小状况,需要特别说明一下,这里引述一下官方FAQ的其中一个我遇到的问题及他们的解决方案:

    • 异常java.security.InvalidKeyException:illegal Key Size的解决方案:在官方网站下载JCE无限制权限策略文件(请到官网下载对应的版本, 例如JDK7的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
    我用的是jdk1.6.0_31,所以需要下载相关的文件并进行了覆盖,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html


    展开全文
  • 1.阅读“方案概述” http://mp.weixin.qq.com/wiki/index.php?title=%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0   2.下载Demo代码。   3.更新jdk的JCE无限制权限策略文件 jdk1.7到 ...

    1.阅读“方案概述”

    http://mp.weixin.qq.com/wiki/index.php?title=%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0

     

    2.下载Demo代码。

     

    3.更新jdk的JCE无限制权限策略文件

    jdk1.7到 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html下载

    jdk1.6到http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html下载

     

    JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件

     

    4.接收消息

    从request中读到msg_signature参数。

    参照示例进行解密。

    WXBizMsgCrypt pc = new WXBizMsgCrypt(_token, encodingAesKey, appId);

    ...

    String fromXML = String.format(xmlMsg, encrypt);

    String result2 = pc.decryptMsg(msgSignature, timestamp, nonce, fromXML);

    //xmlMsg为收到的原始消息         result2 为解密后的xml消息

     

    5.发送消息

    WXBizMsgCrypt pc = new WXBizMsgCrypt(_token, encodingAesKey, appId);

    String outPut = pc.encryptMsg(outPut, timestamp, nonce);

     

     

    展开全文
  • * 将微信公众号接收信息(参数微信会携带过来) * @params timestamp 时间戳 * @params nonce 随机串 * @params msg_signature 消息签名 * @params requestBody 消息体 * @return * @throws Exception...
  • 微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。 3. 公众平台 微信公众平...
  • 微信公众号开发(一)服务器及接口的配置

    万次阅读 多人点赞 2019-05-22 09:21:41
    微信公众号开发(一)服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比...
  • 关于注册这点我就简单说一下,需要注意的就是,微信公众号一般用的就是订阅号和企业号,订阅号不能认证,权限少,且不能就行二次开发。而企业号可以认证,但是认证只有一年期限,认证费用300元。当然了,为了让我们...
  • 微信公众号主要有以下几个步骤 微信公众号的通讯机制 微信公众号简介 1.注册微信公众号 2.注册测试公众号 3.搭建微信本地调试环境 1)下载客户端natapp: 2)安装natapp: 4.微信公众号接入(校验签名) 第1步中...
  • SpringBoot开发微信公众号(一)

    万次阅读 2017-12-08 15:50:41
    java开发微信公众号的环境搭建 前言:这段时间接触了下微信公众号的开发,回顾下学习的过程,做了学习的总结。微信公众号的开发有两种模式,第一种微信公众号提供的编辑模式,使用起来还是挺方便的。可以进行信息...
  • 综合笔者多年的微信公众号以及微信产品开发经验,本篇内容把微信公众号测试账户的接口配置过程分享给广大开发者朋友,开发语言是Java,采用目前流行的springmvc框架开发。 开发前必读以及准备工作: 1、微信公众...
  • 最近在学node开发,于是想自己写一个node版的微信公众号开发。开发期间踩了挺多的坑,也学到了挺多东西。这里分几个部分给大家分享一下node开发微信公众号的过程,以及哪些容易遇见的坑。(欢迎批评指正,源码在文章...
  • 手把手教你如何微信公众号开发

    万次阅读 多人点赞 2018-10-27 14:30:21
    最近的话,发现微信开发... 关于,什么是微信公众号微信公众号怎么申请,这个我就不多说,这些基本的概念不在这里进行讲解,自己可以直接百度就可以找到很多的资源。而我主要讲解一下关于微信公众号开发中,一...
  • 配置微信公众号当普通微信用户向公众号发送消息或者与微信公众号进行互动触发某些事件时,微信服务器将会把这些消息或者事件以XML数据包格式POST到开发者在微信公众号管理平台中配置的服务器地址URL上。
  • 当用户给你的微信公众号发送消息时,当用户关注或取消关注你的公众号时等等,微信都会发送消息到你指定的地址。但前提是你指定并开启了服务器配置。 message.php文件代码如下: &lt;?php echo $_GET['...
  • 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C#微信...
  • 微信公众号之微信退款

    千次阅读 2020-04-06 16:48:47
    一、前言 这次的项目主要是关于微信公众号的一个开发,本人这次分配的模块是后台微信公众号的支付和退款,第一次接触微信公众的项目刚开始一脸懵逼,开发过程中遇到各种坑,所以想自己写一篇详细的关于微信公众号的...
  • PHP微信公众号接口开发在线调试工具简介 PHP微信公众号接口开发在线调试工具可以随时随地进行微信公众号接口调试,也可以让更多的新手了解微信接口通信过程。 这是PHP版,比之前的asp执行效率高多倍。 PHP微信...
  • 最近在做微信小程序与微信公众号登录合并的接口。整理相关资料以及个人认识的心得写了这篇文章与大家一起分享。 首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一...
  • 微信公众号开发例子

    千次阅读 2019-07-21 21:33:00
    微信公众号,我们都很熟悉。但是如何开一个属于自己的一个微信公众号,其实很简单。这边文章就给一个简单的例子。需要准备的环境: 1、域名,用于微信公众号访问我们的服务器,如没有域名,建议使用花生壳进行内网...
1 2 3 4 5 ... 20
收藏数 17,576
精华内容 7,030
关键字:

微信公众号 消息加密