2018年最新版微信公众号本地测试方案

转载:https://blog.csdn.net/u013777676/article/details/79928295

1、首先申请个人微信公众号(略)

2、申请natapp收费版内网映射工具(免费版不能绑定备案域名~,不能用作微信公众号接口调试,natapp费用9元/月,已备案二级域名3元/年)

    2.1、地址:https://natapp.cn/,注册账号,下载客户端,


    2.2、选择9元/月,3元/年域名(购买域名后,把域名绑定到隧道)



    2.4、开始使用,添加config文件

    在natapp.exe同级目录下添加config.ini文件,文件内容:


  
  
  1. #将本文件放置于natapp同级目录 程序将读取 [default] 段
  2. #在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
  3. #命令行参数 -config= 可以指定任意config.ini文件
  4. [default]
  5. authtoken=(你的隧道authtoken) #对应一条隧道的authtoken
  6. clienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
  7. log=none #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
  8. loglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
  9. http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

      2.5、双击natapp.exe启动成功


    

3、接入微信开发工作号准备工作

     3.1、下载tomcat服务器

     3.2、修改tomcat端口和natapp配置的本地端口保持一致(natapp对外端口为80)

     3.3、搭建框架,ssm,ssh,servlet都可

4、编写微信公众号接入代码

   


  
  
  1. package com.stylefeng.guns.modular.wechat.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import javax.servlet.http.HttpServletResponse;
  5. import java.io.PrintWriter;
  6. import java.io.UnsupportedEncodingException;
  7. import java.security.MessageDigest;
  8. import java.security.NoSuchAlgorithmException;
  9. import java.util.Arrays;
  10. @Controller
  11. @RequestMapping( "app/wx/")
  12. public class WeChatController {
  13. private static final String token = "007";
  14. //微信公众号接入
  15. @RequestMapping( "getToken")
  16. public void getToken(HttpServletResponse response, String signature, String timestamp, String nonce, String echostr){
  17. try {
  18. PrintWriter out = response.getWriter();
  19. if(checkSignature(signature, timestamp, nonce)){
  20. System.out.println(echostr);
  21. out.print(echostr);
  22. }
  23. out.close();
  24. } catch (Exception e){
  25. e.printStackTrace();
  26. }
  27. }
  28. public static boolean checkSignature(String signature,String timestamp,String nonce){
  29. String[] arr = new String[]{token,timestamp,nonce};
  30. //排序
  31. Arrays.sort(arr);
  32. //生成字符串
  33. StringBuffer content = new StringBuffer();
  34. for ( int i = 0; i < arr.length; i++) {
  35. content.append(arr[i]);
  36. }
  37. //sha1加密
  38. String temp = getSha1(content.toString());
  39. return temp.equals(signature);
  40. }
  41. public static String getSha1(String str){
  42. if ( == str || 0 == str.length()){
  43. return ;
  44. }
  45. char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  46. 'a', 'b', 'c', 'd', 'e', 'f'};
  47. try {
  48. MessageDigest mdTemp = MessageDigest.getInstance( "SHA1");
  49. mdTemp.update(str.getBytes( "UTF-8"));
  50. byte[] md = mdTemp.digest();
  51. int j = md.length;
  52. char[] buf = new char[j * 2];
  53. int k = 0;
  54. for ( int i = 0; i < j; i++) {
  55. byte byte0 = md[i];
  56. buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
  57. buf[k++] = hexDigits[byte0 & 0xf];
  58. }
  59. return new String(buf);
  60. } catch (NoSuchAlgorithmException e) {
  61. e.printStackTrace();
  62. return ;
  63. } catch (UnsupportedEncodingException e) {
  64. e.printStackTrace();
  65. return ;
  66. }
  67. }
  68. }

5、接入微信公众号(url填写你买的已备案的二级域名,token自己填和代码中token保持一致,AESKEY自动生成)


然后提交


成功,ok可以进行愉快的编码了,如遇到问题,可以留言哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值