- zhoujianboy
- 等级: 初级会员
- 性别:
- 文章: 6
- 积分: 50
- 来自: 广州
|
发表时间:2013-06-25
最后修改:2013-06-27
BAE接入微信-JAVA版-附源码
介入微信主要是3个步骤
加密/校验流程:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String signature = req.getParameter("signature");
String timestamp = req.getParameter("timestamp");
String nonce = req.getParameter("nonce");
String echostring = req.getParameter("echostr");
String token = "YourToken"; // Note: 改成你自己的Token
if (signature == null || timestamp == null || nonce == null
|| echostring == null)
{
write(resp, "Error parameter count.");
return;
}
// 1. 将token、timestamp、nonce三个参数进行字典序排序
String[] strArr = new String[] { token, timestamp, nonce };
java.util.Arrays.sort(strArr);
// 2. 将三个参数字符串拼接成一个字符串进行sha1加密
StringBuffer sb = new StringBuffer();
for (String str : strArr)
{
sb.append(str);
}
MessageDigest mdSha1 = null;
try
{
mdSha1 = MessageDigest.getInstance("SHA-1");
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
mdSha1.update(sb.toString().getBytes());
byte[] codedBytes = mdSha1.digest();
String codedString = new BigInteger(1, codedBytes).toString(16);
// 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if (codedString.equals(signature))
{
write(resp, echostring);
return;
}
else
{
write(resp, "Check error.");
return;
}
}
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- zhoujianboy
- 等级: 初级会员
- 性别:
- 文章: 6
- 积分: 50
- 来自: 广州
|
zhoujianboy 写道
BAE接入微信-JAVA版-附源码
介入微信主要是3个步骤
加密/校验流程:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String signature = req.getParameter("signature");
String timestamp = req.getParameter("timestamp");
String nonce = req.getParameter("nonce");
String echostring = req.getParameter("echostr");
String token = "YourToken"; // Note: 改成你自己的Token
if (signature == null || timestamp == null || nonce == null
|| echostring == null)
{
write(resp, "Error parameter count.");
return;
}
// 1. 将token、timestamp、nonce三个参数进行字典序排序
String[] strArr = new String[] { token, timestamp, nonce };
java.util.Arrays.sort(strArr);
// 2. 将三个参数字符串拼接成一个字符串进行sha1加密
StringBuffer sb = new StringBuffer();
for (String str : strArr)
{
sb.append(str);
}
MessageDigest mdSha1 = null;
try
{
mdSha1 = MessageDigest.getInstance("SHA-1");
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
mdSha1.update(sb.toString().getBytes());
byte[] codedBytes = mdSha1.digest();
String codedString = new BigInteger(1, codedBytes).toString(16);
// 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if (codedString.equals(signature))
{
write(resp, echostring);
return;
}
else
{
write(resp, "Check error.");
return;
}
}
BAE(Baidu App Engine) 比 SAE(Sina App Engine)简单而且速度快, 免费支持JAVA web应用。
|
返回顶楼 |
|
|
- hellostory
- 等级: 初级会员
- 性别:
- 文章: 168
- 积分: 40
- 来自: 北京
|
BAE不是收费了吗?
|
返回顶楼 |
|
|
- zhoujianboy
- 等级: 初级会员
- 性别:
- 文章: 6
- 积分: 50
- 来自: 广州
|
hellostory 写道 BAE不是收费了吗?
有免费的配额,如果你的网站超过配额,就会收费。 如果你的网站超过配额,那估计也的网站也开始赚钱了。
|
返回顶楼 |
|
|
- hellostory
- 等级: 初级会员
- 性别:
- 文章: 168
- 积分: 40
- 来自: 北京
|
zhoujianboy 写道 hellostory 写道 BAE不是收费了吗?
有免费的配额,如果你的网站超过配额,就会收费。 如果你的网站超过配额,那估计也的网站也开始赚钱了。
谢谢!那现在可以上传Web网站吗?前段时间好像不行!
|
返回顶楼 |
|
|
- zhoujianboy
- 等级: 初级会员
- 性别:
- 文章: 6
- 积分: 50
- 来自: 广州
|
hellostory 写道 zhoujianboy 写道 hellostory 写道 BAE不是收费了吗?
有免费的配额,如果你的网站超过配额,就会收费。 如果你的网站超过配额,那估计也的网站也开始赚钱了。
谢谢!那现在可以上传Web网站吗?前段时间好像不行!
可以上传! 我已经部署过了。 参考:http://www.weixinhu.net/
|
返回顶楼 |
|
|