diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImpl.java index 1d5632bb0..07c362799 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImpl.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImpl.java @@ -213,14 +213,13 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { String timestamp = String.valueOf(System.currentTimeMillis() / 1000); String nonceStr = String.valueOf(System.currentTimeMillis()); - Object payResult = null; switch (request.getTradeType()) { case TradeType.NATIVE: { - payResult = WxPayNativeOrderResult.builder() + return (T) WxPayNativeOrderResult.builder() .codeUrl(unifiedOrderResult.getCodeURL()) .build(); - break; } + case TradeType.APP: { // APP支付绑定的是微信开放平台上的账号,APPID为开放平台上绑定APP后发放的参数 String appId = this.getConfig().getAppId(); @@ -235,7 +234,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { configMap.put("noncestr", nonceStr); configMap.put("appid", appId); - payResult = WxPayAppOrderResult.builder() + return (T) WxPayAppOrderResult.builder() .sign(SignUtils.createSign(configMap, null, this.getConfig().getMchKey(), false)) .prepayId(prepayId) .partnerId(partnerId) @@ -244,26 +243,33 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { .timeStamp(timestamp) .nonceStr(nonceStr) .build(); - break; } + case TradeType.JSAPI: { - payResult = WxPayMpOrderResult.builder() + String signType = SignType.MD5; + WxPayMpOrderResult payResult = WxPayMpOrderResult.builder() .appId(unifiedOrderResult.getAppid()) .timeStamp(timestamp) .nonceStr(nonceStr) .packageValue("prepay_id=" + prepayId) - .signType(SignType.MD5) + .signType(signType) .build(); - ((WxPayMpOrderResult) payResult) - .setPaySign(SignUtils.createSign(payResult, null, this.getConfig().getMchKey(), false)); - break; + + payResult.setPaySign( + SignUtils.createSign( + payResult, + signType, + this.getConfig().getMchKey(), + false) + ); + return (T) payResult; } + default: { throw new WxPayException("该交易类型暂不支持"); } } - return (T) payResult; } @Override