From a3ada2c0aead836f8c2f64bd0a742ca59783afc1 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Tue, 25 Oct 2016 12:06:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=B1=BB=E7=9A=84=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chanjar/weixin/mp/api/WxMpPayService.java | 13 +- .../mp/api/impl/WxMpPayServiceImpl.java | 16 +- .../mp/bean/pay/WxPayJsSDKCallback.java | 520 +++++++++--------- .../{ => request}/WxEntPayQueryRequest.java | 2 +- .../pay/{ => request}/WxEntPayRequest.java | 2 +- .../pay/{ => request}/WxPayBaseRequest.java | 2 +- .../{ => request}/WxPayOrderQueryRequest.java | 2 +- .../pay/{ => request}/WxPayRefundRequest.java | 2 +- .../WxPaySendRedpackRequest.java | 2 +- .../WxPayUnifiedOrderRequest.java | 2 +- .../pay/{ => result}/WxEntPayQueryResult.java | 2 +- .../bean/pay/{ => result}/WxEntPayResult.java | 2 +- .../pay/{ => result}/WxPayBaseResult.java | 2 +- .../{ => result}/WxPayOrderQueryResult.java | 4 +- .../pay/{ => result}/WxPayRefundResult.java | 2 +- .../{ => result}/WxPaySendRedpackResult.java | 2 +- .../{ => result}/WxPayUnifiedOrderResult.java | 2 +- .../mp/api/impl/WxMpPayServiceImplTest.java | 13 +- .../result/WxPaySendRedpackResultTest.java} | 36 +- 19 files changed, 304 insertions(+), 324 deletions(-) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxEntPayQueryRequest.java (97%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxEntPayRequest.java (99%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxPayBaseRequest.java (97%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxPayOrderQueryRequest.java (96%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxPayRefundRequest.java (99%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxPaySendRedpackRequest.java (99%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => request}/WxPayUnifiedOrderRequest.java (99%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxEntPayQueryResult.java (98%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxEntPayResult.java (97%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxPayBaseResult.java (98%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxPayOrderQueryResult.java (98%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxPayRefundResult.java (98%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxPaySendRedpackResult.java (97%) rename weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/{ => result}/WxPayUnifiedOrderResult.java (95%) rename weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/{WxRedpackResultTest.java => pay/result/WxPaySendRedpackResultTest.java} (71%) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java index a1dabfa0..411c2abf 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java @@ -1,7 +1,11 @@ package me.chanjar.weixin.mp.api; import me.chanjar.weixin.common.exception.WxErrorException; -import me.chanjar.weixin.mp.bean.pay.*; +import me.chanjar.weixin.mp.bean.pay.request.WxEntPayRequest; +import me.chanjar.weixin.mp.bean.pay.request.WxPayRefundRequest; +import me.chanjar.weixin.mp.bean.pay.request.WxPaySendRedpackRequest; +import me.chanjar.weixin.mp.bean.pay.request.WxPayUnifiedOrderRequest; +import me.chanjar.weixin.mp.bean.pay.result.*; import java.io.File; import java.util.Map; @@ -47,13 +51,6 @@ public interface WxMpPayService { */ Map getPayInfo(WxPayUnifiedOrderRequest request) throws WxErrorException; - /** - * 读取支付结果通知 - * 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 - * - */ - WxPayJsSDKCallback getJSSDKCallbackData(String xmlData); - /** *
    * 微信支付-申请退款
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java
index 8cb737c6..3b3b7510 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java
@@ -7,7 +7,8 @@ import me.chanjar.weixin.common.util.BeanUtils;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 import me.chanjar.weixin.mp.api.WxMpPayService;
 import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.bean.pay.*;
+import me.chanjar.weixin.mp.bean.pay.request.*;
+import me.chanjar.weixin.mp.bean.pay.result.*;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -45,19 +46,6 @@ public class WxMpPayServiceImpl implements WxMpPayService {
     this.wxMpService = wxMpService;
   }
 
-  @Override
-  public WxPayJsSDKCallback getJSSDKCallbackData(String xmlData) {
-    try {
-      XStream xstream = XStreamInitializer.getInstance();
-      xstream.alias("xml", WxPayJsSDKCallback.class);
-      return (WxPayJsSDKCallback) xstream.fromXML(xmlData);
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-
-    return new WxPayJsSDKCallback();
-  }
-
   @Override
   public WxPayRefundResult refund(WxPayRefundRequest request, File keyFile)
       throws WxErrorException {
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java
index 11b8b0d5..742f5e18 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java
@@ -3,281 +3,277 @@ package me.chanjar.weixin.mp.bean.pay;
 import java.io.Serializable;
 
 /**
- * pre> 订单支付状态回调
- *
+ * 
+ * 订单支付状态回调
  * 支付结果通知(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7)
- *
  * /pre>
  *
  * @author ukid
  */
 public class WxPayJsSDKCallback implements Serializable {
-    /**
-   *
-   */
   private static final long serialVersionUID = -4143804055690843641L;
-    private String return_code;
-    private String return_msg;
-
-    private String appid;
-    private String mch_id;
-    private String device_info;
-    private String nonce_str;
-    private String sign;
-    private String result_code;
-    private String err_code;
-    private String err_code_des;
-    private String openid;
-    private String is_subscribe;
-    private String trade_type;
-    private String bank_type;
-    private String total_fee;
-    private String fee_type;
-    private String cash_fee;
-    private String cash_fee_type;
-    private String coupon_fee;
-    private String coupon_count;
-    private String coupon_batch_id_$n;
-    private String coupon_id_$n;
-    private String coupon_fee_$n;
-    private String transaction_id;
-    private String out_trade_no;
-    private String attach;
-    private String time_end;
-
-    public String getReturn_code() {
-        return this.return_code;
-    }
-
-    public String getReturn_msg() {
-        return this.return_msg;
-    }
-
-    public String getAppid() {
-        return this.appid;
-    }
-
-    public String getMch_id() {
-        return this.mch_id;
-    }
-
-    public String getDevice_info() {
-        return this.device_info;
-    }
-
-    public String getNonce_str() {
-        return this.nonce_str;
-    }
-
-    public String getSign() {
-        return this.sign;
-    }
-
-    public String getResult_code() {
-        return this.result_code;
-    }
-
-    public String getErr_code() {
-        return this.err_code;
-    }
-
-    public String getErr_code_des() {
-        return this.err_code_des;
-    }
-
-    public String getOpenid() {
-        return this.openid;
-    }
-
-    public String getIs_subscribe() {
-        return this.is_subscribe;
-    }
-
-    public String getTrade_type() {
-        return this.trade_type;
-    }
-
-    public String getBank_type() {
-        return this.bank_type;
-    }
-
-    public String getTotal_fee() {
-        return this.total_fee;
-    }
-
-    public String getFee_type() {
-        return this.fee_type;
-    }
-
-    public String getCash_fee() {
-        return this.cash_fee;
-    }
-
-    public String getCash_fee_type() {
-        return this.cash_fee_type;
-    }
-
-    public String getCoupon_fee() {
-        return this.coupon_fee;
-    }
-
-    public String getCoupon_count() {
-        return this.coupon_count;
-    }
-
-    public String getCoupon_batch_id_$n() {
-        return this.coupon_batch_id_$n;
-    }
-
-    public String getCoupon_id_$n() {
-        return this.coupon_id_$n;
-    }
-
-    public String getCoupon_fee_$n() {
-        return this.coupon_fee_$n;
-    }
-
-    public String getTransaction_id() {
-        return this.transaction_id;
-    }
+  private String return_code;
+  private String return_msg;
+
+  private String appid;
+  private String mch_id;
+  private String device_info;
+  private String nonce_str;
+  private String sign;
+  private String result_code;
+  private String err_code;
+  private String err_code_des;
+  private String openid;
+  private String is_subscribe;
+  private String trade_type;
+  private String bank_type;
+  private String total_fee;
+  private String fee_type;
+  private String cash_fee;
+  private String cash_fee_type;
+  private String coupon_fee;
+  private String coupon_count;
+  private String coupon_batch_id_$n;
+  private String coupon_id_$n;
+  private String coupon_fee_$n;
+  private String transaction_id;
+  private String out_trade_no;
+  private String attach;
+  private String time_end;
+
+  public String getReturn_code() {
+    return this.return_code;
+  }
+
+  public void setReturn_code(String return_code) {
+    this.return_code = return_code;
+  }
+
+  public String getReturn_msg() {
+    return this.return_msg;
+  }
+
+  public void setReturn_msg(String return_msg) {
+    this.return_msg = return_msg;
+  }
+
+  public String getAppid() {
+    return this.appid;
+  }
+
+  public void setAppid(String appid) {
+    this.appid = appid;
+  }
+
+  public String getMch_id() {
+    return this.mch_id;
+  }
+
+  public void setMch_id(String mch_id) {
+    this.mch_id = mch_id;
+  }
+
+  public String getDevice_info() {
+    return this.device_info;
+  }
+
+  public void setDevice_info(String device_info) {
+    this.device_info = device_info;
+  }
+
+  public String getNonce_str() {
+    return this.nonce_str;
+  }
+
+  public void setNonce_str(String nonce_str) {
+    this.nonce_str = nonce_str;
+  }
+
+  public String getSign() {
+    return this.sign;
+  }
+
+  public void setSign(String sign) {
+    this.sign = sign;
+  }
+
+  public String getResult_code() {
+    return this.result_code;
+  }
+
+  public void setResult_code(String result_code) {
+    this.result_code = result_code;
+  }
+
+  public String getErr_code() {
+    return this.err_code;
+  }
+
+  public void setErr_code(String err_code) {
+    this.err_code = err_code;
+  }
+
+  public String getErr_code_des() {
+    return this.err_code_des;
+  }
+
+  public void setErr_code_des(String err_code_des) {
+    this.err_code_des = err_code_des;
+  }
+
+  public String getOpenid() {
+    return this.openid;
+  }
+
+  public void setOpenid(String openid) {
+    this.openid = openid;
+  }
+
+  public String getIs_subscribe() {
+    return this.is_subscribe;
+  }
+
+  public void setIs_subscribe(String is_subscribe) {
+    this.is_subscribe = is_subscribe;
+  }
 
-    public String getOut_trade_no() {
-        return this.out_trade_no;
-    }
+  public String getTrade_type() {
+    return this.trade_type;
+  }
 
-    public String getAttach() {
-        return this.attach;
-    }
+  public void setTrade_type(String trade_type) {
+    this.trade_type = trade_type;
+  }
 
-    public String getTime_end() {
-        return this.time_end;
-    }
+  public String getBank_type() {
+    return this.bank_type;
+  }
 
-    public void setReturn_code(String return_code) {
-        this.return_code = return_code;
-    }
+  public void setBank_type(String bank_type) {
+    this.bank_type = bank_type;
+  }
 
-    public void setReturn_msg(String return_msg) {
-        this.return_msg = return_msg;
-    }
+  public String getTotal_fee() {
+    return this.total_fee;
+  }
 
-    public void setAppid(String appid) {
-        this.appid = appid;
-    }
+  public void setTotal_fee(String total_fee) {
+    this.total_fee = total_fee;
+  }
 
-    public void setMch_id(String mch_id) {
-        this.mch_id = mch_id;
-    }
-
-    public void setDevice_info(String device_info) {
-        this.device_info = device_info;
-    }
-
-    public void setNonce_str(String nonce_str) {
-        this.nonce_str = nonce_str;
-    }
-
-    public void setSign(String sign) {
-        this.sign = sign;
-    }
-
-    public void setResult_code(String result_code) {
-        this.result_code = result_code;
-    }
-
-    public void setErr_code(String err_code) {
-        this.err_code = err_code;
-    }
-
-    public void setErr_code_des(String err_code_des) {
-        this.err_code_des = err_code_des;
-    }
-
-    public void setOpenid(String openid) {
-        this.openid = openid;
-    }
-
-    public void setIs_subscribe(String is_subscribe) {
-        this.is_subscribe = is_subscribe;
-    }
-
-    public void setTrade_type(String trade_type) {
-        this.trade_type = trade_type;
-    }
-
-    public void setBank_type(String bank_type) {
-        this.bank_type = bank_type;
-    }
-
-    public void setTotal_fee(String total_fee) {
-        this.total_fee = total_fee;
-    }
-
-    public void setFee_type(String fee_type) {
-        this.fee_type = fee_type;
-    }
-
-    public void setCash_fee(String cash_fee) {
-        this.cash_fee = cash_fee;
-    }
-
-    public void setCash_fee_type(String cash_fee_type) {
-        this.cash_fee_type = cash_fee_type;
-    }
-
-    public void setCoupon_fee(String coupon_fee) {
-        this.coupon_fee = coupon_fee;
-    }
-
-    public void setCoupon_count(String coupon_count) {
-        this.coupon_count = coupon_count;
-    }
-
-    public void setCoupon_batch_id_$n(String coupon_batch_id_$n) {
-        this.coupon_batch_id_$n = coupon_batch_id_$n;
-    }
-
-    public void setCoupon_id_$n(String coupon_id_$n) {
-        this.coupon_id_$n = coupon_id_$n;
-    }
-
-    public void setCoupon_fee_$n(String coupon_fee_$n) {
-        this.coupon_fee_$n = coupon_fee_$n;
-    }
-
-    public void setTransaction_id(String transaction_id) {
-        this.transaction_id = transaction_id;
-    }
-
-    public void setOut_trade_no(String out_trade_no) {
-        this.out_trade_no = out_trade_no;
-    }
-
-    public void setAttach(String attach) {
-        this.attach = attach;
-    }
-
-    public void setTime_end(String time_end) {
-        this.time_end = time_end;
-    }
-
-    @Override
-    public String toString() {
-        return "WxPayJsSDKCallback [return_code=" + this.return_code + ", return_msg="
-                + this.return_msg + ", appid=" + this.appid + ", mch_id=" + this.mch_id
-                + ", device_info=" + this.device_info + ", nonce_str=" + this.nonce_str
-                + ", sign=" + this.sign + ", result_code=" + this.result_code
-                + ", err_code=" + this.err_code + ", err_code_des=" + this.err_code_des
-                + ", openid=" + this.openid + ", is_subscribe=" + this.is_subscribe
-                + ", trade_type=" + this.trade_type + ", bank_type=" + this.bank_type
-                + ", total_fee=" + this.total_fee + ", fee_type=" + this.fee_type
-                + ", cash_fee=" + this.cash_fee + ", cash_fee_type=" + this.cash_fee_type
-                + ", coupon_fee=" + this.coupon_fee + ", coupon_count="
-                + this.coupon_count + ", coupon_batch_id_$n=" + this.coupon_batch_id_$n
-                + ", coupon_id_$n=" + this.coupon_id_$n + ", coupon_fee_$n="
-                + this.coupon_fee_$n + ", transaction_id=" + this.transaction_id
-                + ", out_trade_no=" + this.out_trade_no + ", attach=" + this.attach
-                + ", time_end=" + this.time_end + "]";
-    }
+  public String getFee_type() {
+    return this.fee_type;
+  }
+
+  public void setFee_type(String fee_type) {
+    this.fee_type = fee_type;
+  }
+
+  public String getCash_fee() {
+    return this.cash_fee;
+  }
+
+  public void setCash_fee(String cash_fee) {
+    this.cash_fee = cash_fee;
+  }
+
+  public String getCash_fee_type() {
+    return this.cash_fee_type;
+  }
+
+  public void setCash_fee_type(String cash_fee_type) {
+    this.cash_fee_type = cash_fee_type;
+  }
+
+  public String getCoupon_fee() {
+    return this.coupon_fee;
+  }
+
+  public void setCoupon_fee(String coupon_fee) {
+    this.coupon_fee = coupon_fee;
+  }
+
+  public String getCoupon_count() {
+    return this.coupon_count;
+  }
+
+  public void setCoupon_count(String coupon_count) {
+    this.coupon_count = coupon_count;
+  }
+
+  public String getCoupon_batch_id_$n() {
+    return this.coupon_batch_id_$n;
+  }
+
+  public void setCoupon_batch_id_$n(String coupon_batch_id_$n) {
+    this.coupon_batch_id_$n = coupon_batch_id_$n;
+  }
+
+  public String getCoupon_id_$n() {
+    return this.coupon_id_$n;
+  }
+
+  public void setCoupon_id_$n(String coupon_id_$n) {
+    this.coupon_id_$n = coupon_id_$n;
+  }
+
+  public String getCoupon_fee_$n() {
+    return this.coupon_fee_$n;
+  }
+
+  public void setCoupon_fee_$n(String coupon_fee_$n) {
+    this.coupon_fee_$n = coupon_fee_$n;
+  }
+
+  public String getTransaction_id() {
+    return this.transaction_id;
+  }
+
+  public void setTransaction_id(String transaction_id) {
+    this.transaction_id = transaction_id;
+  }
+
+  public String getOut_trade_no() {
+    return this.out_trade_no;
+  }
+
+  public void setOut_trade_no(String out_trade_no) {
+    this.out_trade_no = out_trade_no;
+  }
+
+  public String getAttach() {
+    return this.attach;
+  }
+
+  public void setAttach(String attach) {
+    this.attach = attach;
+  }
+
+  public String getTime_end() {
+    return this.time_end;
+  }
+
+  public void setTime_end(String time_end) {
+    this.time_end = time_end;
+  }
+
+  @Override
+  public String toString() {
+    return "WxPayJsSDKCallback [return_code=" + this.return_code + ", return_msg="
+      + this.return_msg + ", appid=" + this.appid + ", mch_id=" + this.mch_id
+      + ", device_info=" + this.device_info + ", nonce_str=" + this.nonce_str
+      + ", sign=" + this.sign + ", result_code=" + this.result_code
+      + ", err_code=" + this.err_code + ", err_code_des=" + this.err_code_des
+      + ", openid=" + this.openid + ", is_subscribe=" + this.is_subscribe
+      + ", trade_type=" + this.trade_type + ", bank_type=" + this.bank_type
+      + ", total_fee=" + this.total_fee + ", fee_type=" + this.fee_type
+      + ", cash_fee=" + this.cash_fee + ", cash_fee_type=" + this.cash_fee_type
+      + ", coupon_fee=" + this.coupon_fee + ", coupon_count="
+      + this.coupon_count + ", coupon_batch_id_$n=" + this.coupon_batch_id_$n
+      + ", coupon_id_$n=" + this.coupon_id_$n + ", coupon_fee_$n="
+      + this.coupon_fee_$n + ", transaction_id=" + this.transaction_id
+      + ", out_trade_no=" + this.out_trade_no + ", attach=" + this.attach
+      + ", time_end=" + this.time_end + "]";
+  }
 
 }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayQueryRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxEntPayQueryRequest.java
similarity index 97%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayQueryRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxEntPayQueryRequest.java
index 512ac159..47612ad3 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayQueryRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxEntPayQueryRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import me.chanjar.weixin.common.annotation.Required;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxEntPayRequest.java
similarity index 99%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxEntPayRequest.java
index 07549ab3..6f019c1e 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxEntPayRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java
similarity index 97%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java
index 062152d8..a66f9379 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayOrderQueryRequest.java
similarity index 96%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayOrderQueryRequest.java
index ede1b06a..153831d3 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayOrderQueryRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayRefundRequest.java
similarity index 99%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayRefundRequest.java
index bc2802b7..f816fd0c 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayRefundRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import me.chanjar.weixin.common.annotation.Required;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPaySendRedpackRequest.java
similarity index 99%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPaySendRedpackRequest.java
index 27a46a71..cad2cc52 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPaySendRedpackRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayUnifiedOrderRequest.java
similarity index 99%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayUnifiedOrderRequest.java
index de3518ae..1a6f3f80 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayUnifiedOrderRequest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.request;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import me.chanjar.weixin.common.annotation.Required;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayQueryResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxEntPayQueryResult.java
similarity index 98%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayQueryResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxEntPayQueryResult.java
index 382a8858..5682a393 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayQueryResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxEntPayQueryResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxEntPayResult.java
similarity index 97%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxEntPayResult.java
index 07bac47b..61679b6a 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxEntPayResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxEntPayResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java
similarity index 98%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java
index cdec8273..18b33748 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import org.apache.commons.lang3.builder.ToStringBuilder;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayOrderQueryResult.java
similarity index 98%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayOrderQueryResult.java
index 25dc6cc8..679c70c9 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayOrderQueryResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.google.common.collect.Lists;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
@@ -436,7 +436,7 @@ public class WxPayOrderQueryResult extends WxPayBaseResult {
   }
 
   public void composeCoupons(String xmlString){
-    if(this.couponCount > 0 ){
+    if(this.couponCount != null && this.couponCount > 0 ){
       this.coupons = Lists.newArrayList();
       //TODO 暂时待实现
     }
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayRefundResult.java
similarity index 98%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayRefundResult.java
index ad20b8f1..5be68d94 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayRefundResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPaySendRedpackResult.java
similarity index 97%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPaySendRedpackResult.java
index 4a5ab146..d53fb693 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPaySendRedpackResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayUnifiedOrderResult.java
similarity index 95%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayUnifiedOrderResult.java
index 012da5a4..70c13519 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayUnifiedOrderResult.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.pay;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImplTest.java
index 51414e1b..0f946dc3 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImplTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImplTest.java
@@ -4,7 +4,13 @@ import com.google.inject.Inject;
 import me.chanjar.weixin.common.exception.WxErrorException;
 import me.chanjar.weixin.mp.api.ApiTestModule;
 import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
-import me.chanjar.weixin.mp.bean.pay.*;
+import me.chanjar.weixin.mp.bean.pay.request.WxEntPayRequest;
+import me.chanjar.weixin.mp.bean.pay.request.WxPayRefundRequest;
+import me.chanjar.weixin.mp.bean.pay.request.WxPaySendRedpackRequest;
+import me.chanjar.weixin.mp.bean.pay.request.WxPayUnifiedOrderRequest;
+import me.chanjar.weixin.mp.bean.pay.result.WxPayRefundResult;
+import me.chanjar.weixin.mp.bean.pay.result.WxPaySendRedpackResult;
+import me.chanjar.weixin.mp.bean.pay.result.WxPayUnifiedOrderResult;
 import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
@@ -27,11 +33,6 @@ public class WxMpPayServiceImplTest {
 
   }
 
-  @Test
-  public void testGetJSSDKCallbackData() throws Exception {
-
-  }
-
   @Test
   public void testRefund() throws Exception {
     WxPayRefundRequest request = new WxPayRefundRequest();
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxRedpackResultTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPaySendRedpackResultTest.java
similarity index 71%
rename from weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxRedpackResultTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPaySendRedpackResultTest.java
index 557065ca..a07ec972 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxRedpackResultTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/pay/result/WxPaySendRedpackResultTest.java
@@ -1,26 +1,23 @@
-package me.chanjar.weixin.mp.bean;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Before;
-import org.junit.Test;
+package me.chanjar.weixin.mp.bean.pay.result;
 
 import com.thoughtworks.xstream.XStream;
-
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.mp.bean.pay.WxPaySendRedpackResult;
+import org.testng.Assert;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
 
-public class WxRedpackResultTest {
+public class WxPaySendRedpackResultTest {
 
   private XStream xstream;
 
-  @Before
+  @BeforeTest
   public void setup() {
      this.xstream = XStreamInitializer.getInstance();
      this.xstream.processAnnotations(WxPaySendRedpackResult.class);
   }
 
-  @Test public void loadSuccessResult() {
+  @Test
+  public void loadSuccessResult() {
     final String successSample = "\n" +
         "\n" +
         "\n" +
@@ -36,12 +33,13 @@ public class WxRedpackResultTest {
         "20150520102602\n" +
         "";
     WxPaySendRedpackResult wxMpRedpackResult = (WxPaySendRedpackResult) this.xstream.fromXML(successSample);
-    assertEquals("SUCCESS", wxMpRedpackResult.getReturnCode());
-    assertEquals("SUCCESS", wxMpRedpackResult.getResultCode());
-    assertEquals("20150520102602", wxMpRedpackResult.getSendTime());
+    Assert.assertEquals("SUCCESS", wxMpRedpackResult.getReturnCode());
+    Assert.assertEquals("SUCCESS", wxMpRedpackResult.getResultCode());
+    Assert.assertEquals("20150520102602", wxMpRedpackResult.getSendTime());
   }
 
-  @Test public void loadFailureResult() {
+  @Test
+  public void loadFailureResult() {
     final String failureSample = "\n" +
         "\n" +
         "\n" +
@@ -55,9 +53,9 @@ public class WxRedpackResultTest {
         "1\n" +
         "";
     WxPaySendRedpackResult wxMpRedpackResult = (WxPaySendRedpackResult) this.xstream.fromXML(failureSample);
-    assertEquals("FAIL", wxMpRedpackResult.getReturnCode());
-    assertEquals("FAIL", wxMpRedpackResult.getResultCode());
-    assertEquals("onqOjjmM1tad-3ROpncN-yUfa6uI", wxMpRedpackResult.getReOpenid());
-    assertEquals(1, wxMpRedpackResult.getTotalAmount());
+    Assert.assertEquals("FAIL", wxMpRedpackResult.getReturnCode());
+    Assert.assertEquals("FAIL", wxMpRedpackResult.getResultCode());
+    Assert.assertEquals("onqOjjmM1tad-3ROpncN-yUfa6uI", wxMpRedpackResult.getReOpenid());
+    Assert.assertEquals(1, wxMpRedpackResult.getTotalAmount());
   }
 }