From 47a9eaee317569d42830dc67df3159c90823325d Mon Sep 17 00:00:00 2001 From: jinyu Date: Tue, 21 Jun 2016 14:02:36 +0800 Subject: [PATCH] =?UTF-8?q?#78=20=E6=88=91=E5=A4=AA=E7=B2=97=E5=BF=83?= =?UTF-8?q?=E4=BA=86=EF=BC=8C=E8=B0=A2=E8=B0=A2=E6=8F=90=E9=86=92=E3=80=82?= =?UTF-8?q?:-)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/foxinmy/weixin4j/api/PayApi.java | 19 +++++++------ .../weixin4j/payment/mch/MchPayPackage.java | 4 ++- .../com/foxinmy/weixin4j/type/TradeType.java | 27 ++++++++++++++----- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java index d05e62e3..c427a19b 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java @@ -103,8 +103,11 @@ public class PayApi extends MchApi { */ public MchPayRequest createPayRequest(MchPayPackage payPackage) throws WeixinException { - String tradeType = payPackage.getTradeType(); - if (TradeType.MICROPAY.name().equalsIgnoreCase(tradeType)) { + if (StringUtil.isBlank(payPackage.getTradeType())) { + throw new WeixinException("tradeType not be empty"); + } + String tradeType = payPackage.getTradeType().toUpperCase(); + if (TradeType.MICROPAY.name().equals(tradeType)) { super.declareMerchant(payPackage); payPackage.setSign(weixinSignature.sign(payPackage)); String para = XmlStream.toXML(payPackage); @@ -117,14 +120,14 @@ public class PayApi extends MchApi { return microPayRequest; } PrePay prePay = createPrePay(payPackage); - if (TradeType.APP.name().equalsIgnoreCase(tradeType)) { + if (TradeType.APP.name().equals(tradeType)) { return new APPPayRequest(prePay.getPrepayId(), weixinAccount); - } else if (TradeType.JSAPI.name().equalsIgnoreCase(tradeType)) { + } else if (TradeType.JSAPI.name().equals(tradeType)) { return new JSAPIPayRequest(prePay.getPrepayId(), weixinAccount); - } else if (TradeType.NATIVE.name().equalsIgnoreCase(tradeType)) { + } else if (TradeType.NATIVE.name().equals(tradeType)) { return new NATIVEPayRequest(prePay.getPrepayId(), prePay.getCodeUrl(), weixinAccount); - } else if (TradeType.WAP.name().equalsIgnoreCase(tradeType)) { + } else if (TradeType.WAP.name().equals(tradeType)) { return new WAPPayRequest(prePay.getPrepayId(), weixinAccount); } else { throw new WeixinException("unknown tradeType:" + tradeType); @@ -386,9 +389,9 @@ public class PayApi extends MchApi { public MchPayRequest createMicroPayRequest(String authCode, String body, String outTradeNo, double totalFee, String createIp, String attach) throws WeixinException { - // 刷卡支付不需要设置TradeType.MICROPAY MchPayPackage payPackage = new MchPayPackage(body, outTradeNo, - totalFee, null, createIp, null, null, authCode, null, attach); + totalFee, null, createIp, TradeType.MICROPAY, null, authCode, + null, attach); return createPayRequest(payPackage); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java index f11306fa..8893722f 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java @@ -145,7 +145,9 @@ public class MchPayPackage extends PayPackage { String goodsTag, String limitPay, String subOpenId) { super(body, detial, outTradeNo, totalFee, notifyUrl, createIp, attach, timeStart, timeExpire, goodsTag); - this.tradeType = tradeType.name(); + if (tradeType.isPayRequestParameter()) { + this.tradeType = tradeType.name(); + } this.openId = openId; this.authCode = authCode; this.productId = productId; diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TradeType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TradeType.java index df0361cb..27295eca 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TradeType.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TradeType.java @@ -13,21 +13,36 @@ public enum TradeType { /** * JS支付 */ - JSAPI, + JSAPI(true), /** - * 刷卡支付 + * 刷卡支付:不需要设置TradeType参数 */ - MICROPAY, + MICROPAY(false), /** * 扫码支付 */ - NATIVE, + NATIVE(true), /** * APP支付 */ - APP, + APP(true), /** * WAP支付 */ - WAP; + WAP(true); + + boolean isPayRequestParameter; + + private TradeType(boolean isPayRequestParameter) { + this.isPayRequestParameter = isPayRequestParameter; + } + + /** + * 是否作为支付请求参数 + * + * @return + */ + public boolean isPayRequestParameter() { + return isPayRequestParameter; + } }