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

Commit ad0f6cfb authored by jiangxiulong's avatar jiangxiulong

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

parents 63a70c82 045817da
...@@ -3,8 +3,10 @@ package com.liquidnet.service.dragon.dto; ...@@ -3,8 +3,10 @@ package com.liquidnet.service.dragon.dto;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
@Data @Data
public class AliRefundCallBackBodyDto { public class AliRefundCallBackBodyDto implements Serializable {
@JsonProperty("out_trade_no") @JsonProperty("out_trade_no")
private String outTradeNo; private String outTradeNo;
@JsonProperty("trade_no") @JsonProperty("trade_no")
......
...@@ -3,6 +3,7 @@ package com.liquidnet.service.dragon.dto; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.dragon.dto;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
...@@ -15,7 +16,8 @@ import java.math.BigDecimal; ...@@ -15,7 +16,8 @@ import java.math.BigDecimal;
* @date 2021/7/9 10:56 * @date 2021/7/9 10:56
*/ */
@Data @Data
public class DragonPayBaseReqDto { public class DragonPayBaseReqDto implements Serializable{
private static final long serialVersionUID = -7273522103593077618L;
private String payType; private String payType;
private String deviceFrom; private String deviceFrom;
private String openId; private String openId;
......
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
...@@ -17,7 +18,8 @@ import java.math.BigDecimal; ...@@ -17,7 +18,8 @@ import java.math.BigDecimal;
*/ */
@Data @Data
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class DragonPayBaseRespDto { public class DragonPayBaseRespDto implements Serializable {
private static final long serialVersionUID = -7785149250417660932L;
private String code; private String code;
private String orderCode; private String orderCode;
......
...@@ -2,6 +2,8 @@ package com.liquidnet.service.dragon.dto; ...@@ -2,6 +2,8 @@ package com.liquidnet.service.dragon.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
...@@ -12,7 +14,8 @@ import lombok.Data; ...@@ -12,7 +14,8 @@ import lombok.Data;
* @date 2021/7/13 12:26 * @date 2021/7/13 12:26
*/ */
@Data @Data
public class DragonPayNotifyReqDto { public class DragonPayNotifyReqDto implements Serializable {
private static final long serialVersionUID = -4137919991028834729L;
//notify_id //notify_id
private String notify_type; private String notify_type;
//notify_id //notify_id
......
...@@ -2,6 +2,7 @@ package com.liquidnet.service.dragon.dto; ...@@ -2,6 +2,7 @@ package com.liquidnet.service.dragon.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
...@@ -14,7 +15,8 @@ import java.math.BigDecimal; ...@@ -14,7 +15,8 @@ import java.math.BigDecimal;
* @date 2021/7/13 15:39 * @date 2021/7/13 15:39
*/ */
@Data @Data
public class DragonPayOrderQueryRespDto { public class DragonPayOrderQueryRespDto implements Serializable {
private static final long serialVersionUID = -532012127264726720L;
private Integer status; private Integer status;
private String type; private String type;
private String code; private String code;
......
...@@ -6,6 +6,7 @@ import java.io.Serializable; ...@@ -6,6 +6,7 @@ import java.io.Serializable;
@Data @Data
public class DragonRefundAppDto implements Serializable { public class DragonRefundAppDto implements Serializable {
private static final long serialVersionUID = 6492371889455728205L;
private String orderCode; private String orderCode;
private String code; private String code;
private String orderRefundCode; private String orderRefundCode;
......
...@@ -6,6 +6,7 @@ import java.io.Serializable; ...@@ -6,6 +6,7 @@ import java.io.Serializable;
@Data @Data
public class DragonRefundChannelDto implements Serializable { public class DragonRefundChannelDto implements Serializable {
private static final long serialVersionUID = 6972323906594788282L;
private String result; private String result;
private String message; private String message;
private RefundContentDto content; private RefundContentDto content;
......
...@@ -6,6 +6,7 @@ import java.io.Serializable; ...@@ -6,6 +6,7 @@ import java.io.Serializable;
@Data @Data
public class NotifyUrlDto implements Serializable { public class NotifyUrlDto implements Serializable {
private static final long serialVersionUID = 3257132127191620598L;
private Integer status; private Integer status;
// private String orderCode; // private String orderCode;
// private String code; // private String code;
......
...@@ -2,10 +2,12 @@ package com.liquidnet.service.dragon.dto; ...@@ -2,10 +2,12 @@ package com.liquidnet.service.dragon.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
@Data @Data
public class PayNotifyDto { public class PayNotifyDto implements Serializable {
private static final long serialVersionUID = -8245675938937804354L;
private Integer status; private Integer status;
private String type; private String type;
private String code; private String code;
......
...@@ -6,6 +6,7 @@ import java.io.Serializable; ...@@ -6,6 +6,7 @@ import java.io.Serializable;
@Data @Data
public class RefundContentDto implements Serializable { public class RefundContentDto implements Serializable {
private static final long serialVersionUID = 5272393180371552646L;
private String request; private String request;
private String response; private String response;
} }
package com.liquidnet.commons.lang.config;
import org.apache.http.Header;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicHeader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Configuration
public class RestTemplateConfig {
private static final Logger logger = LoggerFactory.getLogger(RestTemplateConfig.class);
@Bean
public RestTemplate restTemplate() {
// 添加内容转换器,使用默认的内容转换器
RestTemplate restTemplate = new RestTemplate(httpRequestFactory());
// 设置编码格式为UTF-8
List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
HttpMessageConverter<?> converterTarget = null;
for (HttpMessageConverter<?> item : converterList) {
if (item.getClass() == StringHttpMessageConverter.class) {
converterTarget = item;
break;
}
}
if (converterTarget != null) {
converterList.remove(converterTarget);
}
HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
converterList.add(1, converter);
return restTemplate;
}
@Bean
public ClientHttpRequestFactory httpRequestFactory() {
return new HttpComponentsClientHttpRequestFactory(httpClient());
}
@Bean
public HttpClient httpClient() {
// 长连接保持30秒
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(30, TimeUnit.SECONDS);
//设置整个连接池最大连接数 根据自己的场景决定
connectionManager.setMaxTotal(500);
//同路由的并发数,路由是对maxTotal的细分
connectionManager.setDefaultMaxPerRoute(500);
//requestConfig
RequestConfig requestConfig = RequestConfig.custom()
//服务器返回数据(response)的时间,超过该时间抛出read timeout
.setSocketTimeout(10000)
//连接上服务器(握手成功)的时间,超出该时间抛出connect timeout
.setConnectTimeout(5000)
//从连接池中获取连接的超时时间,超过该时间未拿到可用连接,会抛出org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
.setConnectionRequestTimeout(500)
.build();
//headers
List<Header> headers = new ArrayList<>();
headers.add(new BasicHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"));
headers.add(new BasicHeader("Accept-Encoding", "gzip,deflate"));
headers.add(new BasicHeader("Accept-Language", "zh-CN"));
headers.add(new BasicHeader("Connection", "Keep-Alive"));
headers.add(new BasicHeader("Content-type", "application/json;charset=UTF-8"));
return HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig)
.setConnectionManager(connectionManager)
.setDefaultHeaders(headers)
// 保持长连接配置,需要在头添加Keep-Alive
.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy())
//重试次数,默认是3次,没有开启
.setRetryHandler(new DefaultHttpRequestRetryHandler(2, true))
.build();
}
}
package com.liquidnet.commons.lang.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.List;
import java.util.Map;
@Component
public class HttpOrderUtil {
@Autowired
private RestTemplate restTemplate;
/**
* get请求
*
* @param url
* @param params 请求参数
* @return
*/
public String get(String url, MultiValueMap<String, String> params) {
return get(url, params, null);
}
/**
* get请求
*
* @param url
* @param params 请求参数
* @param headers 请求头
* @return
*/
public String get(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
return request(url, params, headers, HttpMethod.GET);
}
/**
* post请求
*
* @param url
* @param params 请求参数
* @return
*/
public String post(String url, MultiValueMap<String, String> params) {
return post(url, params, null);
}
/**
* post请求
*
* @param url
* @param params 请求参数
* @param headers 请求头
* @return
*/
public String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
return request(url, params, headers, HttpMethod.POST);
}
/**
* put请求
*
* @param url
* @param params 请求参数
* @return
*/
public String put(String url, MultiValueMap<String, String> params) {
return put(url, params, null);
}
/**
* put请求
*
* @param url
* @param params 请求参数
* @param headers 请求头
* @return
*/
public String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
return request(url, params, headers, HttpMethod.PUT);
}
/**
* delete请求
*
* @param url
* @param params 请求参数
* @return
*/
public String delete(String url, MultiValueMap<String, String> params) {
return delete(url, params, null);
}
/**
* delete请求
*
* @param url
* @param params 请求参数
* @param headers 请求头
* @return
*/
public String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
return request(url, params, headers, HttpMethod.DELETE);
}
/**
* 表单请求
*
* @param url
* @param params 请求参数
* @param headers 请求头
* @param method 请求方式
* @return
*/
public String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {
if (params == null) {
params = new LinkedMultiValueMap<>();
}
return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);
}
/**
* http请求
*
* @param url
* @param params 请求参数
* @param headers 请求头
* @param method 请求方式
* @param mediaType 参数类型
* @return
*/
public String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {
if (url == null || url.trim().isEmpty()) {
return null;
}
// header
HttpHeaders httpHeaders = new HttpHeaders();
if (headers != null) {
httpHeaders.addAll(headers);
}
HttpEntity<Object> httpEntity;
if (headers != null) {
// header
httpHeaders = new HttpHeaders();
httpHeaders.addAll(headers);
httpHeaders.setContentType(mediaType);
httpEntity = new HttpEntity(params, httpHeaders);
} else {
httpEntity = new HttpEntity(params, null);
}
// 提交方式:表单、json
ResponseEntity<String> response = restTemplate.exchange(url, method, httpEntity, String.class);
return response.getBody();
}
private final String PHP_API_KEY = "R7tXY9smPQPG9Ku5yI0u6sfnlckmk04V";
public String postToPhpApi(String url, MultiValueMap<String, String> params) {
params.add("sign", processForPhpApi(params).concat("&key=").concat(PHP_API_KEY).toUpperCase());
return post(url, params, null);
}
private String processForPhpApi(MultiValueMap<String, String> map) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue().get(0)).append("&");
}
String targetStr = sb.substring(0, sb.length() - 1);
try {
targetStr = URLDecoder.decode(targetStr, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
targetStr = targetStr.replace("%3D", "=").replace("%26", "&");
return targetStr;
}
}
...@@ -11,163 +11,163 @@ import java.util.List; ...@@ -11,163 +11,163 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class HttpUtil { public class HttpUtil {
/**
* get请求 /**
* * get请求
* @param url *
* @param params 请求参数 * @param url
* @return * @param params 请求参数
*/ * @return
public static String get(String url, MultiValueMap<String, String> params) { */
return get(url, params, null); public static String get(String url, MultiValueMap<String, String> params) {
} return get(url, params, null);
}
/**
* get请求 /**
* * get请求
* @param url *
* @param params 请求参数 * @param url
* @param headers 请求头 * @param params 请求参数
* @return * @param headers 请求头
*/ * @return
public static String get(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) { */
return request(url, params, headers, HttpMethod.GET); public static String get(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
} return request(url, params, headers, HttpMethod.GET);
}
/**
* post请求 /**
* * post请求
* @param url *
* @param params 请求参数 * @param url
* @return * @param params 请求参数
*/ * @return
public static String post(String url, MultiValueMap<String, String> params) { */
return post(url, params, null); public static String post(String url, MultiValueMap<String, String> params) {
} return post(url, params, null);
}
/**
* post请求 /**
* * post请求
* @param url *
* @param params 请求参数 * @param url
* @param headers 请求头 * @param params 请求参数
* @return * @param headers 请求头
*/ * @return
public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) { */
return request(url, params, headers, HttpMethod.POST); public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
} return request(url, params, headers, HttpMethod.POST);
}
/**
* put请求 /**
* * put请求
* @param url *
* @param params 请求参数 * @param url
* @return * @param params 请求参数
*/ * @return
public static String put(String url, MultiValueMap<String, String> params) { */
return put(url, params, null); public static String put(String url, MultiValueMap<String, String> params) {
} return put(url, params, null);
}
/**
* put请求 /**
* * put请求
* @param url *
* @param params 请求参数 * @param url
* @param headers 请求头 * @param params 请求参数
* @return * @param headers 请求头
*/ * @return
public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) { */
return request(url, params, headers, HttpMethod.PUT); public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
} return request(url, params, headers, HttpMethod.PUT);
}
/**
* delete请求 /**
* * delete请求
* @param url *
* @param params 请求参数 * @param url
* @return * @param params 请求参数
*/ * @return
public static String delete(String url, MultiValueMap<String, String> params) { */
return delete(url, params, null); public static String delete(String url, MultiValueMap<String, String> params) {
} return delete(url, params, null);
}
/**
* delete请求 /**
* * delete请求
* @param url *
* @param params 请求参数 * @param url
* @param headers 请求头 * @param params 请求参数
* @return * @param headers 请求头
*/ * @return
public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) { */
return request(url, params, headers, HttpMethod.DELETE); public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {
} return request(url, params, headers, HttpMethod.DELETE);
}
/**
* 表单请求 /**
* * 表单请求
* @param url *
* @param params 请求参数 * @param url
* @param headers 请求头 * @param params 请求参数
* @param method 请求方式 * @param headers 请求头
* @return * @param method 请求方式
*/ * @return
public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) { */
if (params == null) { public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {
params = new LinkedMultiValueMap<>(); if (params == null) {
} params = new LinkedMultiValueMap<>();
return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED); }
} return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);
}
/**
* http请求 /**
* * http请求
* @param url *
* @param params 请求参数 * @param url
* @param headers 请求头 * @param params 请求参数
* @param method 请求方式 * @param headers 请求头
* @param mediaType 参数类型 * @param method 请求方式
* @return * @param mediaType 参数类型
*/ * @return
public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) { */
if (url == null || url.trim().isEmpty()) { public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {
return null; if (url == null || url.trim().isEmpty()) {
} return null;
RestTemplate client = new RestTemplate(); }
// header
HttpHeaders httpHeaders = new HttpHeaders(); // header
if (headers != null) { HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.addAll(headers); if (headers != null) {
} httpHeaders.addAll(headers);
// 提交方式:表单、json }
httpHeaders.setContentType(mediaType); HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);
HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);
ResponseEntity<String> response = client.exchange(url, method, httpEntity, String.class); RestTemplate restTemplate = new RestTemplate();
return response.getBody(); // 提交方式:表单、json
} ResponseEntity<String> response = restTemplate.exchange(url, method, httpEntity, String.class);
return response.getBody();
}
private static final String PHP_API_KEY = "R7tXY9smPQPG9Ku5yI0u6sfnlckmk04V"; private static final String PHP_API_KEY = "R7tXY9smPQPG9Ku5yI0u6sfnlckmk04V";
public static String postToPhpApi(String url, MultiValueMap<String, String> params) { public static String postToPhpApi(String url, MultiValueMap<String, String> params) {
params.add("sign", processForPhpApi(params).concat("&key=").concat(PHP_API_KEY).toUpperCase()); params.add("sign", processForPhpApi(params).concat("&key=").concat(PHP_API_KEY).toUpperCase());
return post(url, params, null); return post(url, params, null);
} }
private static String processForPhpApi(MultiValueMap<String, String> map) { private static String processForPhpApi(MultiValueMap<String, String> map) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (Map.Entry<String, List<String>> entry : map.entrySet()) { for (Map.Entry<String, List<String>> entry : map.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue().get(0)).append("&"); sb.append(entry.getKey()).append("=").append(entry.getValue().get(0)).append("&");
} }
String targetStr = sb.substring(0, sb.length() - 1); String targetStr = sb.substring(0, sb.length() - 1);
try { try {
targetStr = URLDecoder.decode(targetStr, "UTF-8"); targetStr = URLDecoder.decode(targetStr, "UTF-8");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
targetStr = targetStr.replace("%3D", "=").replace("%26", "&"); targetStr = targetStr.replace("%3D", "=").replace("%26", "&");
return targetStr; return targetStr;
} }
} }
...@@ -9,6 +9,8 @@ import com.alipay.api.request.AlipayTradeWapPayRequest; ...@@ -9,6 +9,8 @@ import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse; import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse; import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse; import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil; import com.liquidnet.commons.lang.util.StringUtil;
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.sign.MD5; import com.liquidnet.service.dragon.channel.alipay.sign.MD5;
...@@ -50,6 +52,47 @@ public class AlipayBiz{ ...@@ -50,6 +52,47 @@ public class AlipayBiz{
paramMap.put("timeout_express", timeExpress); paramMap.put("timeout_express", timeExpress);
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
request.setNotifyUrl(alipayTradePayReq.getNotifyUrl());
// request.setTimestamp(DateUtil.now());
log.info("bizContent :{}", JSONObject.toJSONString(paramMap));
request.setBizContent(JSONObject.toJSONString(paramMap));
try {
long startTime = System.currentTimeMillis();
AlipayTradeWapPayResponse response = new AlipayTradeWapPayResponse();
response.setBody("alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2019082866535131&biz_content=%7B%22body%22%3A%22pay+%E5%8E%8B%E6%B5%8B-%E6%B5%8B%E8%AF%95%E7%A5%A8-07%E6%9C%8801%E6%97%A5%7E08%E6%9C%8831%E6%97%A5%22%2C%22out_trade_no%22%3A%22PAY2021072022223316428316%22%2C%22product_code%22%3A%22QUICK_WAP_PAY%22%2C%22subject%22%3A%2207%E6%9C%8801%E6%97%A5%7E08%E6%9C%8831%E6%97%A5%E6%B5%8B%E8%AF%95%E7%A5%A8-pay+%E5%8E%8B%E6%B5%8B%22%2C%22timeout_express%22%3A%225m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=json&method=alipay.trade.wap.pay&notify_url=https%3A%2F%2Fdragon.zhengzai.tv%2Fdragon%2Fnotify%2Falipay%2Fwap&sign=MDiFk1Ut6keiE7mKiNzMg2eY01%2BbjcQFfjqBamPyAEAnTsLTh2u6xIiz5mWFVE%2B71qK95oetdQ%2B%2FMXOhc8fniHuef3JDRFkqjeJ0HPIIofndHHYKZYPsTkAnq6Axr3zrhvE%2BpzlWNxJS2Ci4cFFAkPPnTnHfT6tjIVbFE3HSnaWYWnWLfXkH%2Bn7QnxWsQAylq7gkAn67sCIXGNkI%2BZbhVLQnXkXJ5b88q3l%2B4Xaf9G5APsGPje7NKQ%2BuxgL%2BcAE7%2BVatfXQfB4%2BJ%2FW1xsOaS2fS545PpaD%2FI5R75vqBliMi0ed8UjAD7LUoZ8X8ZuxZY9zoyZDyhC9ssyek5%2FRpjpw%3D%3D&sign_type=RSA2&timestamp=2021-07-20+22%3A22%3A33&version=1.0");
response.setSubCode("ACQ.TRADE_HAS_SUCCESS");
log.info("alipay-alipayClient.sdkExecut->耗时:{}",(System.currentTimeMillis() - startTime)+"毫秒");
// {"body":"alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2019082866535131&biz_content=%7B%22body%22%3A%22pay+%E5%8E%8B%E6%B5%8B-%E6%B5%8B%E8%AF%95%E7%A5%A8-07%E6%9C%8801%E6%97%A5%7E08%E6%9C%8831%E6%97%A5%22%2C%22out_trade_no%22%3A%22PAY2021072022223316428316%22%2C%22product_code%22%3A%22QUICK_WAP_PAY%22%2C%22subject%22%3A%2207%E6%9C%8801%E6%97%A5%7E08%E6%9C%8831%E6%97%A5%E6%B5%8B%E8%AF%95%E7%A5%A8-pay+%E5%8E%8B%E6%B5%8B%22%2C%22timeout_express%22%3A%225m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=json&method=alipay.trade.wap.pay&notify_url=https%3A%2F%2Fdragon.zhengzai.tv%2Fdragon%2Fnotify%2Falipay%2Fwap&sign=MDiFk1Ut6keiE7mKiNzMg2eY01%2BbjcQFfjqBamPyAEAnTsLTh2u6xIiz5mWFVE%2B71qK95oetdQ%2B%2FMXOhc8fniHuef3JDRFkqjeJ0HPIIofndHHYKZYPsTkAnq6Axr3zrhvE%2BpzlWNxJS2Ci4cFFAkPPnTnHfT6tjIVbFE3HSnaWYWnWLfXkH%2Bn7QnxWsQAylq7gkAn67sCIXGNkI%2BZbhVLQnXkXJ5b88q3l%2B4Xaf9G5APsGPje7NKQ%2BuxgL%2BcAE7%2BVatfXQfB4%2BJ%2FW1xsOaS2fS545PpaD%2FI5R75vqBliMi0ed8UjAD7LUoZ8X8ZuxZY9zoyZDyhC9ssyek5%2FRpjpw%3D%3D&sign_type=RSA2&timestamp=2021-07-20+22%3A22%3A33&version=1.0","success":true}
// JSONObject responseJSON = JSONObject.parseObject(JSONObject.toJSONString(response));
Map<String,Object> responseJSON = JsonUtils.OM().convertValue(response,Map.class);
log.info("AlipayUtil-->tradeWapPay-->支付宝返回结果:{}", JsonUtils.toJson(response));
return responseJSON;
} catch (Exception e) {
log.error("支付宝支付异常:{}", e);
JSONObject resultJSON = new JSONObject();
resultJSON.put("outTradeNo", alipayTradePayReq.getOutTradeNo());
resultJSON.put("totalAmount", alipayTradePayReq.getTotalAmount().toString());
resultJSON.put("errorCode", "9999");
return resultJSON;
}
}
public static Map<String, Object> tradeWapPay_backup(AlipayTradePayReq alipayTradePayReq) {
log.info("AlipayBiz.tradeWapPay-->> req : {}",alipayTradePayReq.toString());
String timeExpress = "5m";// 支付超时,线下扫码交易定义为5分钟
AlipayClient alipayClient = PayAlipayUtils.getInstance().getHttpClient();
SortedMap<String, Object> paramMap = new TreeMap<>();
paramMap.put("product_code", alipayTradePayReq.getProductCode());
paramMap.put("total_amount", alipayTradePayReq.getTotalAmount().toString());
paramMap.put("subject", alipayTradePayReq.getSubject());
paramMap.put("body", alipayTradePayReq.getBody());
paramMap.put("out_trade_no", alipayTradePayReq.getOutTradeNo());
paramMap.put("timeout_express", timeExpress);
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
request.setNotifyUrl(alipayTradePayReq.getNotifyUrl()); request.setNotifyUrl(alipayTradePayReq.getNotifyUrl());
// request.setTimestamp(DateUtil.now()); // request.setTimestamp(DateUtil.now());
...@@ -60,8 +103,9 @@ public class AlipayBiz{ ...@@ -60,8 +103,9 @@ public class AlipayBiz{
AlipayTradeWapPayResponse response = alipayClient.sdkExecute(request); AlipayTradeWapPayResponse response = alipayClient.sdkExecute(request);
log.info("alipay-alipayClient.sdkExecut->耗时:{}",(System.currentTimeMillis() - startTime)+"毫秒"); log.info("alipay-alipayClient.sdkExecut->耗时:{}",(System.currentTimeMillis() - startTime)+"毫秒");
JSONObject responseJSON = JSONObject.parseObject(JSONObject.toJSONString(response)); // JSONObject responseJSON = JSONObject.parseObject(JSONObject.toJSONString(response));
log.info("AlipayUtil-->tradeWapPay-->支付宝返回结果:{}", response.toString()); Map<String,Object> responseJSON = JsonUtils.OM().convertValue(response,Map.class);
log.info("AlipayUtil-->tradeWapPay-->支付宝返回结果:{}", JsonUtils.toJson(response));
return responseJSON; return responseJSON;
} catch (AlipayApiException e) { } catch (AlipayApiException e) {
log.error("支付宝支付异常:{}", e); log.error("支付宝支付异常:{}", e);
...@@ -100,7 +144,9 @@ public class AlipayBiz{ ...@@ -100,7 +144,9 @@ public class AlipayBiz{
request.setBizContent(JSONObject.toJSONString(paramMap)); request.setBizContent(JSONObject.toJSONString(paramMap));
try { try {
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
JSONObject responseJSON = JSONObject.parseObject(JSONObject.toJSONString(response)); // JSONObject responseJSON = JSONObject.parseObject(JSONObject.toJSONString(response));
Map<String,Object> responseJSON = JsonUtils.fromJson(JsonUtils.toJson(response), new TypeReference<Map<String,Object>>() {
});
log.info("AlipayUtil-->tradeAppPay-->支付宝返回结果:{}", responseJSON); log.info("AlipayUtil-->tradeAppPay-->支付宝返回结果:{}", responseJSON);
return responseJSON; return responseJSON;
} catch (AlipayApiException e) { } catch (AlipayApiException e) {
......
...@@ -71,6 +71,8 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -71,6 +71,8 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
//构造支付请求xml //构造支付请求xml
String data = PayWepayUtils.getInstance().getRequestXml(parameters); String data = PayWepayUtils.getInstance().getRequestXml(parameters);
log.info("dragonPay:wepay:"+dragonPayBaseReqDto.getDeviceFrom()+" request jsondata: {} ",data);
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"));
CloseableHttpResponse response = PayWepayUtils.getInstance().getHttpClient().execute(httpost); CloseableHttpResponse response = PayWepayUtils.getInstance().getHttpClient().execute(httpost);
...@@ -78,8 +80,15 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -78,8 +80,15 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
//接受到返回信息 //接受到返回信息
String xmlStr = EntityUtils.toString(response.getEntity(), "UTF-8"); String xmlStr = EntityUtils.toString(response.getEntity(), "UTF-8");
EntityUtils.consume(entity); EntityUtils.consume(entity);
log.info("dragonPay:wepay:"+dragonPayBaseReqDto.getDeviceFrom()+" response xmlStr: {} ",xmlStr); log.info("dragonPay:wepay:"+dragonPayBaseReqDto.getDeviceFrom()+" response jsonStr: {} ",xmlStr);
WepayPayRespDto respWepayDto= XmlUtil.toBean(xmlStr, WepayPayRespDto.class);
WepayPayRespDto respWepayDto= null;
try {
respWepayDto = XmlUtil.toBean(xmlStr, WepayPayRespDto.class);
} catch (Exception e) {
log.error("dragonPay:wepay:"+dragonPayBaseReqDto.getDeviceFrom()+" response format error: {} ",e);
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_PARAM_ERROR.getCode(),DragonErrorCodeEnum.TRADE_PARAM_ERROR.getMessage());
}
if(WepayConstant.WeixinTradeStateEnum.SUCCESS.getCode().equalsIgnoreCase(respWepayDto.getReturnCode())){ if(WepayConstant.WeixinTradeStateEnum.SUCCESS.getCode().equalsIgnoreCase(respWepayDto.getReturnCode())){
if(WepayConstant.WeixinTradeStateEnum.SUCCESS.getCode().equalsIgnoreCase(respWepayDto.getResultCode())){ if(WepayConstant.WeixinTradeStateEnum.SUCCESS.getCode().equalsIgnoreCase(respWepayDto.getResultCode())){
//构造公共返回参数 //构造公共返回参数
...@@ -141,6 +150,7 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -141,6 +150,7 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
String timeExpire = DateUtil.format(DateUtil.Formatter.yyyyMMddHHmmss.parse(dragonPayBaseReqDto.getCreateDate()).plusMinutes(Long.parseLong(dragonPayBaseReqDto.getExpireTime())),DateUtil.Formatter.yyyyMMddHHmmssTrim); String timeExpire = DateUtil.format(DateUtil.Formatter.yyyyMMddHHmmss.parse(dragonPayBaseReqDto.getCreateDate()).plusMinutes(Long.parseLong(dragonPayBaseReqDto.getExpireTime())),DateUtil.Formatter.yyyyMMddHHmmssTrim);
parameters.put("time_expire", timeExpire); parameters.put("time_expire", timeExpire);
parameters.put("notify_url", this.getNotifyUrl()); parameters.put("notify_url", this.getNotifyUrl());
parameters.put("openid", dragonPayBaseReqDto.getOpenId()); //只有trade_type="JSAPI"时必须传
return parameters; return parameters;
}; };
......
...@@ -31,7 +31,6 @@ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{ ...@@ -31,7 +31,6 @@ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{
@Override @Override
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("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID()); requestMap.put("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID());
return requestMap; return requestMap;
} }
......
...@@ -31,7 +31,6 @@ public class WepayStrategyJsImpl extends AbstractWepayStrategy{ ...@@ -31,7 +31,6 @@ public class WepayStrategyJsImpl extends AbstractWepayStrategy{
@Override @Override
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("appid", PayWepayUtils.getInstance().getJS_APP_ID()); requestMap.put("appid", PayWepayUtils.getInstance().getJS_APP_ID());
return requestMap; return requestMap;
} }
......
package com.liquidnet.service.order.controller; package com.liquidnet.service.order.controller;
import com.liquidnet.commons.lang.util.HttpOrderUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.codec.annotation.DecryptAndVerify; import com.liquidnet.service.base.codec.annotation.DecryptAndVerify;
...@@ -17,6 +19,7 @@ import io.swagger.annotations.ApiResponse; ...@@ -17,6 +19,7 @@ import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import sun.net.www.http.HttpClient;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
......
...@@ -78,6 +78,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -78,6 +78,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired @Autowired
private HttpOrderUtil httpOrderUtil;
@Autowired
private OrderUtils orderUtils; private OrderUtils orderUtils;
@Autowired @Autowired
private RedisLockUtil redisLockUtil; private RedisLockUtil redisLockUtil;
...@@ -311,6 +313,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -311,6 +313,8 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
return resultData; return resultData;
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
log.error("Kylin Order Pay Error = " + e.getMessage());
if (isDownGeneral) { if (isDownGeneral) {
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber()); dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
...@@ -326,8 +330,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -326,8 +330,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
} }
} }
} }
e.printStackTrace();
log.error("Kylin Order Pay Error = " + e.getMessage());
redisLockUtil.unlock(lock); redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常 return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
} }
...@@ -552,12 +554,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -552,12 +554,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
} }
currentTime = System.currentTimeMillis(); currentTime = System.currentTimeMillis();
String returnData = HttpUtil.post(payUrl, httpData); String returnData = httpOrderUtil.post(payUrl, httpData);
// log.debug("httpData = " + JSON.toJSONString(httpData)); // 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);
log.debug("调用 PHP 支付 结果 -> " +JSON.toJSONString(payResultVo));
payResultVo.getData().setOrderId(orderTicketId); payResultVo.getData().setOrderId(orderTicketId);
payResultVo.getData().setPrice(orderTickets.getPriceActual()); payResultVo.getData().setPrice(orderTickets.getPriceActual());
orderTickets.setPayCode(payResultVo.getData().getCode()); orderTickets.setPayCode(payResultVo.getData().getCode());
......
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