mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-05-05 21:27:47 +08:00
优化微信支付代码
This commit is contained in:
parent
ef97a308f3
commit
f796bfdafe
@ -1,6 +1,7 @@
|
||||
package com.github.binarywang.wxpay.bean.order;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@ -13,7 +14,7 @@ import lombok.Data;
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
public class WxPayMwebOrderResult {
|
||||
@XStreamAlias("mwebUrl")
|
||||
private String mwebUrl;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.github.binarywang.wxpay.bean.order;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@ -12,7 +13,7 @@ import lombok.Data;
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
public class WxPayNativeOrderResult {
|
||||
private String codeUrl;
|
||||
}
|
||||
|
@ -1,29 +1,8 @@
|
||||
package com.github.binarywang.wxpay.service.impl;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipException;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.github.binarywang.utils.qrcode.QrcodeUtils;
|
||||
import com.github.binarywang.wxpay.bean.WxPayApiData;
|
||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryRequest;
|
||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponSendRequest;
|
||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponSendResult;
|
||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponStockQueryRequest;
|
||||
import com.github.binarywang.wxpay.bean.coupon.WxPayCouponStockQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.coupon.*;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
|
||||
import com.github.binarywang.wxpay.bean.notify.WxScanPayNotifyResult;
|
||||
@ -31,37 +10,8 @@ import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayAuthcode2OpenidRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayDefaultRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayDownloadBillRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderCloseRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayOrderReverseRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayQueryCommentRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayRedpackQueryRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayRefundQueryRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayReportRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPaySendRedpackRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayShorturlRequest;
|
||||
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
|
||||
import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayAuthcode2OpenidResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayBillBaseResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayBillResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayCommonResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderCloseResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayOrderReverseResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayRedpackQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayRefundQueryResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPaySandboxSignKeyResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPaySendRedpackResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayShorturlResult;
|
||||
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
|
||||
import com.github.binarywang.wxpay.bean.request.*;
|
||||
import com.github.binarywang.wxpay.bean.result.*;
|
||||
import com.github.binarywang.wxpay.config.WxPayConfig;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants.BillType;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants.SignType;
|
||||
@ -73,6 +23,17 @@ import com.github.binarywang.wxpay.util.SignUtils;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.Maps;
|
||||
import jodd.io.ZipUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.*;
|
||||
import java.util.zip.ZipException;
|
||||
|
||||
import static com.github.binarywang.wxpay.constant.WxPayConstants.QUERY_COMMENT_DATE_FORMAT;
|
||||
import static com.github.binarywang.wxpay.constant.WxPayConstants.TarType;
|
||||
@ -290,7 +251,7 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
WxPayUnifiedOrderResult unifiedOrderResult = this.unifiedOrder(request);
|
||||
String prepayId = unifiedOrderResult.getPrepayId();
|
||||
if (StringUtils.isBlank(prepayId)) {
|
||||
throw new RuntimeException(String.format("无法获取prepay id,错误代码: '%s',信息:%s。",
|
||||
throw new WxPayException(String.format("无法获取prepay id,错误代码: '%s',信息:%s。",
|
||||
unifiedOrderResult.getErrCode(), unifiedOrderResult.getErrCodeDes()));
|
||||
}
|
||||
|
||||
@ -298,15 +259,11 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
String nonceStr = String.valueOf(System.currentTimeMillis());
|
||||
switch (request.getTradeType()) {
|
||||
case TradeType.MWEB: {
|
||||
return (T) WxPayMwebOrderResult.builder()
|
||||
.mwebUrl(unifiedOrderResult.getMwebUrl())
|
||||
.build();
|
||||
return (T) new WxPayMwebOrderResult(unifiedOrderResult.getMwebUrl());
|
||||
}
|
||||
|
||||
case TradeType.NATIVE: {
|
||||
return (T) WxPayNativeOrderResult.builder()
|
||||
.codeUrl(unifiedOrderResult.getCodeURL())
|
||||
.build();
|
||||
return (T) new WxPayNativeOrderResult(unifiedOrderResult.getCodeURL());
|
||||
}
|
||||
|
||||
case TradeType.APP: {
|
||||
@ -318,7 +275,13 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
|
||||
Map<String, String> configMap = new HashMap<>(8);
|
||||
// 此map用于参与调起sdk支付的二次签名,格式全小写,timestamp只能是10位,格式固定,切勿修改
|
||||
String partnerId = getConfig().getMchId();
|
||||
String partnerId;
|
||||
if (StringUtils.isEmpty(request.getMchId())) {
|
||||
partnerId = this.getConfig().getMchId();
|
||||
} else {
|
||||
partnerId = request.getMchId();
|
||||
}
|
||||
|
||||
configMap.put("prepayid", prepayId);
|
||||
configMap.put("partnerid", partnerId);
|
||||
String packageValue = "Sign=WXPay";
|
||||
@ -327,7 +290,7 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
configMap.put("noncestr", nonceStr);
|
||||
configMap.put("appid", appId);
|
||||
|
||||
return (T) WxPayAppOrderResult.builder()
|
||||
final WxPayAppOrderResult result = WxPayAppOrderResult.builder()
|
||||
.sign(SignUtils.createSign(configMap, null, this.getConfig().getMchKey(), false))
|
||||
.prepayId(prepayId)
|
||||
.partnerId(partnerId)
|
||||
@ -336,13 +299,14 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
|
||||
.timeStamp(timestamp)
|
||||
.nonceStr(nonceStr)
|
||||
.build();
|
||||
return (T) result;
|
||||
}
|
||||
|
||||
case TradeType.JSAPI: {
|
||||
String signType = SignType.MD5;
|
||||
String appid = unifiedOrderResult.getAppid();
|
||||
if (StringUtils.isNotEmpty(this.getConfig().getSubAppId())) {
|
||||
appid = this.getConfig().getSubAppId();
|
||||
if (StringUtils.isNotEmpty(unifiedOrderResult.getSubAppId())) {
|
||||
appid = unifiedOrderResult.getSubAppId();
|
||||
}
|
||||
|
||||
WxPayMpOrderResult payResult = WxPayMpOrderResult.builder()
|
||||
|
Loading…
Reference in New Issue
Block a user