微信开发=====>内网穿透=====>使用java后台流程

 

1.在natapp的程序下创建config.ini配置文件输入以下内容

     添加自己的authtoken
    主要减少每次输入命令启动    https://natapp.cn/article/config_ini

 

  

 

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

 

2.需要在natapp上修改创建的免费隧道(购买的隧道也是大体一致) 

修改的地方:
        1.名称 这个是随意的 可以改可以不改
        2.本地地址 这个是本地的ip地址 如果在自己的电脑跑项目可以不用
        3.本地端口: 对应的你的项目启动端口 需要注意 我的是8080 默认是80

3.启动natapp程序

4.这是我的项目访问http://xutkk9.natappfree.cc/mini/specialProduct 


 

返回的数据
	到目前为止,如果不进行微信开 ,其他的人可以在公网上可以访问你的项目了
	但是由于我是微信开发还需以下步骤
	{
	"status": 80200,
	"message": "success",
	"data": [{
		"sn": "P489356631472123904",
		"title": "龙蟠",
		"price": 15230.0,
		"smallImage": "/media/image/201810151553019280001.jpg",
		"bigImage": "/media/image/201810151552525570001.jpg",
		"gallery": [""],
		"category": "设备"
	}, {
		"sn": "P489356632217096192",
		"title": "中华",
		"price": 15263.0,
		"smallImage": "/media/image/201810151132009110001.jpg",
		"bigImage": "/media/image/201810151131250240001.jpg",
		"gallery": ["/media/image/201810151132009110001.jpg", "/media/image/201810151131250240001.jpg"],
		"category": "设备"
	}, {
		"sn": "P489356632698179584",
		"title": "空调清洗机",
		"price": 15230.0,
		"smallImage": null,
		"bigImage": "/media/image/201810151552525570001.jpg",
		"gallery": null,
		"category": "设备"
	}, {
		"sn": "P489356632871784448",
		"title": "MOTO检测仪",
		"price": 15320.0,
		"smallImage": "/media/image/201810151131250240001.jpg",
		"bigImage": "/media/image/201810151131250240001.jpg",
		"gallery": null,
		"category": "设备"
	}]
}

 

 

5.登录微信公众平台(点击即可)

   在最下面找到基本配置功能

    点击修改配置


	以下是java后台代码
	/**
		signature:微信加密签名
		echostr:随机字符串
		timestamp:时间戳
		nonce:随机数
		只有在验证URL的时候查询字符串中才会有“echostr”这个字段,验证的方法是
		将token、timestamp、nonce三个参数进行字典序排序
		将三个参数字符串拼接成一个字符串进行sha1加密
		开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
	*/
import com.aui.stock.util.json.FastJsonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.util.Arrays;

/**
 * @date: 2018/11/2 11:33
 * @author: YINLELE
 * @description:用于内网穿透给微信验证用的
 */
@Controller
@RequestMapping("/mini")
public class MiniWxController {

    Logger logger = LoggerFactory.getLogger(MiniWxController.class);

    @GetMapping("")
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        PrintWriter out = null;
        try {
            out = response.getWriter();
            if (chkJoinUp("***",//这里替换成你在公众平台的token就可以
                    request.getParameter("signature"),
                    request.getParameter("timestamp"),
                    request.getParameter("nonce"))) {
                out.write(request.getParameter("echostr"));
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            out.close();
        }
    }

    /**
     * 公众号接入数据的验证
     */
    public Boolean chkJoinUp(String token, String signature, String timestamp, String nonce) {
        String[] arr = new String[] { token, timestamp, nonce };
        logger.info("chkJoinUp={}", FastJsonUtil.toJson(arr));
        Arrays.sort(arr);
        StringBuffer content = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        String temp = encodeSHA1(content.toString());
        return temp.equals(signature);
    }

    private static String encodeSHA1(String content) {
        if (content == null || content.length() == 0) {
            return null;
        }
        char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'a', 'b', 'c', 'd', 'e', 'f'};

        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(content.getBytes("UTF-8"));

            byte[] md = mdTemp.digest();
            int j = md.length;
            char buf[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(buf);
        } catch (Exception e) {
            return null;
        }
    }
}

 以上是我操作所记录的,也许和你的做法大不相同,所以请多担待,抱歉

6.还需要去小程序平台认证服务器 点击即可(重点否则会报错)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值