package net.xdclass.xdvideo.utils;
import org.w3c.dom.Entity;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.*;
/**
* 微信支付工具类,xml转map,map转xml,生成签名
*/
public class WXPayUtil {
/**
* XML格式字符串转换为Map
*
* @param strXML XML字符串
* @return XML数据转换后的Map
* @throws Exception
*/
public static Map<String, String> xmlToMap(String strXML) throws Exception {
try {
Map<String, String> data = new HashMap<String, String>();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
org.w3c.dom.Document doc = documentBuilder.parse(stream);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for (int idx = 0; idx < nodeList.getLength(); ++idx) {
Node node = nodeList.item(idx);
if (node.getNodeType() == Node.ELEMENT_NODE) {
org.w3c.dom.Element element = (org.w3c.dom.Element) node;
data.put(element.getNodeName(), element.getTextContent());
}
}
try {
stream.close();
} catch (Exception ex) {
// do nothing
}
return data;
} catch (Exception ex) {
throw ex;
}
}
/**
* 将Map转换为XML格式的字符串
*
* @param data Map类型数据
* @return XML格式的字符串
* @throws Exception
*/
public static String mapToXml(Map<String, String> data) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
org.w3c.dom.Document document = documentBuilder.newDocument();
org.w3c.dom.Element root = document.createElement("xml");
document.appendChild(root);
for (String key: data.keySet()) {
String value = data.get(key);
if (value == null) {
value = "";
}
value = value.trim();
org.w3c.dom.Element filed = document.createElement(key);
filed.appendChild(document.createTextNode(value));
root.appendChild(filed);
}
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
String output = writer.getBuffer().toString(); //.replaceAll("\n|\r", "");
try {
writer.close();
}
catch (Exception ex) {
}
return output;
}
/**
* 生成微信支付sign
* @return
*/
public static String createSign(SortedMap<String, String> params, String key){
StringBuilder sb = new StringBuilder();
Set<Map.Entry<String, String>> es = params.entrySet();
Iterator<Map.Entry<String,String>> it = es.iterator();
//生成 stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
while (it.hasNext()){
Map.Entry<String,String> entry = (Map.Entry<String,String>)it.next();
String k = (String)entry.getKey();
String v = (String)entry.getValue();
if(null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)){
sb.append(k+"="+v+"&");
}
}
sb.append("key=").append(key);
String sign = CommonUtils.MD5(sb.toString()).toUpperCase();
return sign;
}
/**
* 校验签名
* @param params
* @param key
* @return
*/
public static boolean isCorrectSign(SortedMap<String, String> params, String key){
String sign = createSign(params,key);
String weixinPaySign = params.get("sign").toUpperCase();
return weixinPaySign.equals(sign);
}
/**
* 获取有序map
* @param map
* @return
*/
public static SortedMap<String,String> getSortedMap(Map<String,String> map){
SortedMap<String, String> sortedMap = new TreeMap<>();
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()){
String key = (String)it.next();
String value = map.get(key);
String temp = "";
if( null != value){
temp = value.trim();
}
sortedMap.put(key,temp);
}
return sortedMap;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
微信在线视频系统JAVA源码
共237个文件
xml:107个
class:41个
java:40个
需积分: 9 10 下载量 33 浏览量
2018-08-25
10:48:05
上传
评论 1
收藏 304KB ZIP 举报
温馨提示
微信在线视频系统JAVA源码 可以用来参考 实现了微信支付
资源推荐
资源详情
资源评论
收起资源包目录
微信在线视频系统JAVA源码 (237个子文件)
WXPayUtil.class 7KB
WechatController.class 6KB
VideoOrderServiceImpl.class 6KB
HttpUtils.class 5KB
OrderController.class 4KB
VideoOrder.class 3KB
UserServiceImpl.class 3KB
WeChatConfig.class 3KB
JsonData.class 3KB
Comment.class 2KB
LoginIntercepter.class 2KB
VideoController.class 2KB
Video.class 2KB
Episode.class 2KB
JwtUtils.class 2KB
User.class 2KB
VideoServiceTest.class 2KB
VideoOrderMapper.class 2KB
VideoOrderMapperTest.class 2KB
CommonTest.class 2KB
VideoAdminController.class 2KB
IpUtils.class 2KB
CommonUtils.class 2KB
TestController.class 2KB
VideoProvider$1.class 2KB
Chapter.class 2KB
Cors.class 1KB
VideoServiceImpl.class 1KB
IntercepterConfig.class 1KB
XdExceptionHandler.class 1KB
VideoMapper.class 1KB
UserMapper.class 1KB
MyBatisConfig.class 1KB
XdException.class 1021B
XdvideoApplication.class 921B
VideoProvider.class 774B
XdvideoApplicationTests.class 637B
VideoOrderService.class 534B
VideoService.class 488B
VideoOrderDto.class 333B
UserService.class 249B
.classpath 1KB
mvnw.cmd 5KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.gitignore 268B
xdvideo.iml 11KB
maven-wrapper.jar 46KB
WXPayUtil.java 5KB
WechatController.java 5KB
VideoOrderServiceImpl.java 4KB
WeChatConfig.java 4KB
HttpUtils.java 3KB
OrderController.java 3KB
UserServiceImpl.java 3KB
VideoOrder.java 3KB
VideoOrderMapper.java 2KB
LoginIntercepter.java 2KB
IpUtils.java 2KB
JsonData.java 2KB
Comment.java 2KB
VideoController.java 2KB
Episode.java 2KB
Video.java 2KB
JwtUtils.java 1KB
User.java 1KB
VideoOrderMapperTest.java 1KB
VideoMapper.java 1KB
CommonTest.java 1KB
VideoProvider.java 1KB
VideoAdminController.java 1KB
VideoServiceTest.java 1KB
UserMapper.java 1KB
CommonUtils.java 1KB
Chapter.java 943B
VideoServiceImpl.java 940B
TestController.java 910B
MyBatisConfig.java 821B
XdExceptionHandler.java 755B
VideoOrderService.java 680B
IntercepterConfig.java 656B
XdException.java 628B
共 237 条
- 1
- 2
- 3
资源评论
xingy2010
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功