微信公众平台开发详细步骤与java代码

时间:2023-03-10 03:23:54
微信公众平台开发详细步骤与java代码

1、微信公众平台设置

首先在https://mp.weixin.qq.com/注册一个公众平台账号(服务号、订阅号、企业号的区别

微信公众平台地址:https://mp.weixin.qq.com

登录微信公众平台后台,在左侧列表中最下方,找到“ 基本配置 ”,点击进入

微信公众平台开发详细步骤与java代码

进入服务器配置填写框。

微信公众平台开发详细步骤与java代码

点击“修改配置”按钮

这里url需要填以下申请好的地址,tocken需要填写代码中指定好的。

2、申请服务器资源

创建新浪云计算应用

申请账号

我们使用SAE新浪云计算平台作为服务器资源,
申请地址为:

http://www.sinacloud.com

直接点击上述网址,可以看到右上角微博登录的链接。

创建新应用 

回到首页,在菜单顶部选择 控制台 ,再选择 云应用SAE 

微信公众平台开发详细步骤与java代码

进入SAE应用列表

微信公众平台开发详细步骤与java代码

微信公众平台开发详细步骤与java代码

微信公众平台开发详细步骤与java代码

应用创建成功。并自动跳转到应用列表中,上传代码包就好了。

3、核心代码(完整代码下载)

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

/** * Created by Gensis on 2016/8/10. */public class SignUtil {    private static String token = "weixinlogin";

    public static boolean checkSignature(String signature, String timestamp, String nonce) {

            String[] arr = new String[]{token, timestamp, nonce};            // 将 token, timestamp, nonce 三个参数进行字典排序            Arrays.sort(arr);            StringBuilder content = new StringBuilder();            for(int i = 0; i < arr.length; i++){                content.append(arr[i]);            }            MessageDigest md = null;            String tmpStr = null;

            try {                md = MessageDigest.getInstance("SHA-1");                // 将三个参数字符串拼接成一个字符串进行 shal 加密                byte[] digest = md.digest(content.toString().getBytes());                tmpStr = byteToStr(digest);            } catch (NoSuchAlgorithmException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            content = null;            // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信            return tmpStr != null ? tmpStr.equals(signature.toUpperCase()): false;        }

        /**         * 将字节数组转换为十六进制字符串         * @param digest         * @return         */    private static String byteToStr(byte[] digest) {        // TODO Auto-generated method stub        String strDigest = "";        for(int i = 0; i < digest.length; i++){            strDigest += byteToHexStr(digest[i]);        }        return strDigest;    }

    /**     * 将字节转换为十六进制字符串     * @param b     * @return     */    private static String byteToHexStr(byte b) {        // TODO Auto-generated method stub        char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};        char[] tempArr = new char[2];        tempArr[0] = Digit[(b >>> 4) & 0X0F];        tempArr[1] = Digit[b & 0X0F];

        String s = new String(tempArr);        return s;    }}