merge
This commit is contained in:
@@ -15,24 +15,25 @@ import java.util.List;
|
||||
|
||||
public class CreateOrderNoDemo {
|
||||
public synchronized static String getNo() {
|
||||
String sequence = "";
|
||||
String sequence;
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("YYYY_MM_DD");
|
||||
String date = sdf.format(new Date());
|
||||
StringBuffer sql = new StringBuffer("select * from order_table");
|
||||
StringBuilder sql = new StringBuilder("select * from order_table");
|
||||
sql.append(" where order_no like '" + date + "%'");
|
||||
sql.append(" order by create_time desc");
|
||||
List<Order> list=queryList();
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
List<Order> list = queryList();
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
String orderNo = list.get(0).getOrderNo();
|
||||
long newOrderNo = Long.valueOf(orderNo.substring(8, 18)) + 1;
|
||||
String sequ = new DecimalFormat("0000000000").format(newOrderNo);
|
||||
sequence = date + sequ;
|
||||
}else {
|
||||
} else {
|
||||
sequence = date + "0000000000";
|
||||
}
|
||||
return sequence;
|
||||
}
|
||||
class Order{//模拟订单类
|
||||
|
||||
class Order {//模拟订单类
|
||||
String orderNo;
|
||||
|
||||
public String getOrderNo() {
|
||||
@@ -42,13 +43,15 @@ public class CreateOrderNoDemo {
|
||||
public void setOrderNo(String orderNo) {
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public static List<Order> queryList(){//模拟查询
|
||||
|
||||
public static List<Order> queryList() {//模拟查询
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
long a=12356;
|
||||
long a = 12356;
|
||||
String sequ = new DecimalFormat("0000000000").format(a);
|
||||
System.out.println(sequ);
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import lombok.Data;
|
||||
* 作者: xiangwb
|
||||
*/
|
||||
@Data
|
||||
public class AlipayBarCodePayParam {
|
||||
public class AliPayBarCodePayParam {
|
||||
/**
|
||||
* 本系统订单号
|
||||
*/
|
||||
@@ -35,7 +35,7 @@ public class AlipayBarCodePayParam {
|
||||
@JSONField(name = "total_amount")
|
||||
private float totalAmount;
|
||||
|
||||
public AlipayBarCodePayParam(String outTradeNo, String authCode, String subject, float totalAmount) {
|
||||
public AliPayBarCodePayParam(String outTradeNo, String authCode, String subject, float totalAmount) {
|
||||
this.outTradeNo = outTradeNo;
|
||||
this.authCode = authCode;
|
||||
this.subject = subject;
|
||||
+2
-2
@@ -15,7 +15,7 @@ import java.util.List;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class AlipayBarCodePayResult extends AlipayBaseResult {
|
||||
public class AliPayBarCodePayResult extends AliPayBaseResult {
|
||||
public static final String HASPAYED = "ACQ.TRADE_HAS_SUCCESS";
|
||||
|
||||
/**
|
||||
@@ -55,7 +55,7 @@ public class AlipayBarCodePayResult extends AlipayBaseResult {
|
||||
*/
|
||||
private String discountGoodsDetail;
|
||||
|
||||
public AlipayBarCodePayResult(boolean isSuccess) {
|
||||
public AliPayBarCodePayResult(boolean isSuccess) {
|
||||
this.setSuccess(isSuccess);
|
||||
}
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import lombok.Data;
|
||||
* 作者: xiangwb
|
||||
*/
|
||||
@Data
|
||||
public class AlipayBaseResult {
|
||||
public class AliPayBaseResult {
|
||||
/**
|
||||
* 是否成功
|
||||
*/
|
||||
+1
-1
@@ -7,7 +7,7 @@ package com.xwbing.domain.entity.pay.alipay;
|
||||
* 作者: xiangwb
|
||||
*/
|
||||
|
||||
public class AlipayConstant {
|
||||
public class AliPayConstant {
|
||||
/**
|
||||
* 接口调用成功
|
||||
*/
|
||||
+2
-2
@@ -11,13 +11,13 @@ import lombok.EqualsAndHashCode;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class AlipayQueryResult extends AlipayBaseResult {
|
||||
public class AliPayQueryResult extends AliPayBaseResult {
|
||||
/**
|
||||
* 交易支付状态
|
||||
*/
|
||||
private String tradeStatus;
|
||||
|
||||
public AlipayQueryResult(boolean success) {
|
||||
public AliPayQueryResult(boolean success) {
|
||||
this.setSuccess(success);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -10,7 +10,7 @@ import lombok.Data;
|
||||
* 作者: xiangwb
|
||||
*/
|
||||
@Data
|
||||
public class AlipayRefundParam {
|
||||
public class AliPayRefundParam {
|
||||
/**
|
||||
* 本系统订单号 订单号和支付宝交易号2选1
|
||||
*/
|
||||
@@ -37,14 +37,14 @@ public class AlipayRefundParam {
|
||||
@JSONField(name = "refund_reason")
|
||||
private String refundReason;
|
||||
|
||||
public AlipayRefundParam(String outRequestNo, String outTradeNo, float refundAmount, String refundReason) {
|
||||
public AliPayRefundParam(String outRequestNo, String outTradeNo, float refundAmount, String refundReason) {
|
||||
this.outRequestNo = outRequestNo;
|
||||
this.outTradeNo = outTradeNo;
|
||||
this.refundAmount = refundAmount;
|
||||
this.refundReason = refundReason;
|
||||
}
|
||||
|
||||
public AlipayRefundParam(String outRequestNo, String tradeNo, String refundReason, float refundAmount) {
|
||||
public AliPayRefundParam(String outRequestNo, String tradeNo, String refundReason, float refundAmount) {
|
||||
this.outRequestNo = outRequestNo;
|
||||
this.tradeNo = tradeNo;
|
||||
this.refundAmount = refundAmount;
|
||||
+2
-2
@@ -14,7 +14,7 @@ import java.util.Date;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class AlipayRefundResult extends AlipayBaseResult {
|
||||
public class AliPayRefundResult extends AliPayBaseResult {
|
||||
/**
|
||||
* 支付宝交易号
|
||||
*/
|
||||
@@ -51,7 +51,7 @@ public class AlipayRefundResult extends AlipayBaseResult {
|
||||
@JSONField(name = "buyer_user_id")
|
||||
private String buyerUserId;
|
||||
|
||||
public AlipayRefundResult(boolean isSuccess) {
|
||||
public AliPayRefundResult(boolean isSuccess) {
|
||||
this.setSuccess(isSuccess);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -6,7 +6,7 @@ package com.xwbing.domain.entity.pay.alipay;
|
||||
* 创建时间: 2017/5/10 17:39
|
||||
* 作者: xiangwb
|
||||
*/
|
||||
public enum AlipayTradeStatusEnum {
|
||||
public enum AliPayTradeStatusEnum {
|
||||
WAIT_BUYER_PAY("交易创建,等待买家付款", "WAIT_BUYER_PAY"),
|
||||
TRADE_CLOSED("未付款交易超时关闭,或支付完成后全额退款", "TRADE_CLOSED"),
|
||||
TRADE_SUCCESS("交易支付成功", "TRADE_SUCCESS"),
|
||||
@@ -15,7 +15,7 @@ public enum AlipayTradeStatusEnum {
|
||||
private String code;
|
||||
private String name;
|
||||
|
||||
private AlipayTradeStatusEnum(String name, String code) {
|
||||
private AliPayTradeStatusEnum(String name, String code) {
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
}
|
||||
+30
-33
@@ -25,33 +25,33 @@ import java.util.Objects;
|
||||
/**
|
||||
* 说明: 支付宝支付接口实现
|
||||
* 项目名称: spring-demo
|
||||
* 创建时间: 2017/5/10 17:30
|
||||
* 创建时间: 2017/5/10 17:50
|
||||
* 作者: xiangwb
|
||||
*/
|
||||
@Service
|
||||
@PropertySource("classpath:pay.properties")
|
||||
public class AlipayService {
|
||||
private final Logger logger = LoggerFactory.getLogger(AlipayService.class);
|
||||
public class AliPayService {
|
||||
private final Logger logger = LoggerFactory.getLogger(AliPayService.class);
|
||||
/**
|
||||
* 支付宝分配给开发者的应用ID
|
||||
*/
|
||||
@Value("${alipay.appId}")
|
||||
private static String appId;
|
||||
@Value("${aliPay.appId}")
|
||||
private String appId;
|
||||
/**
|
||||
* 私钥
|
||||
*/
|
||||
@Value("${alipay.rsaPrivateKey}")
|
||||
private static String privateKey;
|
||||
@Value("${aliPay.rsaPrivateKey}")
|
||||
private String privateKey;
|
||||
/**
|
||||
* 公钥
|
||||
*/
|
||||
@Value("${alipay.rsaPublicKey}")
|
||||
private static String publicKey;
|
||||
@Value("${aliPay.rsaPublicKey}")
|
||||
private String publicKey;
|
||||
/**
|
||||
* 请求url
|
||||
*/
|
||||
@Value("${alipay.requestUrl}")
|
||||
private static String requestUrl;
|
||||
@Value("${aliPay.requestUrl}")
|
||||
private String requestUrl;
|
||||
|
||||
/**
|
||||
* 条形码扫码付
|
||||
@@ -59,10 +59,10 @@ public class AlipayService {
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
public AlipayBarCodePayResult barCodePay(AlipayBarCodePayParam param) {
|
||||
public AliPayBarCodePayResult barCodePay(AliPayBarCodePayParam param) {
|
||||
//设置条码支付
|
||||
param.setScene("bar_code");
|
||||
AlipayBarCodePayResult result = new AlipayBarCodePayResult(false);
|
||||
AliPayBarCodePayResult result = new AliPayBarCodePayResult(false);
|
||||
String checkArgument = checkArgument(param);
|
||||
if (StringUtils.isNotEmpty(checkArgument)) {
|
||||
result.setMessage(checkArgument);
|
||||
@@ -81,7 +81,8 @@ public class AlipayService {
|
||||
logger.error(e.getMessage());
|
||||
throw new PayException("扫码支付异常");
|
||||
}
|
||||
result.setSuccess(response.isSuccess()); //源码StringUtils.isEmpty(this.subCode)
|
||||
//源码StringUtils.isEmpty(this.subCode)
|
||||
result.setSuccess(response.isSuccess());
|
||||
//根据response中的结果继续业务逻辑处理:subCode不为空,表示接口调用失败|code为10000,代表接口调用成功,subCode为空
|
||||
if (StringUtils.isEmpty(response.getSubCode())) {
|
||||
result.setCode(response.getCode());
|
||||
@@ -101,7 +102,7 @@ public class AlipayService {
|
||||
result.setFundBillList(response.getFundBillList());
|
||||
result.setBuyerUserId(response.getBuyerUserId());
|
||||
result.setDiscountGoodsDetail(response.getDiscountGoodsDetail());
|
||||
logger.info("result = " + result);
|
||||
logger.info("result = {}", result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -111,12 +112,11 @@ public class AlipayService {
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
public AlipayRefundResult refund(AlipayRefundParam param) {
|
||||
AlipayRefundResult result = new AlipayRefundResult(false);
|
||||
public AliPayRefundResult refund(AliPayRefundParam param) {
|
||||
AliPayRefundResult result = new AliPayRefundResult(false);
|
||||
AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
|
||||
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
|
||||
request.setBizContent(JSONObject.toJSONString(param));
|
||||
//通过aliPayClient调用API,获得对应的response类
|
||||
AlipayTradeRefundResponse response;
|
||||
try {
|
||||
response = alipayClient.execute(request);
|
||||
@@ -125,7 +125,6 @@ public class AlipayService {
|
||||
throw new PayException("退款异常");
|
||||
}
|
||||
result.setSuccess(response.isSuccess());
|
||||
//如果subCode存在,代表调用接口失败
|
||||
if (StringUtils.isNotEmpty(response.getSubCode())) {
|
||||
logger.error(response.getSubMsg());
|
||||
result.setCode(response.getSubCode());
|
||||
@@ -142,23 +141,23 @@ public class AlipayService {
|
||||
result.setRefundFee(response.getRefundFee());
|
||||
result.setGmtRefundPay(response.getGmtRefundPay());
|
||||
result.setBuyerUserId(response.getBuyerUserId());
|
||||
logger.info("result = " + result);
|
||||
logger.info("result = {}", result);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单号 交易号查询 只需要一个即可
|
||||
* 如果isSuccess,根据tradeStatus,遍历AlipayTradeStatusEnum获取对应支付状态
|
||||
* 如果isSuccess,根据tradeStatus,遍历AliPayTradeStatusEnum获取对应支付状态
|
||||
*
|
||||
* @param outTradeNo 订单号
|
||||
* @param tradeNo 交易号(推荐)
|
||||
* @return
|
||||
*/
|
||||
public AlipayQueryResult queryOrder(String outTradeNo, String tradeNo) {
|
||||
public AliPayQueryResult queryOrder(String outTradeNo, String tradeNo) {
|
||||
if (StringUtils.isEmpty(outTradeNo) && StringUtils.isEmpty(tradeNo)) {
|
||||
throw new PayException("订单号和交易号不能同时为空!");
|
||||
}
|
||||
AlipayQueryResult result = new AlipayQueryResult(false);
|
||||
AliPayQueryResult result = new AliPayQueryResult(false);
|
||||
AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
|
||||
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
@@ -169,7 +168,6 @@ public class AlipayService {
|
||||
jsonObject.put("trade_no", tradeNo);
|
||||
}
|
||||
request.setBizContent(jsonObject.toString());
|
||||
//通过aliPayClient调用API,获得对应的response类
|
||||
AlipayTradeQueryResponse response;
|
||||
try {
|
||||
response = alipayClient.execute(request);
|
||||
@@ -194,11 +192,11 @@ public class AlipayService {
|
||||
* @param outRequestNo 退款请求号
|
||||
* @return
|
||||
*/
|
||||
public AlipayQueryResult queryRefund(String outTradeNo, String tradeNo, String outRequestNo) {
|
||||
public AliPayQueryResult queryRefund(String outTradeNo, String tradeNo, String outRequestNo) {
|
||||
if (StringUtils.isEmpty(outTradeNo) && StringUtils.isEmpty(tradeNo)) {
|
||||
throw new PayException("订单号和交易号不能同时为空!");
|
||||
}
|
||||
AlipayQueryResult result = new AlipayQueryResult(false);
|
||||
AliPayQueryResult result = new AliPayQueryResult(false);
|
||||
AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
|
||||
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
@@ -210,7 +208,6 @@ public class AlipayService {
|
||||
jsonObject.put("trade_no", tradeNo);
|
||||
}
|
||||
request.setBizContent(jsonObject.toString());
|
||||
//通过aliPayClient调用API,获得对应的response类
|
||||
AlipayTradeQueryResponse response;
|
||||
try {
|
||||
response = alipayClient.execute(request);
|
||||
@@ -229,7 +226,7 @@ public class AlipayService {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private void checkSubCode(AlipayQueryResult result, AlipayTradeQueryResponse response) {
|
||||
private void checkSubCode(AliPayQueryResult result, AlipayTradeQueryResponse response) {
|
||||
if (StringUtils.isNotEmpty(response.getSubCode())) {
|
||||
result.setCode(response.getSubCode());
|
||||
result.setMessage(response.getSubMsg());
|
||||
@@ -245,7 +242,7 @@ public class AlipayService {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private String checkArgument(AlipayBarCodePayParam param) {
|
||||
private String checkArgument(AliPayBarCodePayParam param) {
|
||||
String message;
|
||||
if (StringUtils.isEmpty(param.getOutTradeNo())) {
|
||||
message = "订单号为空";
|
||||
@@ -263,7 +260,7 @@ public class AlipayService {
|
||||
|
||||
public static void main(String[] args) {
|
||||
//刷卡支付
|
||||
AlipayService alipayBuilder = new AlipayService();
|
||||
AliPayService alipayBuilder = new AliPayService();
|
||||
String orderNo = "201705180202";
|
||||
// String authCode = "286796667181427987";
|
||||
// AlipayBarCodePayParam codePayParam = new AlipayBarCodePayParam(orderNo, authCode, "test", 0.1f);
|
||||
@@ -272,12 +269,12 @@ public class AlipayService {
|
||||
|
||||
//查询订单
|
||||
String tradeNo = "2017051221001004630289850336";
|
||||
AlipayQueryResult queryResult = alipayBuilder.queryOrder(orderNo, tradeNo);
|
||||
AliPayQueryResult queryResult = alipayBuilder.queryOrder(orderNo, tradeNo);
|
||||
if (!queryResult.isSuccess()) {
|
||||
throw new BusinessException(queryResult.getMessage());
|
||||
}
|
||||
String tradeStatus = queryResult.getTradeStatus();
|
||||
for (AlipayTradeStatusEnum status : AlipayTradeStatusEnum.values()) {
|
||||
for (AliPayTradeStatusEnum status : AliPayTradeStatusEnum.values()) {
|
||||
if (Objects.equals(tradeStatus, status.getCode())) {
|
||||
System.out.println(status.getName());
|
||||
break;
|
||||
@@ -285,7 +282,7 @@ public class AlipayService {
|
||||
}
|
||||
|
||||
// //退款操作
|
||||
AlipayRefundParam refundParam = new AlipayRefundParam("201505129999", orderNo, 0.05f, "test");
|
||||
AliPayRefundParam refundParam = new AliPayRefundParam("201505129999", orderNo, 0.05f, "test");
|
||||
// AlipayRefundResult refundResult = alipayBuilder.refund(refundParam);
|
||||
// System.out.println(refundResult.getMessage());
|
||||
|
||||
@@ -42,37 +42,37 @@ public class WxPayService {
|
||||
* 商户支付密钥 生成签名时用
|
||||
*/
|
||||
@Value("${wx.apiKey}")
|
||||
private static String apiKey;
|
||||
private String apiKey;
|
||||
/**
|
||||
* 公众账号ID(企业号corpid)
|
||||
*/
|
||||
@Value("${wx.appId}")
|
||||
private static String appId;
|
||||
private String appId;
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
@Value("${wx.mchId}")
|
||||
private static String mchId;
|
||||
private String mchId;
|
||||
/**
|
||||
* 刷卡支付url
|
||||
*/
|
||||
@Value("${wx.barCodePayUrl}")
|
||||
private static String barCodePayUrl;
|
||||
private String barCodePayUrl;
|
||||
/**
|
||||
* 申请退款url
|
||||
*/
|
||||
@Value("${wx.refundUrl}")
|
||||
private static String refundUrl;
|
||||
private String refundUrl;
|
||||
/**
|
||||
* 查询订单url
|
||||
*/
|
||||
@Value("${wx.orderQueryUrl}")
|
||||
private static String orderQueryUrl;
|
||||
private String orderQueryUrl;
|
||||
/**
|
||||
* 退款查询url
|
||||
*/
|
||||
@Value("${wx.refundQueryUrl}")
|
||||
private static String refundQueryUrl;
|
||||
private String refundQueryUrl;
|
||||
|
||||
/**
|
||||
* 条形码扫码付
|
||||
@@ -95,15 +95,14 @@ public class WxPayService {
|
||||
HttpEntity entity = response.getEntity();
|
||||
//返回结果为strXml
|
||||
String content = EntityUtils.toString(entity, "UTF-8");
|
||||
// 解析返回值
|
||||
Map<String, String> returnMap;
|
||||
returnMap = XmlUtil.doXMLParse(content);
|
||||
//解析返回值
|
||||
Map<String, String> returnMap = XmlUtil.doXMLParse(content);
|
||||
//返回状态码SUCCESS/FAIL
|
||||
result.setResultCode(returnMap.get("return_code"));
|
||||
//返回信息 非空,为错误原因
|
||||
//返回信息:非空,为错误原因
|
||||
result.setMessage(returnMap.get("return_msg"));
|
||||
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
|
||||
logger.info("wx barCodePay failed!");
|
||||
logger.error("wx barCodePay failed!");
|
||||
result.setSuccess(false);
|
||||
return result;
|
||||
}
|
||||
@@ -157,32 +156,24 @@ public class WxPayService {
|
||||
public WxRefundResult refund(WxRefundParam param) {
|
||||
WxRefundResult result = new WxRefundResult(false);
|
||||
HttpPost post = new HttpPost(refundUrl);
|
||||
//输入参数为转为strXml
|
||||
String reqBody = buildRefundBarCodeRequestBody(param);
|
||||
post.setEntity(new StringEntity(reqBody, "UTF-8"));
|
||||
CloseableHttpClient httpclient;
|
||||
try {
|
||||
//根据mchId读取微信证书,SSL创建安全连接
|
||||
httpclient = ClientCustomSSL.getCloseableHttpClient(mchId);
|
||||
CloseableHttpResponse response = httpclient.execute(post);
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
||||
//返回结果为strXml
|
||||
HttpEntity entity = response.getEntity();
|
||||
String content = EntityUtils.toString(entity, "UTF-8");
|
||||
// 解析返回值
|
||||
Map<String, String> returnMap;
|
||||
returnMap = com.xwbing.util.payWxpay.XmlUtil.doXMLParse(content);
|
||||
//返回状态码SUCCESS/FAIL
|
||||
Map<String, String> returnMap = com.xwbing.util.payWxpay.XmlUtil.doXMLParse(content);
|
||||
result.setResultCode(returnMap.get("return_code"));
|
||||
//返回信息 非空,为错误原因
|
||||
result.setMessage(returnMap.get("return_msg"));
|
||||
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
|
||||
logger.info("wx barCodePay failed!");
|
||||
logger.error("wx barCodePay failed!");
|
||||
result.setSuccess(false);
|
||||
return result;
|
||||
}
|
||||
logger.info("outRefundNo=" + param.getOutTradeNo() + ",err_code=" + returnMap.get("err_code") + ",result_code=" + returnMap.get("result_code") + ",err_code_des=" + returnMap.get("err_code_des"));
|
||||
//业务结果SUCCESS/FAIL
|
||||
if ("SUCCESS".equals(returnMap.get("result_code"))) {
|
||||
result.setSuccess(true);
|
||||
result.setAppid(returnMap.get("appid"));
|
||||
@@ -232,31 +223,24 @@ public class WxPayService {
|
||||
public WxQueryResult orderQuery(String outTradeNo, String transactionId) {
|
||||
WxQueryResult result = new WxQueryResult(false);
|
||||
HttpPost post = new HttpPost(orderQueryUrl);
|
||||
//输入参数为转为strXml
|
||||
String reqBody = buildQueryRequestBody(outTradeNo, transactionId);
|
||||
post.setEntity(new StringEntity(reqBody, "UTF-8"));
|
||||
CloseableHttpClient httpclient;
|
||||
try {
|
||||
//根据mchId读取微信证书,SSL创建安全连接
|
||||
httpclient = ClientCustomSSL.getCloseableHttpClient(mchId);
|
||||
CloseableHttpResponse response = httpclient.execute(post);
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
||||
HttpEntity entity = response.getEntity();
|
||||
//返回结果为strXml
|
||||
String content = EntityUtils.toString(entity, "UTF-8");
|
||||
// 解析返回值
|
||||
Map<String, String> returnMap;
|
||||
returnMap = XmlUtil.doXMLParse(content);
|
||||
Map<String, String> returnMap = XmlUtil.doXMLParse(content);
|
||||
result.setResultCode(returnMap.get("return_code"));
|
||||
result.setMessage(returnMap.get("return_msg"));
|
||||
//此字段是通信标识,非交易标识
|
||||
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
|
||||
logger.info("wx barCodePay failed!");
|
||||
logger.error("wx barCodePay failed!");
|
||||
result.setSuccess(false);
|
||||
return result;
|
||||
}
|
||||
logger.info("outTradeNo=" + outTradeNo + ",transactionId=" + transactionId);
|
||||
//业务结果
|
||||
if ("SUCCESS".equals(returnMap.get("result_code"))) {
|
||||
result.setSuccess(true);
|
||||
//交易状态
|
||||
@@ -300,24 +284,18 @@ public class WxPayService {
|
||||
public WxQueryResult refundQuery(String outTradeNo, String transactionId, String ouRefundNo, String refundid) {
|
||||
WxQueryResult result = new WxQueryResult(false);
|
||||
HttpPost post = new HttpPost(refundQueryUrl);
|
||||
//输入参数为转为strXml
|
||||
String reqBody = buildRefundQueryRequestBody(outTradeNo, transactionId, ouRefundNo, refundid);
|
||||
post.setEntity(new StringEntity(reqBody, "UTF-8"));
|
||||
CloseableHttpClient httpclient;
|
||||
try {
|
||||
//根据mchId读取微信证书,SSL创建安全连接
|
||||
httpclient = ClientCustomSSL.getCloseableHttpClient(mchId);
|
||||
CloseableHttpResponse response = httpclient.execute(post);
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
||||
HttpEntity entity = response.getEntity();
|
||||
//返回结果为strXml
|
||||
String content = EntityUtils.toString(entity, "UTF-8");
|
||||
// 解析返回值
|
||||
Map<String, String> returnMap;
|
||||
returnMap = XmlUtil.doXMLParse(content);
|
||||
Map<String, String> returnMap = XmlUtil.doXMLParse(content);
|
||||
result.setResultCode(returnMap.get("return_code"));
|
||||
result.setMessage(returnMap.get("return_msg"));
|
||||
//此字段是通信标识,非交易标识
|
||||
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
|
||||
logger.error("wx barCodePay failed!");
|
||||
result.setSuccess(false);
|
||||
@@ -361,7 +339,7 @@ public class WxPayService {
|
||||
* @return
|
||||
*/
|
||||
private String buildBarCodeRequestBody(WxBarCodePayParam param) {
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("appid", appId);
|
||||
params.put("mch_id", mchId);
|
||||
String nonceStr = RandomKit.buildRandom(32);
|
||||
@@ -382,7 +360,6 @@ public class WxPayService {
|
||||
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
|
||||
}
|
||||
reqBody.append("</xml>");
|
||||
logger.info(reqBody + "~~~------------");
|
||||
return reqBody.toString();
|
||||
}
|
||||
|
||||
@@ -421,12 +398,11 @@ public class WxPayService {
|
||||
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
|
||||
}
|
||||
reqBody.append("</xml>");
|
||||
logger.info(reqBody + "~~~------------");
|
||||
return reqBody.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询封装参数
|
||||
* 构建订单查询参数
|
||||
*
|
||||
* @param outTradeNo 商户订单号
|
||||
* @param transactionId 微信订单号
|
||||
@@ -457,12 +433,11 @@ public class WxPayService {
|
||||
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
|
||||
}
|
||||
reqBody.append("</xml>");
|
||||
logger.info(reqBody + "~~~------------");
|
||||
return reqBody.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询封装参数
|
||||
* 构建退款查询参数
|
||||
*
|
||||
* @param outTradeNo 商户订单号
|
||||
* @param transactionId 微信订单号
|
||||
@@ -501,17 +476,16 @@ public class WxPayService {
|
||||
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
|
||||
}
|
||||
reqBody.append("</xml>");
|
||||
logger.info(reqBody + "~~~------------");
|
||||
return reqBody.toString();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
WxPayService wxPayBuilder = new WxPayService();
|
||||
//刷卡支付
|
||||
// String authCode = "130203463134616871";
|
||||
// WxBarCodePayParam payParam = new WxBarCodePayParam("2017051200", "127.0.0.0", authCode, "test", 1);
|
||||
// WxBarCodePayResult result = wxPayBuilder.barCodePay(payParam);
|
||||
// System.out.println(result.isSuccess() + result.getMessage());
|
||||
String authCode = "130203463134616871";
|
||||
WxBarCodePayParam payParam = new WxBarCodePayParam("2017051200", "127.0.0.0", authCode, "test", 1);
|
||||
WxBarCodePayResult result = wxPayBuilder.barCodePay(payParam);
|
||||
System.out.println(result.isSuccess() + result.getMessage());
|
||||
|
||||
//查询订单
|
||||
String outTradeNo = "2017051200";
|
||||
|
||||
@@ -12,10 +12,10 @@ wx.refundQueryUrl=https://api.mch.weixin.qq.com/pay/refundquery
|
||||
|
||||
|
||||
###payAlipay pay set start##
|
||||
alipay.appId=2017051807273744
|
||||
alipay.requestUrl=https://openapi.alipay.com/gateway.do
|
||||
alipay.rsaPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsa1COluDzLH7GhYCWZp4HclR9x2nJ51UNVx7nmDwjr4Gg4miAOiEHYjZ4ILOUavo2EPN0/pcGRhMa8U87xICWcHQr26Q8cYkZgIfb5DC7l2b8MROxUYzdk82Y+3c8mbZ/6I5LfJeztDWtnXLQUZihTqaI2hPeGL9WEeMxqxaXMge1ho1BF4LfylUlO0WOle9grWYv0Xqpz0zKz6kCiVj2gdvNpL6ULj/C8BHZtY+aHd0Pd1dOdFPft8c+uTs7ESpAwClvoS9Go2LXJGPZUNGd0FnzRSyjpbi905rOjDQbUlUdcSbcg/qiFHaH1+GF3yRD4RAIO8pgzTj8RLsrbj/MQIDAQAB
|
||||
alipay.rsaPrivateKey=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxrUI6W4PMsfsaFgJZmngdyVH3HacnnVQ1XHueYPCOvgaDiaIA6IQdiNnggs5Rq+jYQ83T+lwZGExrxTzvEgJZwdCvbpDxxiRmAh9vkMLuXZvwxE7FRjN2TzZj7dzyZtn/ojkt8l7O0Na2dctBRmKFOpojaE94Yv1YR4zGrFpcyB7WGjUEXgt/KVSU7RY6V72CtZi/ReqnPTMrPqQKJWPaB282kvpQuP8LwEdm1j5od3Q93V050U9+3xz65OzsRKkDAKW+hL0ajYtckY9lQ0Z3QWfNFLKOluL3Tms6MNBtSVR1xJtyD+qIUdofX4YXfJEPhEAg7ymDNOPxEuytuP8xAgMBAAECggEAJ3k2nYB3Z6KjBsic/Qs0ZGm1rBEKceKiMri5PhaLWysch1ysgUcnEui0fwyQidSHhoSJ1e5pR6n+UHMhdnupygclNdR6nzxGGeOe2EpxBEQHwRXb6jgOdtpiWxEdZT00cXa4/Vw7c/cxvJeu8HGSscazN+qUvUpAvrwmqnzgFnx/9jnji+tpPPahBD9uqJuKEg4cfvuR7sOtkcV4OyTfV1ASpec4Fsu0SXUSugP7ApSpKRZqIIpYIT/G8jqTxZ73tf2tnj6f9PoxzpbgN7kocxAzELxRpZi5G+CTqtc1AX6DKh173BhNqnAlfW7rGbF2IfUEsqbtsOksSor3+BRlgQKBgQDvf0QoG1CqO7xTokHFO1MWjYsfFxDQ7PeJtMdr/Jp2dYNpUT9B4Yl09DcLSEwDwn15VR4/NYlpiJvlOIrpYDWI0/ZvkSPy6hQmOP6WYTH1cdUwxSetX+MNBsi5PHUUa9ObvXBYZWOVLAuHieSJDcmJuDiGFdJvo2X+0ul68piVgwKBgQC963sDPk9mLgxD/en/1cQu4HxdS4MCelBqogRD24TV1DWkLFPBeK8QMLCvwd5BSN2kTXdTEEyHPCwBbe3hyQ6cKHmM5SUujomXnzOgbNWshCU3A7eHHjQjyK+eqSWDTsK4kX7q1A4Pi5MftTEiBUI5EwVHsXLNtcVhHTC24bsuOwKBgBb6jv+KH2M1+AvONaFG3+H6Eq8Y93QUSGvd/IRP6EIVZFZmhTs8+INQKzfZ5/E0Z/WMRSqraFPH161Wj310za4jKDHsKxbTfrtsHIExMinqkhnr0LLB0Hcff4LGWjVrYxI+StkwYS2e3DxU7qh3ui6Mjl/PGDG967tXYS96t0khAoGAXEuY322jlmugaFZ4Jm1TRtivd4Nf6o9Yj0mnOvbuaiAT5XHpTieBJCQVaYSUpzNrCxLef053cm0qkZNDvKtB31/IGlGtrR91/GpQ45CgkpMxpre2tAJYol9AAaH/6f0XoiyK+kINhz50RD+A3iCiGyyEL2AsA45nmpdd+jJfDcsCgYEA3ZPASHIfbnflQkWzzvUbzKLFqZB/NulDJTK4QvHne2canOac2oyOivBXQBgio9sqTolQo5W+6SxH9YqpH8GjPcPMsEF9PVsn4o/Gm3hY68sf2gSgpVfQzLM6KYDJ6asO93ZmJ6z0fu6qwUGdACpcSlZzCy0QQ6+QhHVobR2Uma8=
|
||||
aliPay.appId=2017051807273744
|
||||
aliPay.requestUrl=https://openapi.alipay.com/gateway.do
|
||||
aliPay.rsaPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsa1COluDzLH7GhYCWZp4HclR9x2nJ51UNVx7nmDwjr4Gg4miAOiEHYjZ4ILOUavo2EPN0/pcGRhMa8U87xICWcHQr26Q8cYkZgIfb5DC7l2b8MROxUYzdk82Y+3c8mbZ/6I5LfJeztDWtnXLQUZihTqaI2hPeGL9WEeMxqxaXMge1ho1BF4LfylUlO0WOle9grWYv0Xqpz0zKz6kCiVj2gdvNpL6ULj/C8BHZtY+aHd0Pd1dOdFPft8c+uTs7ESpAwClvoS9Go2LXJGPZUNGd0FnzRSyjpbi905rOjDQbUlUdcSbcg/qiFHaH1+GF3yRD4RAIO8pgzTj8RLsrbj/MQIDAQAB
|
||||
aliPay.rsaPrivateKey=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxrUI6W4PMsfsaFgJZmngdyVH3HacnnVQ1XHueYPCOvgaDiaIA6IQdiNnggs5Rq+jYQ83T+lwZGExrxTzvEgJZwdCvbpDxxiRmAh9vkMLuXZvwxE7FRjN2TzZj7dzyZtn/ojkt8l7O0Na2dctBRmKFOpojaE94Yv1YR4zGrFpcyB7WGjUEXgt/KVSU7RY6V72CtZi/ReqnPTMrPqQKJWPaB282kvpQuP8LwEdm1j5od3Q93V050U9+3xz65OzsRKkDAKW+hL0ajYtckY9lQ0Z3QWfNFLKOluL3Tms6MNBtSVR1xJtyD+qIUdofX4YXfJEPhEAg7ymDNOPxEuytuP8xAgMBAAECggEAJ3k2nYB3Z6KjBsic/Qs0ZGm1rBEKceKiMri5PhaLWysch1ysgUcnEui0fwyQidSHhoSJ1e5pR6n+UHMhdnupygclNdR6nzxGGeOe2EpxBEQHwRXb6jgOdtpiWxEdZT00cXa4/Vw7c/cxvJeu8HGSscazN+qUvUpAvrwmqnzgFnx/9jnji+tpPPahBD9uqJuKEg4cfvuR7sOtkcV4OyTfV1ASpec4Fsu0SXUSugP7ApSpKRZqIIpYIT/G8jqTxZ73tf2tnj6f9PoxzpbgN7kocxAzELxRpZi5G+CTqtc1AX6DKh173BhNqnAlfW7rGbF2IfUEsqbtsOksSor3+BRlgQKBgQDvf0QoG1CqO7xTokHFO1MWjYsfFxDQ7PeJtMdr/Jp2dYNpUT9B4Yl09DcLSEwDwn15VR4/NYlpiJvlOIrpYDWI0/ZvkSPy6hQmOP6WYTH1cdUwxSetX+MNBsi5PHUUa9ObvXBYZWOVLAuHieSJDcmJuDiGFdJvo2X+0ul68piVgwKBgQC963sDPk9mLgxD/en/1cQu4HxdS4MCelBqogRD24TV1DWkLFPBeK8QMLCvwd5BSN2kTXdTEEyHPCwBbe3hyQ6cKHmM5SUujomXnzOgbNWshCU3A7eHHjQjyK+eqSWDTsK4kX7q1A4Pi5MftTEiBUI5EwVHsXLNtcVhHTC24bsuOwKBgBb6jv+KH2M1+AvONaFG3+H6Eq8Y93QUSGvd/IRP6EIVZFZmhTs8+INQKzfZ5/E0Z/WMRSqraFPH161Wj310za4jKDHsKxbTfrtsHIExMinqkhnr0LLB0Hcff4LGWjVrYxI+StkwYS2e3DxU7qh3ui6Mjl/PGDG967tXYS96t0khAoGAXEuY322jlmugaFZ4Jm1TRtivd4Nf6o9Yj0mnOvbuaiAT5XHpTieBJCQVaYSUpzNrCxLef053cm0qkZNDvKtB31/IGlGtrR91/GpQ45CgkpMxpre2tAJYol9AAaH/6f0XoiyK+kINhz50RD+A3iCiGyyEL2AsA45nmpdd+jJfDcsCgYEA3ZPASHIfbnflQkWzzvUbzKLFqZB/NulDJTK4QvHne2canOac2oyOivBXQBgio9sqTolQo5W+6SxH9YqpH8GjPcPMsEF9PVsn4o/Gm3hY68sf2gSgpVfQzLM6KYDJ6asO93ZmJ6z0fu6qwUGdACpcSlZzCy0QQ6+QhHVobR2Uma8=
|
||||
###payAlipay end set start##
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user