Commit ed7dd05d authored by cy's avatar cy

微信支付

parent 987ca904
......@@ -59,40 +59,7 @@ public class Md5Util {
}
return sb.toString();
}
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
} catch (Exception exception) {
}
return resultString;
}
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
}
......@@ -60,10 +60,11 @@
<version>0.0.3</version>
</dependency>
<!--微信开源封装sdk-->
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-apache-httpclient</artifactId>
<version>0.2.1</version>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>3.0.0</version>
</dependency>
<!--pdf导出 -->
......@@ -73,6 +74,7 @@
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
......
......@@ -6,6 +6,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
......@@ -17,16 +19,19 @@ public interface TestWxPayService {
* @Param
* @return
*/
R<String> wxPay(PayPageDto payPageDto, HttpServletResponse response);
R<Map<String, String>> wxPay(PayPageDto payPageDto, HttpServletResponse response);
R<String> h5WxPay(PayPageDto payPageDto,HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException;
R<String> WxPayApplets(PayPageDto payPageDto,HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException;
/***
*测试-支付成功回调
*支付成功回调
* @param request
* @param response
* @return
*/
R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response);
void wxPayCallBack(HttpServletRequest request, HttpServletResponse response) throws Exception;
R<Map<String,String>> wxQuery(String out_trade_no) throws Exception;
}
......@@ -15,7 +15,7 @@ import java.security.spec.InvalidKeySpecException;
/**
* @author 86187
*/
public interface WxPayService {
public interface WxPayService1 {
/**
* 微行支付接口
......
......@@ -5,7 +5,7 @@ import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.dto.PayQueryDto;
import cn.wisenergy.model.vo.AddLimitVo;
import cn.wisenergy.service.app.UserLimitService;
import cn.wisenergy.service.app.WxPayService;
import cn.wisenergy.service.app.WxPayService1;
import cn.wisenergy.service.httpClient.WechatPayHttpClientBuilder;
import cn.wisenergy.service.httpClient.auth.AutoUpdateCertificatesVerifier;
......@@ -52,7 +52,7 @@ import java.util.UUID;
*/
@Service
@Slf4j
public class WxPayServiceImpl implements WxPayService {
public class WxPayService1Impl implements WxPayService1 {
@Autowired
private UserLimitService userLimitService;
......
......@@ -12,6 +12,7 @@ import cn.wisenergy.service.httpClient.util.PemUtil;
import cn.wisenergy.service.wxpay.WxCommon;
import com.fasterxml.jackson.core.JsonProcessingException;
import okhttp3.HttpUrl;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
......@@ -21,7 +22,6 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.junit.After;
import org.springframework.beans.factory.annotation.Value;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
......@@ -33,16 +33,18 @@ import java.security.PrivateKey;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
public class WxPayUtil {
@Value("${wxPay.APP_ID}")
/* @Value("${wxPay.APP_ID}")
private static String appid;
@Value("${wxPay.MCH_ID}")
private static String mchid;
@Value("${wxPay.PRIVATE_KEY}")
private static String key;
private static String key;*/
/**
* 商户号
*/
......@@ -186,22 +188,24 @@ public class WxPayUtil {
* @return
* @throws UnsupportedEncodingException
*/
public static String createOrderInfo(PayPageDto payPageDto,String tradeNo) throws UnsupportedEncodingException {
public static String createOrderInfo(PayPageDto payPageDto,String tradeNo,String product_id,String time_expire) throws UnsupportedEncodingException {
String nonce_str = RandomStringUtils.randomAlphanumeric(16);
SortedMap<String,String> parameters = new TreeMap<String,String>();
parameters.put("appid", WxCommon.APP_ID);
parameters.put("mch_id",mchId);
parameters.put("body", "充值");
parameters.put("description","充值");
parameters.put("out_trade_no", tradeNo);
parameters.put("notify_url",WxCommon.NOTIFY_URL);
parameters.put("out_trade_no",tradeNo);
parameters.put("notify_url", "http://raux9u.natappfree.cc/pay/wxPayCallBack.do");
//parameters.put("notify_url",WxCommon.NOTIFY_URL);
DecimalFormat df = new DecimalFormat("#");
//parameters.put("total_fee", df.format(payPageDto.getTotal()*100));
parameters.put("total_fee", df.format(1));
parameters.put("nonce_str", nonce_str);
parameters.put("trade_type","NATIVE");
parameters.put("product_id", "100001");
parameters.put("product_id", product_id);
parameters.put("spbill_create_ip","0.0.0.0");
parameters.put("time_expire",time_expire);
String characterEncoding = "UTF-8";
String sign = createSign(characterEncoding,parameters);
parameters.put("sign", sign);//签名
......@@ -215,6 +219,7 @@ public class WxPayUtil {
return new String(s.getBytes("UTF-8"));
}
/***
* h5生成统一下单格式的订单,生成一个XML格式的字符串
* @return
......@@ -227,8 +232,8 @@ public class WxPayUtil {
String spbill_create_ip = getRealIp(request);
SortedMap<String,String> parameters = new TreeMap<String,String>();
parameters.put("appid", appid);
parameters.put("mchid", mchid);
parameters.put("appid", WxCommon.APP_ID);
parameters.put("mch_id", mchId);
parameters.put("body", "充值");
parameters.put("out_trade_no", tradeNo);
parameters.put("nonce_str", nonce_str);
......@@ -252,6 +257,7 @@ public class WxPayUtil {
return new String(s.getBytes("UTF-8"));
}
/***
* 小程序生成统一下单格式的订单,生成一个XML格式的字符串
* @return
......@@ -260,8 +266,8 @@ public class WxPayUtil {
public static String createOrderInfoWx(PayPageDto payPageDto,String tradeNo,HttpServletRequest request,String nonce_str) throws UnsupportedEncodingException, JsonProcessingException {
SortedMap<String,String> parameters = new TreeMap<String,String>();
parameters.put("appid", appid);
parameters.put("mchid", mchid);
parameters.put("appid", WxCommon.APP_ID);
parameters.put("mch_id", mchId);
parameters.put("body", "充值");
parameters.put("description","充值");
parameters.put("out_trade_no", tradeNo);
......@@ -270,7 +276,6 @@ public class WxPayUtil {
DecimalFormat df = new DecimalFormat("#");
//parameters.put("total_fee", df.format(payPageDto.getTotal()*100));
parameters.put("total_fee", df.format(1));
parameters.put("trade_type","JSAPI");
String characterEncoding = "UTF-8";
String sign = createSign(characterEncoding,parameters);
......@@ -291,23 +296,21 @@ public class WxPayUtil {
* @param parameters
* @return
*/
public static String createSign(String characterEncoding, SortedMap<String,String> parameters){
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
public static String createSign(String characterEncoding, SortedMap<String,String> parameters) {
StringBuilder sb = new StringBuilder(); // 多线程访问的情况下需要用StringBuffer
Set es = parameters.keySet(); // 所有参与传参的key按照accsii排序(升序)
for (Object set : es) {
String k = set.toString();
Object v = parameters.get(k);
sb.append(k)
.append("=")
.append(v.toString())
.append("&");
}
sb.append("key=" + WxCommon.PRIVATE_KEY);
String sign = Md5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
System.out.println("签名:"+sign);
return sign;
sb.append("key=")
.append(WxCommon.PRIVATE_KEY);
return DigestUtils.md5Hex(sb.toString()).toUpperCase();
}
/**
......@@ -328,4 +331,17 @@ public class WxPayUtil {
}
return ip;
}
/**
* 设置微信二维码失效时间,并返回具体失效的时间点
* @param expire 二维码的有效时间,单位是毫秒
* @return
*/
public static String getOrderExpireTime(Long expire){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date now = new Date();
Date afterDate = new Date(now .getTime() + expire);
return sdf.format(afterDate );
}
}
......@@ -12,7 +12,7 @@ public class WxCommon {
public static final String MCHID = "1606042985";
public static final String NOTIFY_URL = "http://http://tcdwak.natappfree.cc/pay/wxPayCallBack.do";
public static final String NOTIFY_URL = "http://111.203.232.171:8997/pay/wxPayCallBack.do";
public static final String WX_PAY_URL_pc = "https://api.mch.weixin.qq.com/v3/pay/transactions/native";
......
......@@ -118,6 +118,7 @@
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
......@@ -129,6 +130,8 @@
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
......@@ -138,8 +141,6 @@
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
......@@ -165,11 +166,18 @@
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wxpay:wxpay-sdk:0.0.3" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-pay:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.9" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.26" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:qrcode-utils:1.1" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
......
......@@ -5,7 +5,7 @@ import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.dto.PayQueryDto;
import cn.wisenergy.service.app.AliPayService;
import cn.wisenergy.service.app.TestWxPayService;
import cn.wisenergy.service.app.WxPayService;
import cn.wisenergy.service.app.WxPayService1;
import cn.wisenergy.service.common.Common;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
......@@ -18,6 +18,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -30,6 +31,7 @@ import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.util.Map;
/**
* @author 86187
......@@ -44,7 +46,7 @@ import java.security.spec.InvalidKeySpecException;
public class PayController {
@Autowired
private WxPayService wxPayService;
private WxPayService1 wxPayService;
@Autowired
private TestWxPayService testWxPayService;
......@@ -96,35 +98,10 @@ public class PayController {
}
@ApiOperation(value = "微行支付-统一下单测试", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wxPayTest")
public R<String> wxPayTest(@RequestBody PayPageDto payPageDto) throws UnsupportedEncodingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
return wxPayService.wxPay(payPageDto);
}
@ApiOperation(value = "微信支付-交易查询", notes = "微信支付-交易查询", httpMethod = "POST")
@ApiImplicitParam(name = "payQueryDto", value = "查询参数", dataType = "PayQueryDto")
@PostMapping("/queryWx")
public R<String> queryWx(@RequestBody PayQueryDto payQueryDto) throws InvalidKeySpecException, SignatureException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {
if (null == payQueryDto || StringUtils.isBlank(payQueryDto.getOutTradeNo())) {
return R.error("操作错误!");
}
return wxPayService.queryWx(payQueryDto);
}
@ApiOperation(value = "测试-微行支付-统一下单", notes = "测试-微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wx_Pay")
public R<String> wx_Pay(@RequestBody PayPageDto payPageDto) throws IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, IllegalBlockSizeException {
return wxPayService.wx_Pay(payPageDto);
}
@ApiOperation(value = "微行支付-统一下单", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wxPay")
public R<String> wxPay(@RequestBody PayPageDto payPageDto,HttpServletResponse response){
public R<Map<String, String>> wxPay(@RequestBody PayPageDto payPageDto,HttpServletResponse response){
return testWxPayService.wxPay(payPageDto, response);
}
......@@ -134,15 +111,32 @@ public class PayController {
public R<String> h5WxPay(@RequestBody PayPageDto payPageDto,HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException {
return testWxPayService.h5WxPay(payPageDto,request, response);
}
@ApiOperation(value = "小程序-统一下单", notes = "小程序-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/WxPayApplets")
public R<String> WxPayApplets(@RequestBody PayPageDto payPageDto,HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException {
return testWxPayService.WxPayApplets(payPageDto,request, response);
}
/**
* 微信回调函数
* 支付成功后微信服务器会调用此方法
*/
@ApiOperation(value = "微信回调函数", notes = "微信回调函数", httpMethod = "POST")
@RequestMapping(value = "/wxPayCallBack.do")
public R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response) {
return testWxPayService.wxPayCallBack(request,response);
public void wxPayCallBack(HttpServletRequest request, HttpServletResponse response) throws Exception {
testWxPayService.wxPayCallBack(request,response);
}
@ApiOperation(value = "微信支付-交易查询", notes = "微信支付-交易查询", httpMethod = "POST")
@ApiImplicitParam(name = "out_trade_no", value = "查询参数", dataType = "String")
@PostMapping("/queryWx")
public R<Map<String,String>> queryWx(@Param("out_trade_no") String out_trade_no) throws Exception{
System.out.println("out_trade_no:"+out_trade_no);
if (StringUtils.isBlank(out_trade_no)) {
return R.error("入参为空");
}
return testWxPayService.wxQuery(out_trade_no);
}
}
......@@ -120,6 +120,7 @@
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
......@@ -131,6 +132,8 @@
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.23" level="project" />
......@@ -153,11 +156,18 @@
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wxpay:wxpay-sdk:0.0.3" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-pay:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.9" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.26" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:qrcode-utils:1.1" level="project" />
<orderEntry type="library" name="Maven: com.google.zxing:core:3.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
......@@ -169,8 +179,6 @@
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment