微信开发整合日记(1)

最近公司新接了一个微信公众号项目,所以乘此机会学习一下微信公众平台的开发,此博客记录一下微信开发的过程和遇到的一些问题

首先我注册了一个微信公众测试号,能够使用几乎所有微信接口,除了微信支付的接口.

1.填写接口配置信息

appid:公众号的标识

appsecret:字面上的意思应该是app密码

url:你的服务器域名地址,如http://www.baidu.com/token

token:你设置的随即字符串

EncodingAESKey:随即生成或手动填写,密钥

消息加解密模式:初次开发最好使用明文模式,如果使用密文模式需要在自己项目接受数据时解密

2.架设好自己的服务器,启动自己的项目

1).验证消息来源

当接口配置信息填写完成提交时,微信服务器会请求上面填写的url地址,请求方式为GET,携带的有 signature:微信加密签名,内容为你的token参数和timestamp和nonce

timestamp:时间戳

nonce:随即数

echostr:随即字符串

将token,timestamp,nonce三个参数排序之后拼接成一个字符串加密后与signature比对,一致时返回 echostr,验证成功.

此验证是为了接受用户发送给公众号的信息来源是微信服务器,echostr参数可以保存到项目中

2).获取access_token

access_token是公众号调用微信接口唯一凭据,所有微信开放接口的调用都需要,使用时效为两个小时, 保存在项目中,并记录时间戳,超过两个小时重新获取

接口地址在微信公众平台的项目文档之中可以找到,本文不提供url地址

请求的方式为GET,需要的参数如下

grant_type:固定的为client_credential

appid:公众号唯一标识

apppsecrent:密钥

将参数请求到url之后,微信服务器会返回一个json字符串{"access_token","",expires_in":""},由于微信接 口都是以http的请求方式,所以我们可以写一个公共方法,代码如下

	public static String httpPost(String url,String params){
		String result = "";
		try{
			URL posturl = new URL(url);
			HttpURLConnection postconn = (HttpURLConnection) posturl.openConnection();
			postconn.setDoOutput(true);
			postconn.setRequestMethod("POST");
			OutputStream os = postconn.getOutputStream();
			os.write(params.getBytes(Charset.forName("UTF-8")));
			os.close();
			BufferedReader br = new BufferedReader(new InputStreamReader(postconn.getInputStream(), "utf-8"));
			String lines = "";
			while((lines = br.readLine()) != null){
				result+=lines;
			}
			postconn.disconnect();
		}catch(Exception e){
			e.printStackTrace();
		}
		return result;
	}
	
	public static String httpGet(String url){
		
		String result = "";
try{URL geturl = new URL(url);HttpURLConnection postconn = (HttpURLConnection) geturl.openConnection();postconn.setRequestMethod("GET");postconn.setDoInput(true);BufferedReader br = new BufferedReader(new InputStreamReader(postconn.getInputStream(), "utf-8"));String lines = "";while((lines = br.readLine()) != null){result += lines;}postconn.disconnect();}catch(Exception e){e.printStackTrace();}return result;}

取得返回的json字符串之后解析json,我使用的jackson的ObjectMapper

如果返回的错误信息,可以去开发文档中寻找对应的错误码调试,常见错误如下

1).开发配置时设置了密文或者半密文模式而项目中并未解密

2).appid或者appsecrent填写错误

3).url填写错误

4).服务器域名填写错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值