记得上下班打卡 | git大法好,push需谨慎

Commit 7c0788cb authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/dev' into dev

parents 62f43927 e56d8f2f
...@@ -343,7 +343,7 @@ public class AdamLoginController { ...@@ -343,7 +343,7 @@ public class AdamLoginController {
if (null == respJNode) { if (null == respJNode) {
return ResponseDto.success(null); return ResponseDto.success(null);
} }
openId = String.valueOf(respJNode.get("openid")); openId = respJNode.get("openid").asText();
} catch (Exception e) { } catch (Exception e) {
log.error("WX.API调用异常", e); log.error("WX.API调用异常", e);
} }
...@@ -363,7 +363,7 @@ public class AdamLoginController { ...@@ -363,7 +363,7 @@ public class AdamLoginController {
if (null == respJNode || !respJNode.get("errcode").isEmpty()) { if (null == respJNode || !respJNode.get("errcode").isEmpty()) {
return ResponseDto.success(null); return ResponseDto.success(null);
} }
openId = String.valueOf(respJNode.get("openid")); openId = respJNode.get("openid").asText();
} catch (Exception e) { } catch (Exception e) {
log.error("WX.API调用异常", e); log.error("WX.API调用异常", e);
} }
......
...@@ -5,10 +5,10 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -5,10 +5,10 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy; import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler; import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler;
import com.liquidnet.service.dragon.channel.wepay.strategy.WepayStrategyContext; import com.liquidnet.service.dragon.channel.wepay.strategy.WepayStrategyContext;
import com.liquidnet.service.dragon.channel.wepay.util.WepayUtil;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -46,7 +46,7 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -46,7 +46,7 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
InputStream inputStream = request.getInputStream();// 从request中取得输入流 InputStream inputStream = request.getInputStream();// 从request中取得输入流
Map<String, String> notifyMap = new HashMap<String, String>(); Map<String, String> notifyMap = new HashMap<String, String>();
try { try {
notifyMap = WepayUtil.parseXml(inputStream); notifyMap = PayWepayUtils.parseXml(inputStream);
log.info("dragonNotify-->wepay json : {}", JSON.toJSONString(notifyMap)); log.info("dragonNotify-->wepay json : {}", JSON.toJSONString(notifyMap));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -4,7 +4,6 @@ import com.liquidnet.commons.lang.util.DateUtil; ...@@ -4,7 +4,6 @@ import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto; import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto;
import com.liquidnet.service.dragon.channel.wepay.strategy.IWepayStrategy; import com.liquidnet.service.dragon.channel.wepay.strategy.IWepayStrategy;
import com.liquidnet.service.dragon.channel.wepay.util.WepayUtil;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils; import com.liquidnet.service.dragon.utils.PayWepayUtils;
...@@ -44,10 +43,11 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -44,10 +43,11 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
//追加请求参数 //追加请求参数
SortedMap<String, Object> parameters = appendRequestParam(commonParams); SortedMap<String, Object> parameters = appendRequestParam(commonParams);
//生成签名 //生成签名
String sign = WepayUtil.getSign(parameters,parentKey); String sign = PayWepayUtils.getInstance().createSign(parameters);
parameters.put("sign", sign); parameters.put("sign", sign);
//构造支付请求xml //构造支付请求xml
String data = WepayUtil.mapToXml(parameters); String data = PayWepayUtils.getInstance().getRequestXml(parameters);
HttpPost httpost = new HttpPost(this.getRequestUrl()); HttpPost httpost = new HttpPost(this.getRequestUrl());
httpost.setEntity(new StringEntity(data, "UTF-8")); httpost.setEntity(new StringEntity(data, "UTF-8"));
...@@ -87,6 +87,8 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -87,6 +87,8 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
payData.setPaySign(respWepayDto.getSign()); payData.setPaySign(respWepayDto.getSign());
payData.setSignType("MD5"); payData.setSignType("MD5");
payData.setTimeStamp(Long.valueOf(DateUtil.now().getTime()).toString()); payData.setTimeStamp(Long.valueOf(DateUtil.now().getTime()).toString());
payData.setPartnerId(respWepayDto.getMchId());
payData.setPrepayId(respWepayDto.getPrepayId());
respDto.setPayData(payData); respDto.setPayData(payData);
return respDto; return respDto;
} }
...@@ -99,7 +101,6 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -99,7 +101,6 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
String nonceStr = PayWepayUtils.getInstance().getNonceStr(); String nonceStr = PayWepayUtils.getInstance().getNonceStr();
SortedMap<String, Object> parameters = new TreeMap<>(); SortedMap<String, Object> parameters = new TreeMap<>();
parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId()); parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId());
parameters.put("appid", PayWepayUtils.getInstance().getAppId());
parameters.put("nonce_str", nonceStr); parameters.put("nonce_str", nonceStr);
parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp()); parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp());
parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue()); parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue());
......
...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto;
import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler; import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -29,6 +30,7 @@ public class WepayStrategyAppImpl extends AbstractWepayStrategy { ...@@ -29,6 +30,7 @@ public class WepayStrategyAppImpl extends AbstractWepayStrategy {
@Override @Override
SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
requestMap.put("trade_type", "APP"); requestMap.put("trade_type", "APP");
requestMap.put("appid", PayWepayUtils.getInstance().getAPP_ID());
return requestMap; return requestMap;
} }
......
...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto;
import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler; import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -30,6 +31,7 @@ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{ ...@@ -30,6 +31,7 @@ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{
SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
requestMap.put("trade_type", "JSAPI"); requestMap.put("trade_type", "JSAPI");
requestMap.put("openid", requestMap.get("openId")); requestMap.put("openid", requestMap.get("openId"));
requestMap.put("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID());
return requestMap; return requestMap;
} }
......
...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto;
import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler; import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -30,6 +31,7 @@ public class WepayStrategyJsImpl extends AbstractWepayStrategy{ ...@@ -30,6 +31,7 @@ public class WepayStrategyJsImpl extends AbstractWepayStrategy{
SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
requestMap.put("trade_type", "JSAPI"); requestMap.put("trade_type", "JSAPI");
requestMap.put("openid", requestMap.get("openId")); requestMap.put("openid", requestMap.get("openId"));
requestMap.put("appid", PayWepayUtils.getInstance().getJS_APP_ID());
return requestMap; return requestMap;
} }
......
...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto;
import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler; import com.liquidnet.service.dragon.channel.wepay.strategy.annotation.StrategyWepayHandler;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -29,6 +30,7 @@ public class WepayStrategyWapImpl extends AbstractWepayStrategy{ ...@@ -29,6 +30,7 @@ public class WepayStrategyWapImpl extends AbstractWepayStrategy{
@Override @Override
SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
requestMap.put("trade_type", "MWEB"); requestMap.put("trade_type", "MWEB");
requestMap.put("appid", PayWepayUtils.getInstance().getWAP_APP_ID());
return requestMap; return requestMap;
} }
......
...@@ -72,10 +72,12 @@ public class PayController { ...@@ -72,10 +72,12 @@ public class PayController {
@RequestParam(value = "expireTime",required = true) String expireTime){ @RequestParam(value = "expireTime",required = true) String expireTime){
//为什么在js和applet中才需要判断open_id? //为什么在js和applet中才需要判断open_id?
if(payType.equalsIgnoreCase(DragonConstant.PayChannelEnum.WEPAY.getCode())){ if(payType.equalsIgnoreCase(DragonConstant.PayChannelEnum.WEPAY.getCode())){
if(StringUtil.isEmpty(openId)){ if(deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.JS.getCode())||deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.APPLET.getCode())) {
if (StringUtil.isEmpty(openId)) {
return ResponseDto.failure("微信支付openId不能为空!"); return ResponseDto.failure("微信支付openId不能为空!");
} }
} }
}
DragonPayBaseReqDto dragonPayBaseReqDto = new DragonPayBaseReqDto(); DragonPayBaseReqDto dragonPayBaseReqDto = new DragonPayBaseReqDto();
dragonPayBaseReqDto.setPayType(payType); dragonPayBaseReqDto.setPayType(payType);
dragonPayBaseReqDto.setDeviceFrom(deviceFrom); dragonPayBaseReqDto.setDeviceFrom(deviceFrom);
...@@ -95,6 +97,7 @@ public class PayController { ...@@ -95,6 +97,7 @@ public class PayController {
dragonPayBaseReqDto.setExpireTime(expireTime); dragonPayBaseReqDto.setExpireTime(expireTime);
return dragonOrdersService.dragonPay(dragonPayBaseReqDto); return dragonOrdersService.dragonPay(dragonPayBaseReqDto);
} }
@PostMapping("/checkOrder") @PostMapping("/checkOrder")
@ApiOperation("订单查询") @ApiOperation("订单查询")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
......
...@@ -2,13 +2,14 @@ package com.liquidnet.service.dragon.utils; ...@@ -2,13 +2,14 @@ package com.liquidnet.service.dragon.utils;
import com.alipay.api.internal.util.file.IOUtils; import com.alipay.api.internal.util.file.IOUtils;
import com.liquidnet.commons.lang.util.MD5Utils; import com.liquidnet.commons.lang.util.MD5Utils;
import com.liquidnet.service.dragon.channel.wepay.resp.WePayRefundReturnDto;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts; import org.apache.http.ssl.SSLContexts;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.dom4j.DocumentException; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
...@@ -24,9 +25,13 @@ public class PayWepayUtils { ...@@ -24,9 +25,13 @@ public class PayWepayUtils {
private static PayWepayUtils instance = new PayWepayUtils(); private static PayWepayUtils instance = new PayWepayUtils();
private final String merchantId = "1551961491"; private final String merchantId = "1551961491";
private final String appId = "wx3498304dda39c5a1";
private final String parentKey = "itIuO65O9yKmemOu3S8g1S4orqvCGwXK"; private final String parentKey = "itIuO65O9yKmemOu3S8g1S4orqvCGwXK";
private final String APP_ID="wx86f9777acf2cb585";
private final String WEB_APP_ID="wx3498304dda39c5a1";
private final String JS_APP_ID="wx3498304dda39c5a1";
private final String WAP_APP_ID="wx3498304dda39c5a1";
private final String APPLET_APP_ID="wx4732efeaa2b08086";
public PayWepayUtils() { public PayWepayUtils() {
} }
...@@ -36,8 +41,24 @@ public class PayWepayUtils { ...@@ -36,8 +41,24 @@ public class PayWepayUtils {
} }
public String getAppId() { public String getAPP_ID() {
return appId; return APP_ID;
}
public String getAPPLET_APP_ID() {
return APPLET_APP_ID;
}
public String getJS_APP_ID() {
return JS_APP_ID;
}
public String getWEB_APP_ID() {
return WEB_APP_ID;
}
public String getWAP_APP_ID() {
return WAP_APP_ID;
} }
public String getMerchantId() { public String getMerchantId() {
...@@ -87,7 +108,7 @@ public class PayWepayUtils { ...@@ -87,7 +108,7 @@ public class PayWepayUtils {
return sb.toString(); return sb.toString();
} }
public String createSign(SortedMap<Object, Object> parameters) { public String createSign(SortedMap<String, Object> parameters) {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序) Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator(); Iterator it = es.iterator();
...@@ -104,7 +125,7 @@ public class PayWepayUtils { ...@@ -104,7 +125,7 @@ public class PayWepayUtils {
return MD5Utils.md5(sb.toString()).toUpperCase(); return MD5Utils.md5(sb.toString()).toUpperCase();
} }
public String getRequestXml(SortedMap<Object, Object> parameters) { public String getRequestXml(SortedMap<String, Object> parameters) {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
sb.append("<xml>"); sb.append("<xml>");
Set es = parameters.entrySet(); Set es = parameters.entrySet();
...@@ -142,4 +163,26 @@ public class PayWepayUtils { ...@@ -142,4 +163,26 @@ public class PayWepayUtils {
return ""; return "";
} }
} }
@SuppressWarnings("unchecked")
public static Map<String, String> parseXml(InputStream inputStream) throws Exception {
if (inputStream == null) {
return null;
}
Map<String, String> map = new HashMap<String, String>();// 将解析结果存储在HashMap中
SAXReader reader = new SAXReader();// 读取输入流
Document document = reader.read(inputStream);
Element root = document.getRootElement();// 得到xml根元素
List<Element> elementList = root.elements();// 得到根元素的所有子节点
for (Element e : elementList) { // 遍历所有子节点
map.put(e.getName(), e.getText());
}
inputStream.close(); // 释放资源
inputStream = null;
return map;
}
} }
package com.liquidnet.service.order.service.impl; package com.liquidnet.service.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil; import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.common.mq.constant.MQConst; import com.liquidnet.common.mq.constant.MQConst;
...@@ -554,7 +555,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -554,7 +555,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
String returnData = HttpUtil.post(payUrl, httpData); String returnData = HttpUtil.post(payUrl, httpData);
log.debug("NOTIFY_URL = " + synUrl); log.debug("httpData = " + JSON.toJSONString(httpData));
currentTime = System.currentTimeMillis() - currentTime; currentTime = System.currentTimeMillis() - currentTime;
log.debug("调用 PHP 支付 -> time:" + (currentTime) + "毫秒"); log.debug("调用 PHP 支付 -> time:" + (currentTime) + "毫秒");
PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class); PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class);
......
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