订阅号的服务器配置投入使用有什么用

默认分类 未结 1 760
____Hnrp°↘
____Hnrp°↘ 2023-03-21 05:44
相关标签:
1条回答
  • 2023-03-21 06:30
    你的url要能响应这个请求,首先你要对其进行校验,“若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。”校验方法如下: 加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信不知你看到了这里会不会有疑问?你是否会想:如果我不校验,直接返回echostr参数内容呢?微信后台允许我配置成功吗?笔者亲试过,答案是可以!为什么呢?因为只要你配置的url返回了echostr,那么微信后台就认为你的url能正确响应,是可用的。至于你是否真的去做了校验,微信服务器并不知道。你之所以要校验是为了确认请求是来自微信服务器,反正微信告诉了你校验方式,你不去校验,由此带来的安全问题就是你自己的事了。 处理get请求的controller类如下:/** *@ClassName: WeixinController *@Description: 响应Controller *@author zhutulang *@date 2016年1月4日 *@version V1.0 */@Controller @RequestMapping(/weixinCon)public class WeixinController { private Logger log =Logger.getLogger(WeixinController.class); @RequestMapping(method =RequestMethod.GET) public void get(HttpServletRequest request,HttpServletResponse response) { log.info(请求进来了...); // 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 String signature =request.getParameter(signature); // 时间戳 String timestamp =request.getParameter(timestamp); // 随机数 String nonce =request.getParameter(nonce); // 随机字符串 String echostr =request.getParameter(echostr); PrintWriter out = null; try { out = response.getWriter(); // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败 if (SignUtil.checkSignature(signature,timestamp, nonce)) { out.print(echostr); } } catch (IOException e) { e.printStackTrace(); } finally { out.close(); out = null; } } }URL和TOKEN都是跟微信第三方合作才有的,第三方绑定该公众号后会生成这两个,我就是做微信第三方的,与疑问可以,请采纳1、先要在电脑上架设服务器;2、放上网站,本地可以访问,在IE输入127.0.0.1可以打开网站;3、路由器里设虑拟服务器,就设置本机的IP地址,端口80(如果你服务器端口是8080 那么就要设置成8080 ,如果没改服务器端口那就是80);4、本机要设置成静态IP ,不然不行;5、安装花生壳,再去花生壳网站注册一个二级域名,绑定就可以了。对方机器要设置好ip地址必须跟你本机能ping通。对方机器啥系统啊?这个开发者中心里的服务器要开启,你的程序才能接入微信公众号是不是防火墙的问题啊?
    0 讨论(0)
提交回复