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

Commit 238b0000 authored by jiangxiulong's avatar jiangxiulong

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

parents 9d7db6d2 3b72725b
package com.liquidnet.service.dragon.dto; package com.liquidnet.service.dragon.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
...@@ -15,14 +16,15 @@ import java.math.BigDecimal; ...@@ -15,14 +16,15 @@ import java.math.BigDecimal;
* @date 2021/7/9 10:56 * @date 2021/7/9 10:56
*/ */
@Data @Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DragonPayBaseRespDto { public class DragonPayBaseRespDto {
private String code; private String code;
private String order_code; private String orderCode;
private Integer status; private Integer status;
private String order_id; private String orderId;
private String showUrl; private String showUrl;
...@@ -32,6 +34,8 @@ public class DragonPayBaseRespDto { ...@@ -32,6 +34,8 @@ public class DragonPayBaseRespDto {
private PayData payData; private PayData payData;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class PayData{ public static class PayData{
@JsonProperty("appId") @JsonProperty("appId")
private String appId; private String appId;
...@@ -60,101 +64,5 @@ public class DragonPayBaseRespDto { ...@@ -60,101 +64,5 @@ public class DragonPayBaseRespDto {
private String redirectUrl; private String redirectUrl;
private String orderStr; private String orderStr;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getNonceStr() {
return nonceStr;
}
public void setNonceStr(String nonceStr) {
this.nonceStr = nonceStr;
}
public String getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
}
public String getPackages() {
return packages;
}
public void setPackages(String packages) {
this.packages = packages;
}
public String getPartnerId() {
return partnerId;
}
public void setPartnerId(String partnerId) {
this.partnerId = partnerId;
}
public String getPrepayId() {
return prepayId;
}
public void setPrepayId(String prepayId) {
this.prepayId = prepayId;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getMwebUrl() {
return mwebUrl;
}
public void setMwebUrl(String mwebUrl) {
this.mwebUrl = mwebUrl;
}
public String getPaySign() {
return paySign;
}
public void setPaySign(String paySign) {
this.paySign = paySign;
}
public String getSignType() {
return signType;
}
public void setSignType(String signType) {
this.signType = signType;
}
public String getRedirectUrl() {
return redirectUrl;
}
public void setRedirectUrl(String redirectUrl) {
this.redirectUrl = redirectUrl;
}
public String getOrderStr() {
return orderStr;
}
public void setOrderStr(String orderStr) {
this.orderStr = orderStr;
}
} }
} }
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<dependency> <dependency>
<groupId>com.thoughtworks.xstream</groupId> <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId> <artifactId>xstream</artifactId>
<version>1.4.9</version> <version>1.4.17</version>
</dependency> </dependency>
</dependencies> </dependencies>
......
package com.liquidnet.service.dragon.channel.alipay.strategy.impl; package com.liquidnet.service.dragon.channel.alipay.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz; import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz;
import com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq; import com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq;
import com.liquidnet.service.dragon.channel.alipay.strategy.IAlipayStrategy; import com.liquidnet.service.dragon.channel.alipay.strategy.IAlipayStrategy;
import com.liquidnet.service.dragon.channel.alipay.strategy.annotation.StrategyAlipayHandler;
import com.liquidnet.service.dragon.channel.alipay.util.AlipayUtil; import com.liquidnet.service.dragon.channel.alipay.util.AlipayUtil;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
...@@ -21,44 +16,65 @@ import java.util.Map; ...@@ -21,44 +16,65 @@ import java.util.Map;
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
* @Description: TODO * @Description: TODO
* @class: AlipayStrategyWapImpl * @class: AbstractAlipayStrategy
* @Package com.liquidnet.service.dragon.channel.alipay.strategy.impl * @Package com.liquidnet.service.dragon.channel.alipay.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2021 * @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/10 14:34 * @date 2021/7/12 12:36
*/ */
@Component @Slf4j
@StrategyAlipayHandler(DragonConstant.DeviceFromEnum.WEB) public abstract class AbstractAlipayStrategy implements IAlipayStrategy {
public class AlipayStrategyWebImpl implements IAlipayStrategy {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Value("liquidnet.dragon.alipay.gataway-url")
private String alipayGatewayUrl;
@Autowired @Autowired
private AlipayBiz alipayBiz; private AlipayBiz alipayBiz;
protected String productCode = "QUICK_WAP_PAY";
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
//设置productCode
setProductCode();
AlipayTradePayReq alipayTradePayReq = new AlipayTradePayReq(); AlipayTradePayReq alipayTradePayReq = new AlipayTradePayReq();
alipayTradePayReq.setProductCode("QUICK_WAP_PAY"); log.info("子类 productCode:{}",this.productCode);
alipayTradePayReq.setProductCode(this.productCode);
alipayTradePayReq.setTotalAmount(dragonPayBaseReqDto.getPrice()); alipayTradePayReq.setTotalAmount(dragonPayBaseReqDto.getPrice());
alipayTradePayReq.setSubject(dragonPayBaseReqDto.getName()); alipayTradePayReq.setSubject(dragonPayBaseReqDto.getName());
alipayTradePayReq.setBody(dragonPayBaseReqDto.getDetail()); alipayTradePayReq.setBody(dragonPayBaseReqDto.getDetail());
//dragon中支付编号 //dragon中支付编号
alipayTradePayReq.setOutTradeNo(IDGenerator.payCode()); alipayTradePayReq.setOutTradeNo(dragonPayBaseReqDto.getCode());
alipayTradePayReq.setTimeExpire(dragonPayBaseReqDto.getExpireTime()); alipayTradePayReq.setTimeExpire(dragonPayBaseReqDto.getExpireTime());
//调用支付 //调用支付
Map<String, Object> result = AlipayUtil.tradeWapPay(alipayTradePayReq); Map<String, Object> result = AlipayUtil.tradeWapPay(alipayTradePayReq);
//拼接返回参数 //拼接返回参数
DragonPayBaseRespDto respDto = new DragonPayBaseRespDto(); DragonPayBaseRespDto respDto = buildCommonRespDto(dragonPayBaseReqDto);
respDto.setCode(alipayTradePayReq.getOutTradeNo()); respDto = this.buildResponseDto(respDto,result);
respDto.setOrder_code(dragonPayBaseReqDto.getOrderCode());
DragonPayBaseRespDto.PayData payData = new DragonPayBaseRespDto.PayData();
payData.setRedirectUrl(alipayGatewayUrl + result.get("body"));
respDto.setPayData(payData);
//支付订单持久化 //支付订单持久化
alipayBiz.buildPayOrders(dragonPayBaseReqDto,respDto); alipayBiz.buildPayOrders(dragonPayBaseReqDto,respDto);
return ResponseDto.success(respDto); return ResponseDto.success(respDto);
} }
/**
* 设置productCode
*/
protected abstract void setProductCode();
/**
* 构造公共返回参数
* @param dragonPayBaseReqDto
* @return
*/
protected DragonPayBaseRespDto buildCommonRespDto(DragonPayBaseReqDto dragonPayBaseReqDto){
DragonPayBaseRespDto respDto = new DragonPayBaseRespDto();
respDto.setCode(dragonPayBaseReqDto.getCode());
respDto.setOrderCode(dragonPayBaseReqDto.getOrderCode());
DragonPayBaseRespDto.PayData payData = new DragonPayBaseRespDto.PayData();
respDto.setPayData(payData);
return respDto;
}
/**
* 构造返回参数
*/
abstract DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto,Map<String, Object> respResult);
} }
package com.liquidnet.service.dragon.channel.alipay.strategy.impl; package com.liquidnet.service.dragon.channel.alipay.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz;
import com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq;
import com.liquidnet.service.dragon.channel.alipay.strategy.IAlipayStrategy;
import com.liquidnet.service.dragon.channel.alipay.strategy.annotation.StrategyAlipayHandler; import com.liquidnet.service.dragon.channel.alipay.strategy.annotation.StrategyAlipayHandler;
import com.liquidnet.service.dragon.channel.alipay.util.AlipayUtil;
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.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -28,37 +21,20 @@ import java.util.Map; ...@@ -28,37 +21,20 @@ import java.util.Map;
*/ */
@Component @Component
@StrategyAlipayHandler(DragonConstant.DeviceFromEnum.APP) @StrategyAlipayHandler(DragonConstant.DeviceFromEnum.APP)
public class AlipayStrategyAppImpl implements IAlipayStrategy { public class AlipayStrategyAppImpl extends AbstractAlipayStrategy {
@Autowired @Value("${liquidnet.dragon.alipay.gataway-url}")
StringRedisTemplate stringRedisTemplate;
@Value("liquidnet.dragon.alipay.gataway-url")
private String alipayGatewayUrl; private String alipayGatewayUrl;
@Autowired @Autowired
private AlipayBiz alipayBiz; StringRedisTemplate stringRedisTemplate;
protected void setProductCode() {
this.productCode = "QUICK_MSECURITY_PAY";
}
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto, Map<String, Object> respResult) {
AlipayTradePayReq alipayTradePayReq = new AlipayTradePayReq(); payBaseRespDto.getPayData().setRedirectUrl(alipayGatewayUrl + "?" + respResult.get("body"));
alipayTradePayReq.setProductCode("QUICK_WAP_PAY"); return payBaseRespDto;
alipayTradePayReq.setTotalAmount(dragonPayBaseReqDto.getPrice());
alipayTradePayReq.setSubject(dragonPayBaseReqDto.getName());
alipayTradePayReq.setBody(dragonPayBaseReqDto.getDetail());
//dragon中支付编号
alipayTradePayReq.setOutTradeNo(IDGenerator.payCode());
alipayTradePayReq.setTimeExpire(dragonPayBaseReqDto.getExpireTime());
//调用支付
Map<String, Object> result = AlipayUtil.tradeWapPay(alipayTradePayReq);
//拼接返回参数
DragonPayBaseRespDto respDto = new DragonPayBaseRespDto();
respDto.setCode(alipayTradePayReq.getOutTradeNo());
respDto.setOrder_code(dragonPayBaseReqDto.getOrderCode());
DragonPayBaseRespDto.PayData payData = new DragonPayBaseRespDto.PayData();
payData.setRedirectUrl(alipayGatewayUrl + result.get("body"));
respDto.setPayData(payData);
//支付订单持久化
alipayBiz.buildPayOrders(dragonPayBaseReqDto,respDto);
return ResponseDto.success(respDto);
} }
} }
\ No newline at end of file
package com.liquidnet.service.dragon.channel.alipay.strategy.impl; package com.liquidnet.service.dragon.channel.alipay.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz;
import com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq;
import com.liquidnet.service.dragon.channel.alipay.strategy.IAlipayStrategy;
import com.liquidnet.service.dragon.channel.alipay.strategy.annotation.StrategyAlipayHandler; import com.liquidnet.service.dragon.channel.alipay.strategy.annotation.StrategyAlipayHandler;
import com.liquidnet.service.dragon.channel.alipay.util.AlipayUtil;
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.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map; import java.util.Map;
...@@ -29,37 +21,20 @@ import java.util.Map; ...@@ -29,37 +21,20 @@ import java.util.Map;
*/ */
@Service @Service
@StrategyAlipayHandler(DragonConstant.DeviceFromEnum.WAP) @StrategyAlipayHandler(DragonConstant.DeviceFromEnum.WAP)
public class AlipayStrategyWapImpl implements IAlipayStrategy { public class AlipayStrategyWapImpl extends AbstractAlipayStrategy {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Value("${liquidnet.dragon.alipay.gataway-url}") @Value("${liquidnet.dragon.alipay.gataway-url}")
private String alipayGatewayUrl; private String alipayGatewayUrl;
@Autowired @Autowired
private AlipayBiz alipayBiz; StringRedisTemplate stringRedisTemplate;
protected void setProductCode() {
this.productCode = "QUICK_WAP_PAY";
}
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto, Map<String, Object> respResult) {
AlipayTradePayReq alipayTradePayReq = new AlipayTradePayReq(); payBaseRespDto.getPayData().setRedirectUrl(alipayGatewayUrl + "?" + respResult.get("body"));
alipayTradePayReq.setProductCode("QUICK_WAP_PAY"); return payBaseRespDto;
alipayTradePayReq.setTotalAmount(dragonPayBaseReqDto.getPrice());
alipayTradePayReq.setSubject(dragonPayBaseReqDto.getName());
alipayTradePayReq.setBody(dragonPayBaseReqDto.getDetail());
//dragon中支付编号
alipayTradePayReq.setOutTradeNo(IDGenerator.payCode());
alipayTradePayReq.setTimeExpire(dragonPayBaseReqDto.getExpireTime());
//调用支付
Map<String, Object> result = AlipayUtil.tradeWapPay(alipayTradePayReq);
//拼接返回参数
DragonPayBaseRespDto respDto = new DragonPayBaseRespDto();
respDto.setCode(alipayTradePayReq.getOutTradeNo());
respDto.setOrder_code(dragonPayBaseReqDto.getOrderCode());
DragonPayBaseRespDto.PayData payData = new DragonPayBaseRespDto.PayData();
payData.setRedirectUrl(alipayGatewayUrl + "?" + result.get("body"));
respDto.setPayData(payData);
//支付订单持久化
alipayBiz.buildPayOrders(dragonPayBaseReqDto,respDto);
return ResponseDto.success(respDto);
} }
} }
package com.liquidnet.service.dragon.channel.strategy.impl; package com.liquidnet.service.dragon.channel.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext; import com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy; import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
...@@ -27,6 +28,7 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { ...@@ -27,6 +28,7 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
dragonPayBaseReqDto.setCode(IDGenerator.payCode());
return alipayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto); return alipayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto);
} }
} }
package com.liquidnet.service.dragon.channel.wepay.strategy.impl; package com.liquidnet.service.dragon.channel.wepay.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator;
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.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.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;
import com.liquidnet.service.dragon.utils.XmlUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
...@@ -14,7 +17,9 @@ import org.apache.http.entity.StringEntity; ...@@ -14,7 +17,9 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import java.math.BigDecimal;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
...@@ -35,7 +40,9 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -35,7 +40,9 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
try { try {
//构造请求参数 //构造请求参数
SortedMap<String, Object> parameters = this.buildRequestParamMap(dragonPayBaseReqDto); SortedMap<String, Object> commonParams = this.buildRequestParamMap(dragonPayBaseReqDto);
//追加请求参数
SortedMap<String, Object> parameters = appendRequestParam(commonParams);
//生成签名 //生成签名
String sign = WepayUtil.getSign(parameters,parentKey); String sign = WepayUtil.getSign(parameters,parentKey);
parameters.put("sign", sign); parameters.put("sign", sign);
...@@ -47,25 +54,73 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -47,25 +54,73 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
CloseableHttpResponse response = PayWepayUtils.getInstance().getHttpClient().execute(httpost); CloseableHttpResponse response = PayWepayUtils.getInstance().getHttpClient().execute(httpost);
HttpEntity entity = response.getEntity(); HttpEntity entity = response.getEntity();
//接受到返回信息 //接受到返回信息
String jsonStr = EntityUtils.toString(response.getEntity(), "UTF-8"); String xmlStr = EntityUtils.toString(response.getEntity(), "UTF-8");
EntityUtils.consume(entity); EntityUtils.consume(entity);
log.info("dragonPay:wepay:wap response json: {} ",jsonStr); log.info("dragonPay:wepay:wap response xmlStr: {} ",xmlStr);
WepayPayRespDto respWepayDto= XmlUtil.toBean(xmlStr, WepayPayRespDto.class);
//构造公共返回参数
DragonPayBaseRespDto respPayDto = this.buildCommonRespDto(dragonPayBaseReqDto);
//构造自定义返回参数
this.buildResponseDto(respPayDto,respWepayDto);
return ResponseDto.success(respPayDto);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
} }
/**
* 构造公共返回参数
* @param dragonPayBaseReqDto
* @return
*/
protected DragonPayBaseRespDto buildCommonRespDto(DragonPayBaseReqDto dragonPayBaseReqDto){
DragonPayBaseRespDto respDto = new DragonPayBaseRespDto();
respDto.setCode(dragonPayBaseReqDto.getCode());
respDto.setOrderCode(dragonPayBaseReqDto.getOrderCode());
DragonPayBaseRespDto.PayData payData = new DragonPayBaseRespDto.PayData();
respDto.setPayData(payData);
return respDto;
}
/** /**
* 构造请求参数 * 构造请求参数
* @return * @return
*/ */
abstract SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto); protected SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto){
String nonceStr = PayWepayUtils.getInstance().getNonceStr();
SortedMap<String, Object> parameters = new TreeMap<>();
parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId());
parameters.put("appid", PayWepayUtils.getInstance().getAppId());
parameters.put("nonce_str", nonceStr);
parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp());
parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue());
parameters.put("body", dragonPayBaseReqDto.getName());
parameters.put("detail", dragonPayBaseReqDto.getDetail());
parameters.put("out_trade_no", IDGenerator.payCode());
parameters.put("time_expire", "20210908103456");
parameters.put("notify_url", "https://www.baidu.com");
parameters.put("trade_type", "MWEB");
return parameters;
};
/**
* 追加请求参数
* @param requestMap
* @return
*/
abstract SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap);
/** /**
* 构造返回参数 * 构造返回参数
*/ */
abstract DragonPayBaseRespDto buildResponseDto(); abstract DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto,WepayPayRespDto respDto);
/**
* 获取请求url
* @return
*/
protected abstract String getRequestUrl(); protected abstract String getRequestUrl();
} }
package com.liquidnet.service.dragon.channel.wepay.strategy.impl; package com.liquidnet.service.dragon.channel.wepay.strategy.impl;
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.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -22,20 +22,19 @@ import java.util.SortedMap; ...@@ -22,20 +22,19 @@ import java.util.SortedMap;
@Component @Component
@StrategyWepayHandler(DragonConstant.DeviceFromEnum.APP) @StrategyWepayHandler(DragonConstant.DeviceFromEnum.APP)
public class WepayStrategyAppImpl extends AbstractWepayStrategy { public class WepayStrategyAppImpl extends AbstractWepayStrategy {
@Override @Override
SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
return null; return requestMap;
} }
@Override @Override
DragonPayBaseRespDto buildResponseDto() { DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto, WepayPayRespDto respDto) {
return null; payBaseRespDto.getPayData().setMwebUrl(respDto.getMwebUrl());
return payBaseRespDto;
} }
@Override @Override
protected String getRequestUrl() { protected String getRequestUrl() {
return null; return "https://api.mch.weixin.qq.com/pay/unifiedorder";
} }
} }
package com.liquidnet.service.dragon.channel.wepay.strategy.impl; package com.liquidnet.service.dragon.channel.wepay.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator; 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.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.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
...@@ -26,28 +22,15 @@ import java.util.TreeMap; ...@@ -26,28 +22,15 @@ import java.util.TreeMap;
@Component @Component
@StrategyWepayHandler(DragonConstant.DeviceFromEnum.APPLET) @StrategyWepayHandler(DragonConstant.DeviceFromEnum.APPLET)
public class WepayStrategyAppletImpl extends AbstractWepayStrategy{ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{
@Override @Override
SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
String nonceStr = PayWepayUtils.getInstance().getNonceStr(); return requestMap;
SortedMap<String, Object> parameters = new TreeMap<>();
parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId());
parameters.put("appid", PayWepayUtils.getInstance().getAppId());
parameters.put("nonce_str", nonceStr);
parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp());
parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue());
parameters.put("body", dragonPayBaseReqDto.getName());
parameters.put("detail", dragonPayBaseReqDto.getDetail());
parameters.put("out_trade_no", IDGenerator.payCode());
parameters.put("time_expire", "20210908103456");
parameters.put("notify_url", "https://www.baidu.com");
parameters.put("trade_type", "MWEB");
return parameters;
} }
@Override @Override
DragonPayBaseRespDto buildResponseDto() { DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto, WepayPayRespDto respDto) {
return null; payBaseRespDto.getPayData().setMwebUrl(respDto.getMwebUrl());
return payBaseRespDto;
} }
@Override @Override
......
package com.liquidnet.service.dragon.channel.wepay.strategy.impl; package com.liquidnet.service.dragon.channel.wepay.strategy.impl;
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.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -22,20 +22,19 @@ import java.util.SortedMap; ...@@ -22,20 +22,19 @@ import java.util.SortedMap;
@Component @Component
@StrategyWepayHandler(DragonConstant.DeviceFromEnum.JS) @StrategyWepayHandler(DragonConstant.DeviceFromEnum.JS)
public class WepayStrategyJsImpl extends AbstractWepayStrategy{ public class WepayStrategyJsImpl extends AbstractWepayStrategy{
@Override @Override
SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
return null; return requestMap;
} }
@Override @Override
DragonPayBaseRespDto buildResponseDto() { DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto, WepayPayRespDto respDto) {
return null; payBaseRespDto.getPayData().setMwebUrl(respDto.getMwebUrl());
return payBaseRespDto;
} }
@Override @Override
protected String getRequestUrl() { protected String getRequestUrl() {
return null; return "https://api.mch.weixin.qq.com/pay/unifiedorder";
} }
} }
package com.liquidnet.service.dragon.channel.wepay.strategy.impl; package com.liquidnet.service.dragon.channel.wepay.strategy.impl;
import com.liquidnet.commons.lang.util.IDGenerator; 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.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.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
...@@ -26,28 +22,15 @@ import java.util.TreeMap; ...@@ -26,28 +22,15 @@ import java.util.TreeMap;
@Component @Component
@StrategyWepayHandler(DragonConstant.DeviceFromEnum.WAP) @StrategyWepayHandler(DragonConstant.DeviceFromEnum.WAP)
public class WepayStrategyWapImpl extends AbstractWepayStrategy{ public class WepayStrategyWapImpl extends AbstractWepayStrategy{
@Override @Override
SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap) {
String nonceStr = PayWepayUtils.getInstance().getNonceStr(); return requestMap;
SortedMap<String, Object> parameters = new TreeMap<>();
parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId());
parameters.put("appid", PayWepayUtils.getInstance().getAppId());
parameters.put("nonce_str", nonceStr);
parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp());
parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue());
parameters.put("body", dragonPayBaseReqDto.getName());
parameters.put("detail", dragonPayBaseReqDto.getDetail());
parameters.put("out_trade_no", IDGenerator.payCode());
parameters.put("time_expire", "20210908103456");
parameters.put("notify_url", "https://www.baidu.com");
parameters.put("trade_type", "MWEB");
return parameters;
} }
@Override @Override
DragonPayBaseRespDto buildResponseDto() { DragonPayBaseRespDto buildResponseDto(DragonPayBaseRespDto payBaseRespDto, WepayPayRespDto respDto) {
return null; payBaseRespDto.getPayData().setMwebUrl(respDto.getMwebUrl());
return payBaseRespDto;
} }
@Override @Override
......
...@@ -9,10 +9,7 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -9,10 +9,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -50,6 +47,7 @@ public class PayController { ...@@ -50,6 +47,7 @@ public class PayController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "clientIp", value = "客户端ip", example = "127.0.0.1"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "clientIp", value = "客户端ip", example = "127.0.0.1"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "notifyUrl", value = "通知url", example = "pay.zhengzai.tv"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "notifyUrl", value = "通知url", example = "pay.zhengzai.tv"),
}) })
@ResponseBody
public ResponseDto<DragonPayBaseRespDto> dragonPay( public ResponseDto<DragonPayBaseRespDto> dragonPay(
@RequestParam(value = "payType") @NotNull(message = "支付类型不能为空") String payType, @RequestParam(value = "payType") @NotNull(message = "支付类型不能为空") String payType,
@RequestParam(value = "deviceFrom") @NotNull(message = "设备来源不能为空") String deviceFrom, @RequestParam(value = "deviceFrom") @NotNull(message = "设备来源不能为空") String deviceFrom,
......
...@@ -41,9 +41,15 @@ public class XmlUtil{ ...@@ -41,9 +41,15 @@ public class XmlUtil{
XStream xstream=new XStream(); XStream xstream=new XStream();
// XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释 // XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释
// XStream xstream=new XStream(new DomDriver("utf-8")); //指定编码解析器,直接用jaxp dom来解释 // XStream xstream=new XStream(new DomDriver("utf-8")); //指定编码解析器,直接用jaxp dom来解释
XStream.setupDefaultSecurity(xstream);
////如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性 ////如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.processAnnotations(obj.getClass()); //通过注解方式的,一定要有这句话 xstream.processAnnotations(obj.getClass()); //通过注解方式的,一定要有这句话
xstream.allowTypesByRegExp(new String[] { ".*" });
// xstream.allowTypes(new Class[]{XmlUtil.class});
// xstream.allowTypesByWildcard(new String[] {
// "com.liquidnet.**"
// });
return xstream.toXML(obj); return xstream.toXML(obj);
} }
......
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