mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	优化微信支付代码
This commit is contained in:
		| @ -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() | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang