基于JavaEE——微信网页(二)微信开发

微信开发的准备工作

  • 微信开发测试公众号(沙盒号)
  • 微信API帮助文档
  • 微信接口在线调试
首先申请微信开发的测试公众号,登陆后会看到微信后台管理界面,如下所示 基于JavaEE——微信网页(二)微信开发_第1张图片
常用参数:AppID(公众号用户名ID),AppSecret(公众号密匙——相当于密码)

目的:通过appid和appsecret可以通过微信服务端获取到小纸条(临时口令token)

获取token的URL
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

可以查阅微信API左侧导航栏-->开始开发-->获取access_token

将URL中的大写的APPID与APPSECRET替换为测试公众号参数进行访问,微信会返回Json格式的数据

若APPID与APPSECRET没有错误,将会返还

access_token —— 公众号管理口令
exprires —— 有效时间
若有错误,则会返还如下数据包

{"errcode":40013,"errmsg":"invalid appid"}
errcode —— 错误代码,可以查阅 官方API进行错误排查

errmsg —— 错误信息

作为JavaEE开发微信,我使用的是java.net.URL类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class TokenTest {
	public static void main(String[] args) throws IOException {
	
		String getToken = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
		//替换字符串
		getToken = getToken.replaceAll("APPID", "wx5470979c202cffb4");
		getToken = getToken.replaceAll("APPSECRET", "642fe995d0bcb88d52ce14f6e1d4e7a3");
		//开启URL,将数据包转换成字符串
		URL url = new URL(getToken);
		InputStreamReader isr = new InputStreamReader(url.openStream());
		BufferedReader br = new BufferedReader(isr);
		StringBuffer sb = new StringBuffer();
		int cp = 0;
		while ((cp = br.read())!=-1){
			sb.append((char) cp);
		}
		
		System.out.println(sb.toString());
		
	}
}
打印结果如下
{"access_token":"5_ATkgQGjgtEZ7p-Zrorz9gcikrweszy2vbcxAjL6mBNH6jIeyQl4cdHKPmwMK_xKrWFSwFTaHu2T6fmQSKgiROMxtG9Tknq_1zEQ7JIlSMieIXVNNhOBpzD20rJy2xf2KaWnmTAFfPoas_xqdCXTiAFAGBX","expires_in":7200}

通过数据包的数据,可以获取到access_token。

Access_Token

  • 测试号每日获取上限200次,正式公众号为每日上限2000次
  • access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效
  • 当产生新access_token,旧access_token即失效,产生新access_token与旧access_token之间存在五分钟共存时间,保证业务的平滑过渡
获取到Access_Token后,接下来我们进行修改公众号按钮的操作,按钮如下所示

基于JavaEE——微信网页(二)微信开发_第2张图片

微信API添加按钮说明

微信API位置:左侧导航栏-->自定义菜单-->自定义菜单创建接口

调用接口,post方式传输json
http请求方式
POST(请使用https协议) 
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

这里,只需要替换掉ACCESS_TOKEN,其他按钮数据使用Post方式传输即可。
按钮数据格式
{
     "button":[
     {    
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           {    
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }


基于JavaEE——微信网页(二)微信开发_第3张图片
常用的数据类型有
button 一级类目按钮,1~3个
sub_button 二级类目按钮,1~5个
type 按钮类型,常用类型:click(点击事件,会偷偷地发送数据给服务器)
    view(连接到一个网页)
name 按钮显示名称
url 链接的地址
以Post方式提交数据, 这里引用了 另一篇博文,感谢原作者。
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.aishang.util.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;



public class WechatTest {
	static String access_tonken = ""; 
	
	public static void main(String[] args) throws Exception {
		
		Scanner scan = new Scanner(System.in);
		int flag = 0;
		do{
			System.out.println("请输入要选择的操作");
			System.out.println("1.获取token");
			System.out.println("2.添加按钮");
			int a = scan.nextInt();
			switch (a) {
			case 1:
				String token = getToken("wx5470979c202cffb4","642fe995d0bcb88d52ce14f6e1d4e7a3");
				System.out.println("服务器返回信息:" + token);
				JSONObject parseObject = JSON.parseObject(token);
				access_tonken = (String)parseObject.get("access_token");
				System.out.println("access_tonken是:" + access_tonken);
				break;
				
			case 2:
				String butURL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+access_tonken;
				String sendPost = HttpRequest.sendPost(butURL,"{\"button\":[{ \"type\":\"click\",\"name\":\"今日歌曲\",\"key\":\"V1001_TODAY_MUSIC\"},{\"name\":\"菜单\", \"sub_button\":[{\"type\":\"view\", \"name\":\"搜索\",\"url\":\"http://www.soso.com/\"},{\"type\":\"click\",\"name\":\"赞一下我们\", \"key\":\"V1001_GOOD\"}]}]}" );
				System.out.println(sendPost);
				break;
	
			default:
				break;
			}
			
			System.out.println("是否继续        -1【是】    -2【否】");
			flag = scan.nextInt();
			 
		}while(flag == 1);
		
		
		
		
	}
}





控制台输出

请输入要选择的操作
1.获取token
2.添加按钮
1
===================================
服务器返回信息:{"access_token":"5_nJBWPP2in70xxmLkrgC-i8lzBQNFAMID9ygQAiTDnxzUp6bJLYq28iX5YLOGUAtM0L7Nxz0jNUktyRJEpt4Af3zKDIQSyDl-AeXFtXSzxhz_IGRmqhB8f6ub5_zd1S7Frm1hf9E1rd8A_nN2MXUgAHAYJG","expires_in":7200}
======================================

access_tonken是:5_nJBWPP2in70xxmLkrgC-i8lzBQNFAMID9ygQAiTDnxzUp6bJLYq28iX5YLOGUAtM0L7Nxz0jNUktyRJEpt4Af3zKDIQSyDl-AeXFtXSzxhz_IGRmqhB8f6ub5_zd1S7Frm1hf9E1rd8A_nN2MXUgAHAYJG
========================================
是否继续        -1【是】    -2【否】
1
请输入要选择的操作
1.获取token
2.添加按钮
2
=======================================
{"errcode":0,"errmsg":"ok"}
是否继续        -1【是】    -2【否】

当显示errcode=0时,意味着添加成功,进入到测试公众号后台管理界面,可以清楚的看到测试关注用的二维码
基于JavaEE——微信网页(二)微信开发_第4张图片


*注意:每次调试后需要重新关注测试公众号,操作不要过快。


-----------------------------------------------分割线----------------------------------------------

大家能够看到这里,首先感谢大家的阅读, 如果大家有兴趣,可以关注一波,每一周一更



你可能感兴趣的:(微信网页开发)