mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 18:46:10 +08:00 
			
		
		
		
	优化微信支付代码
This commit is contained in:
		| @ -1,6 +1,7 @@ | |||||||
| package com.github.binarywang.wxpay.bean.order; | package com.github.binarywang.wxpay.bean.order; | ||||||
|  |  | ||||||
| import com.thoughtworks.xstream.annotations.XStreamAlias; | import com.thoughtworks.xstream.annotations.XStreamAlias; | ||||||
|  | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
| @ -13,7 +14,7 @@ import lombok.Data; | |||||||
|  * @author <a href="https://github.com/binarywang">Binary Wang</a> |  * @author <a href="https://github.com/binarywang">Binary Wang</a> | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @Builder | @AllArgsConstructor | ||||||
| public class WxPayMwebOrderResult { | public class WxPayMwebOrderResult { | ||||||
|   @XStreamAlias("mwebUrl") |   @XStreamAlias("mwebUrl") | ||||||
|   private String mwebUrl; |   private String mwebUrl; | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| package com.github.binarywang.wxpay.bean.order; | package com.github.binarywang.wxpay.bean.order; | ||||||
|  |  | ||||||
|  | import lombok.AllArgsConstructor; | ||||||
| import lombok.Builder; | import lombok.Builder; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
| @ -12,7 +13,7 @@ import lombok.Data; | |||||||
|  * @author <a href="https://github.com/binarywang">Binary Wang</a> |  * @author <a href="https://github.com/binarywang">Binary Wang</a> | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @Builder | @AllArgsConstructor | ||||||
| public class WxPayNativeOrderResult { | public class WxPayNativeOrderResult { | ||||||
|   private String codeUrl; |   private String codeUrl; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,29 +1,8 @@ | |||||||
| package com.github.binarywang.wxpay.service.impl; | 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.utils.qrcode.QrcodeUtils; | ||||||
| import com.github.binarywang.wxpay.bean.WxPayApiData; | import com.github.binarywang.wxpay.bean.WxPayApiData; | ||||||
| import com.github.binarywang.wxpay.bean.coupon.WxPayCouponInfoQueryRequest; | import com.github.binarywang.wxpay.bean.coupon.*; | ||||||
| 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.notify.WxPayOrderNotifyResult; | import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; | ||||||
| import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult; | import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult; | ||||||
| import com.github.binarywang.wxpay.bean.notify.WxScanPayNotifyResult; | 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.WxPayMpOrderResult; | ||||||
| import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; | import com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult; | ||||||
| import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult; | import com.github.binarywang.wxpay.bean.order.WxPayNativeOrderResult; | ||||||
| import com.github.binarywang.wxpay.bean.request.WxPayAuthcode2OpenidRequest; | import com.github.binarywang.wxpay.bean.request.*; | ||||||
| import com.github.binarywang.wxpay.bean.request.WxPayDefaultRequest; | import com.github.binarywang.wxpay.bean.result.*; | ||||||
| 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.config.WxPayConfig; | import com.github.binarywang.wxpay.config.WxPayConfig; | ||||||
| import com.github.binarywang.wxpay.constant.WxPayConstants.BillType; | import com.github.binarywang.wxpay.constant.WxPayConstants.BillType; | ||||||
| import com.github.binarywang.wxpay.constant.WxPayConstants.SignType; | 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.base.Joiner; | ||||||
| import com.google.common.collect.Maps; | import com.google.common.collect.Maps; | ||||||
| import jodd.io.ZipUtil; | 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.QUERY_COMMENT_DATE_FORMAT; | ||||||
| import static com.github.binarywang.wxpay.constant.WxPayConstants.TarType; | import static com.github.binarywang.wxpay.constant.WxPayConstants.TarType; | ||||||
| @ -290,7 +251,7 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||||||
|     WxPayUnifiedOrderResult unifiedOrderResult = this.unifiedOrder(request); |     WxPayUnifiedOrderResult unifiedOrderResult = this.unifiedOrder(request); | ||||||
|     String prepayId = unifiedOrderResult.getPrepayId(); |     String prepayId = unifiedOrderResult.getPrepayId(); | ||||||
|     if (StringUtils.isBlank(prepayId)) { |     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())); |         unifiedOrderResult.getErrCode(), unifiedOrderResult.getErrCodeDes())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -298,15 +259,11 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||||||
|     String nonceStr = String.valueOf(System.currentTimeMillis()); |     String nonceStr = String.valueOf(System.currentTimeMillis()); | ||||||
|     switch (request.getTradeType()) { |     switch (request.getTradeType()) { | ||||||
|       case TradeType.MWEB: { |       case TradeType.MWEB: { | ||||||
|         return (T) WxPayMwebOrderResult.builder() |         return (T) new WxPayMwebOrderResult(unifiedOrderResult.getMwebUrl()); | ||||||
|           .mwebUrl(unifiedOrderResult.getMwebUrl()) |  | ||||||
|           .build(); |  | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       case TradeType.NATIVE: { |       case TradeType.NATIVE: { | ||||||
|         return (T) WxPayNativeOrderResult.builder() |         return (T) new WxPayNativeOrderResult(unifiedOrderResult.getCodeURL()); | ||||||
|           .codeUrl(unifiedOrderResult.getCodeURL()) |  | ||||||
|           .build(); |  | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       case TradeType.APP: { |       case TradeType.APP: { | ||||||
| @ -318,7 +275,13 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||||||
|  |  | ||||||
|         Map<String, String> configMap = new HashMap<>(8); |         Map<String, String> configMap = new HashMap<>(8); | ||||||
|         // 此map用于参与调起sdk支付的二次签名,格式全小写,timestamp只能是10位,格式固定,切勿修改 |         // 此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("prepayid", prepayId); | ||||||
|         configMap.put("partnerid", partnerId); |         configMap.put("partnerid", partnerId); | ||||||
|         String packageValue = "Sign=WXPay"; |         String packageValue = "Sign=WXPay"; | ||||||
| @ -327,7 +290,7 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||||||
|         configMap.put("noncestr", nonceStr); |         configMap.put("noncestr", nonceStr); | ||||||
|         configMap.put("appid", appId); |         configMap.put("appid", appId); | ||||||
|  |  | ||||||
|         return (T) WxPayAppOrderResult.builder() |         final WxPayAppOrderResult result = WxPayAppOrderResult.builder() | ||||||
|           .sign(SignUtils.createSign(configMap, null, this.getConfig().getMchKey(), false)) |           .sign(SignUtils.createSign(configMap, null, this.getConfig().getMchKey(), false)) | ||||||
|           .prepayId(prepayId) |           .prepayId(prepayId) | ||||||
|           .partnerId(partnerId) |           .partnerId(partnerId) | ||||||
| @ -336,13 +299,14 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { | |||||||
|           .timeStamp(timestamp) |           .timeStamp(timestamp) | ||||||
|           .nonceStr(nonceStr) |           .nonceStr(nonceStr) | ||||||
|           .build(); |           .build(); | ||||||
|  |         return (T) result; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       case TradeType.JSAPI: { |       case TradeType.JSAPI: { | ||||||
|         String signType = SignType.MD5; |         String signType = SignType.MD5; | ||||||
|         String appid = unifiedOrderResult.getAppid(); |         String appid = unifiedOrderResult.getAppid(); | ||||||
|         if (StringUtils.isNotEmpty(this.getConfig().getSubAppId())) { |         if (StringUtils.isNotEmpty(unifiedOrderResult.getSubAppId())) { | ||||||
|           appid = this.getConfig().getSubAppId(); |           appid = unifiedOrderResult.getSubAppId(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         WxPayMpOrderResult payResult = WxPayMpOrderResult.builder() |         WxPayMpOrderResult payResult = WxPayMpOrderResult.builder() | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user