微信java开发1——接入微信公众平台开发

接入微信公众平台开发
接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
2、验证服务器地址的有效性
第一步:填写服务器配置
这里我用的是测试号,测试号具有所有的权限,方便后面的接口调用。
这里写图片描述
要注意在微信开发中,是需要提供一个外网可以访问的网址,这里我使用natapp映射本地服务器。Natapp的使用这里不做介绍了。

Token的填写可以自定义。
这里写图片描述
如图,
http://lonbon.natapp4.cc等同于http://192.168.2.39:80
192.168.2.39是本地服务器的ip;80是服务器的端口,微信开发文档规定,以http//开头只支持80端口。
在IDEA中配置tomcat服务器,如下图,
这里写图片描述
项目是创建在IEDA中。
url中的/respMsg是微信服务器与本地项目进行交互的入口。
需要在项目的web.xml进行配置,如下图
这里写图片描述
第二步:验证消息的确来自微信服务器
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

检验signature的Java示例代码:
新建一个Servlet,继承httpServlet,重写doGet方法,在daGet方法中对signature进行校验。(Tomcat默认执行doGet方法)
这里写图片描述

新建一个校验signature的工具类SignUtil,如下
package com.lonbon.util;

import java.security.MessageDigest;
import java.util.Arrays;

/**
* 描述: 验证消息的确来自微信服务器
* Created by hst on 2017/10/20.
*/
public class SignUtil {
private static String token = “imooc”;

public static boolean checkSignature(String signature, String timestamp, String nonce) {
    boolean result = false;

    // 对token、timestamp和nonce按字典序排序
    String[] array = new String[]{token, timestamp, nonce};
    Arrays.sort(array);

    // 将三个参数字符拼接成一个字符串
    String str = array[0].concat(array[1]).concat(array[2]);

    String sha1Str = null;
    try {
        // 对拼接后的字符串进行sha1加密
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        byte[] digest = md.digest(str.getBytes());
        sha1Str = byte2str(digest);
    }
    catch(Exception e) {
    }

    if(sha1Str != null &&  sha1Str.equals(signature)) {
        result = true;
    }

    return result;
}

/*
 * 将字节数组转换成字符串
 */
public static String byte2str(byte[] array) {
    StringBuffer hexstr = new StringBuffer();
    String shaHex="";
    for(int i = 0; i < array.length; i++) {
        shaHex = Integer.toHexString(array[i] & 0xFF);
        if(shaHex.length() < 2) {
            hexstr.append(0);
        }
        hexstr.append(shaHex);
    }
    return hexstr.toString();
}

}

这里需要注意一点。Token要和接口配置信息的token一致。

代码写完后,再去配置接口信息,如果配置失败,大概是服务器没开或者填写的url不对。
Goog lucky!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值