/*
* @(#)WXBizMsgCryptTest.java
*
* @Copyright(c) 2015 All rights reserved.
*
*/
package com.gustz.dove.cli.api.security.service.wxaes;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import com.gustz.dove.cli.api.service.base.CliTestBase;
/**
* TODO: 微信加解密消息的测试
*
* @author ZHENFENG ZHANG
* @since [ Aug 13, 2015 ]
*/
public class WXBizMsgCryptTest extends CliTestBase<String> {
@Override
public void setUp() throws Exception {
super.setUp();
}
@Override
public void tearDown() throws Exception {
super.tearDown();
}
/**
* Test method for {@link WXBizMsgCrypt#encryptMsg(java.lang.String, java.lang.String, java.lang.String)}.
*/
@Test
public void testEncryptMsg() {
}
/**
* Test method for {@link WXBizMsgCrypt#decryptMsg(java.lang.String, java.lang.String, java.lang.String, java.lang.String)}.
*/
@Test
public void testDecryptMsg() {
}
/**
* Test method for {@link WXBizMsgCrypt#verifyUrl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)}.
*/
@Test
public void testVerifyUrl() {
}
public static void main(String[] args) throws Exception {
//
// 第三方回复公众平台
//
// 需要加密的明文
String encodingAesKey = "991e774ec250251467eebfb9c9fd52d240e71d48000";
String token = "d9122943d962713f08e94fba93da63be";
String timestamp = "1441718147";
String nonce = "1780523614";
String appId = "wx4cd30499c762f181";
String replyMsg = " 中文<xml><ToUserName><![CDATA[oia2TjjewbmiOUlr6X-1crbLOvLw]]></ToUserName><FromUserName><![CDATA[gh_7f083739789a]]></FromUserName><CreateTime>1407743423</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[eYJ1MbwPRJtOvIEabaxHs7TX2D-HV71s79GUxqdUkjm6Gs2Ed1KF3ulAOA9H1xG0]]></MediaId><Title><![CDATA[testCallBackReplyVideo]]></Title><Description><![CDATA[testCallBackReplyVideo]]></Description></Video></xml>";
WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId);
String mingwen = pc.encryptMsg(replyMsg, timestamp, nonce);
System.out.println("加密后: \n" + mingwen);
//
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
StringReader sr = new StringReader(mingwen);
InputSource is = new InputSource(sr);
Document document = db.parse(is);
//
Element root = document.getDocumentElement();
NodeList nodelist1 = root.getElementsByTagName("Encrypt");
NodeList nodelist2 = root.getElementsByTagName("MsgSignature");
String encrypt = nodelist1.item(0).getTextContent();
String msgSignature = nodelist2.item(0).getTextContent();
//
// 公众平台发送消息给第三方,第三方处理
//
// 第三方收到公众号平台发送的消息
String result2 = pc.decryptMsg(msgSignature, timestamp, nonce, encrypt);
System.out.println("解密后明文: " + result2);
//pc.verifyUrl(null, null, null, null);
}
}