Browse Source

pay模块批量添加缺失的javadoc文档

master
Binary Wang 6 years ago
parent
commit
fbca4cdc59
40 changed files with 631 additions and 54 deletions
  1. +2
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/WxPayApiData.java
  2. +0
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponSendRequest.java
  3. +0
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponStockQueryRequest.java
  4. +0
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRequest.java
  5. +12
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayNotifyResponse.java
  6. +7
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyCoupon.java
  7. +6
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResult.java
  8. +8
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResult.java
  9. +13
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java
  10. +21
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java
  11. +2
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillResult.java
  12. +0
    -1
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayCommonResult.java
  13. +5
    -5
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowResult.java
  14. +3
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayOrderQueryResult.java
  15. +3
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayRedpackQueryResult.java
  16. +10
    -3
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayRefundQueryResult.java
  17. +3
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java
  18. +9
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/constant/WxPayConstants.java
  19. +17
    -8
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/converter/WxPayOrderNotifyResultConverter.java
  20. +68
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/exception/WxPayException.java
  21. +11
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java
  22. +105
    -21
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java
  23. +9
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java
  24. +12
    -0
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java
  25. +11
    -3
      weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java
  26. +5
    -2
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResultTest.java
  27. +10
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResultTest.java
  28. +6
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/notify/WxScanPayNotifyResultTest.java
  29. +22
    -3
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResultTest.java
  30. +5
    -1
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayOrderQueryResultTest.java
  31. +3
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayRedpackQueryResultTest.java
  32. +7
    -1
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayRefundQueryResultTest.java
  33. +3
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayRefundResultTest.java
  34. +15
    -2
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPaySendRedpackResultTest.java
  35. +5
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/config/WxPayConfigTest.java
  36. +157
    -1
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImplTest.java
  37. +25
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java
  38. +3
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/testbase/ApiTestModule.java
  39. +13
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/testbase/XmlWxPayConfig.java
  40. +15
    -0
      weixin-java-pay/src/test/java/com/github/binarywang/wxpay/util/SignUtilsTest.java

+ 2
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/WxPayApiData.java View File

@@ -35,6 +35,8 @@ public class WxPayApiData {
private String exceptionMsg; private String exceptionMsg;


/** /**
* Instantiates a new Wx pay api data.
*
* @param url 接口请求地址 * @param url 接口请求地址
* @param requestData 请求数据 * @param requestData 请求数据
* @param responseData 响应数据 * @param responseData 响应数据


+ 0
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponSendRequest.java View File

@@ -13,7 +13,6 @@ import me.chanjar.weixin.common.annotation.Required;
* *
* @author <a href="https://github.com/binarywang">Binary Wang</a> * @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */

@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Builder(builderMethodName = "newBuilder") @Builder(builderMethodName = "newBuilder")


+ 0
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponStockQueryRequest.java View File

@@ -13,7 +13,6 @@ import me.chanjar.weixin.common.annotation.Required;
* *
* @author <a href="https://github.com/binarywang">Binary Wang</a> * @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */

@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Builder(builderMethodName = "newBuilder") @Builder(builderMethodName = "newBuilder")


+ 0
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRequest.java View File

@@ -20,7 +20,6 @@ import me.chanjar.weixin.common.annotation.Required;
* *
* @author <a href="https://github.com/binarywang">Binary Wang</a> * @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */

@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Builder(builderMethodName = "newBuilder") @Builder(builderMethodName = "newBuilder")


+ 12
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayNotifyResponse.java View File

@@ -32,6 +32,12 @@ public class WxPayNotifyResponse {
@XStreamAlias("return_msg") @XStreamAlias("return_msg")
private String returnMsg; private String returnMsg;


/**
* Fail string.
*
* @param msg the msg
* @return the string
*/
public static String fail(String msg) { public static String fail(String msg) {
WxPayNotifyResponse response = new WxPayNotifyResponse(FAIL, msg); WxPayNotifyResponse response = new WxPayNotifyResponse(FAIL, msg);
XStream xstream = XStreamInitializer.getInstance(); XStream xstream = XStreamInitializer.getInstance();
@@ -39,6 +45,12 @@ public class WxPayNotifyResponse {
return xstream.toXML(response); return xstream.toXML(response);
} }


/**
* Success string.
*
* @param msg the msg
* @return the string
*/
public static String success(String msg) { public static String success(String msg) {
WxPayNotifyResponse response = new WxPayNotifyResponse(SUCCESS, msg); WxPayNotifyResponse response = new WxPayNotifyResponse(SUCCESS, msg);
XStream xstream = XStreamInitializer.getInstance(); XStream xstream = XStreamInitializer.getInstance();


+ 7
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyCoupon.java View File

@@ -12,6 +12,7 @@ import lombok.NoArgsConstructor;


/** /**
* 支付异步通知代金券详细. * 支付异步通知代金券详细.
*
* @author aimilin * @author aimilin
*/ */
@Data @Data
@@ -23,6 +24,12 @@ public class WxPayOrderNotifyCoupon implements Serializable {
private String couponType; private String couponType;
private Integer couponFee; private Integer couponFee;


/**
* To map map.
*
* @param index the index
* @return the map
*/
public Map<String, String> toMap(int index) { public Map<String, String> toMap(int index) {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
map.put("coupon_id_" + index, this.getCouponId()); map.put("coupon_id_" + index, this.getCouponId());


+ 6
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResult.java View File

@@ -285,6 +285,12 @@ public class WxPayOrderNotifyResult extends BaseWxPayResult {
@XStreamAlias("version") @XStreamAlias("version")
private String version; private String version;


/**
* From xml wx pay order notify result.
*
* @param xmlString the xml string
* @return the wx pay order notify result
*/
public static WxPayOrderNotifyResult fromXML(String xmlString) { public static WxPayOrderNotifyResult fromXML(String xmlString) {
XStream xstream = XStreamInitializer.getInstance(); XStream xstream = XStreamInitializer.getInstance();
xstream.processAnnotations(WxPayOrderNotifyResult.class); xstream.processAnnotations(WxPayOrderNotifyResult.class);


+ 8
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResult.java View File

@@ -40,6 +40,8 @@ public class WxPayRefundNotifyResult extends BaseWxPayResult implements Serializ
* *
* @param xmlString xml字符串 * @param xmlString xml字符串
* @param mchKey 商户密钥 * @param mchKey 商户密钥
* @return the wx pay refund notify result
* @throws WxPayException the wx pay exception
*/ */
public static WxPayRefundNotifyResult fromXML(String xmlString, String mchKey) throws WxPayException { public static WxPayRefundNotifyResult fromXML(String xmlString, String mchKey) throws WxPayException {
WxPayRefundNotifyResult result = BaseWxPayResult.fromXML(xmlString, WxPayRefundNotifyResult.class); WxPayRefundNotifyResult result = BaseWxPayResult.fromXML(xmlString, WxPayRefundNotifyResult.class);
@@ -252,6 +254,12 @@ public class WxPayRefundNotifyResult extends BaseWxPayResult implements Serializ
@XStreamAlias("refund_request_source") @XStreamAlias("refund_request_source")
private String refundRequestSource; private String refundRequestSource;


/**
* From xml req info.
*
* @param xmlString the xml string
* @return the req info
*/
public static ReqInfo fromXML(String xmlString) { public static ReqInfo fromXML(String xmlString) {
XStream xstream = XStreamInitializer.getInstance(); XStream xstream = XStreamInitializer.getInstance();
xstream.processAnnotations(ReqInfo.class); xstream.processAnnotations(ReqInfo.class);


+ 13
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/BaseWxPayRequest.java View File

@@ -121,6 +121,7 @@ public abstract class BaseWxPayRequest implements Serializable {
* 将单位为元转换为单位为分. * 将单位为元转换为单位为分.
* *
* @param yuan 将要转换的元的数值字符串 * @param yuan 将要转换的元的数值字符串
* @return the integer
*/ */
public static Integer yuanToFen(String yuan) { public static Integer yuanToFen(String yuan) {
return new BigDecimal(yuan).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue(); return new BigDecimal(yuan).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue();
@@ -143,6 +144,8 @@ public abstract class BaseWxPayRequest implements Serializable {


/** /**
* 检查约束情况. * 检查约束情况.
*
* @throws WxPayException the wx pay exception
*/ */
protected abstract void checkConstraints() throws WxPayException; protected abstract void checkConstraints() throws WxPayException;


@@ -178,6 +181,11 @@ public abstract class BaseWxPayRequest implements Serializable {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
} }


/**
* To xml string.
*
* @return the string
*/
public String toXML() { public String toXML() {
XStream xstream = XStreamInitializer.getInstance(); XStream xstream = XStreamInitializer.getInstance();
//涉及到服务商模式的两个参数,在为空值时置为null,以免在请求时将空值传给微信服务器 //涉及到服务商模式的两个参数,在为空值时置为null,以免在请求时将空值传给微信服务器
@@ -189,6 +197,8 @@ public abstract class BaseWxPayRequest implements Serializable {


/** /**
* 签名时,是否忽略appid. * 签名时,是否忽略appid.
*
* @return the boolean
*/ */
protected boolean ignoreAppid() { protected boolean ignoreAppid() {
return false; return false;
@@ -196,6 +206,8 @@ public abstract class BaseWxPayRequest implements Serializable {


/** /**
* 签名时,忽略的参数. * 签名时,忽略的参数.
*
* @return the string [ ]
*/ */
protected String[] getIgnoredParamsForSign() { protected String[] getIgnoredParamsForSign() {
return new String[0]; return new String[0];
@@ -210,6 +222,7 @@ public abstract class BaseWxPayRequest implements Serializable {
* </pre> * </pre>
* *
* @param config 支付配置对象,用于读取相应系统配置信息 * @param config 支付配置对象,用于读取相应系统配置信息
* @throws WxPayException the wx pay exception
*/ */
public void checkAndSign(WxPayConfig config) throws WxPayException { public void checkAndSign(WxPayConfig config) throws WxPayException {
this.checkFields(); this.checkFields();


+ 21
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResult.java View File

@@ -116,6 +116,7 @@ public abstract class BaseWxPayResult implements Serializable {
* 将单位分转换成单位圆. * 将单位分转换成单位圆.
* *
* @param fen 将要被转换为元的分的数值 * @param fen 将要被转换为元的分的数值
* @return the string
*/ */
public static String fenToYuan(Integer fen) { public static String fenToYuan(Integer fen) {
return BigDecimal.valueOf(Double.valueOf(fen) / 100).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString(); return BigDecimal.valueOf(Double.valueOf(fen) / 100).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString();
@@ -123,6 +124,11 @@ public abstract class BaseWxPayResult implements Serializable {


/** /**
* 从xml字符串创建bean对象. * 从xml字符串创建bean对象.
*
* @param <T> the type parameter
* @param xmlString the xml string
* @param clz the clz
* @return the t
*/ */
public static <T extends BaseWxPayResult> T fromXML(String xmlString, Class<T> clz) { public static <T extends BaseWxPayResult> T fromXML(String xmlString, Class<T> clz) {
XStream xstream = XStreamInitializer.getInstance(); XStream xstream = XStreamInitializer.getInstance();
@@ -132,6 +138,11 @@ public abstract class BaseWxPayResult implements Serializable {
return result; return result;
} }


/**
* Gets logger.
*
* @return the logger
*/
protected Logger getLogger() { protected Logger getLogger() {
return LoggerFactory.getLogger(this.getClass()); return LoggerFactory.getLogger(this.getClass());
} }
@@ -143,6 +154,8 @@ public abstract class BaseWxPayResult implements Serializable {


/** /**
* 将bean通过保存的xml字符串转换成map. * 将bean通过保存的xml字符串转换成map.
*
* @return the map
*/ */
public Map<String, String> toMap() { public Map<String, String> toMap() {
if (StringUtils.isBlank(this.xmlString)) { if (StringUtils.isBlank(this.xmlString)) {
@@ -189,6 +202,9 @@ public abstract class BaseWxPayResult implements Serializable {


/** /**
* 获取xml中元素的值. * 获取xml中元素的值.
*
* @param path the path
* @return the xml value
*/ */
String getXmlValue(String... path) { String getXmlValue(String... path) {
Document doc = this.getXmlDoc(); Document doc = this.getXmlDoc();
@@ -206,6 +222,9 @@ public abstract class BaseWxPayResult implements Serializable {


/** /**
* 获取xml中元素的值,作为int值返回. * 获取xml中元素的值,作为int值返回.
*
* @param path the path
* @return the xml value as int
*/ */
Integer getXmlValueAsInt(String... path) { Integer getXmlValueAsInt(String... path) {
String result = this.getXmlValue(path); String result = this.getXmlValue(path);
@@ -219,8 +238,10 @@ public abstract class BaseWxPayResult implements Serializable {
/** /**
* 校验返回结果签名. * 校验返回结果签名.
* *
* @param wxPayService the wx pay service
* @param signType 签名类型 * @param signType 签名类型
* @param checkSuccess 是否同时检查结果是否成功 * @param checkSuccess 是否同时检查结果是否成功
* @throws WxPayException the wx pay exception
*/ */
public void checkResult(WxPayService wxPayService, String signType, boolean checkSuccess) throws WxPayException { public void checkResult(WxPayService wxPayService, String signType, boolean checkSuccess) throws WxPayException {
//校验返回结果签名 //校验返回结果签名


+ 2
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayBillResult.java View File

@@ -10,6 +10,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;


/** /**
* The type Wx pay bill result.
*
* @author BinaryWang * @author BinaryWang
*/ */
@Data @Data


+ 0
- 1
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayCommonResult.java View File

@@ -10,7 +10,6 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
* *
* @author <a href="https://github.com/binarywang">Binary Wang</a> * @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */

@XStreamAlias("xml") @XStreamAlias("xml")
public class WxPayCommonResult extends BaseWxPayResult { public class WxPayCommonResult extends BaseWxPayResult {
} }

+ 5
- 5
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayFundFlowResult.java View File

@@ -1,12 +1,13 @@
package com.github.binarywang.wxpay.bean.result; package com.github.binarywang.wxpay.bean.result;


import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;


import java.io.Serializable;
import java.util.List;
import lombok.Data;
import lombok.NoArgsConstructor;


/** /**
* <pre> * <pre>
@@ -15,7 +16,6 @@ import java.util.List;
* </pre> * </pre>
* *
* @author cwivan * @author cwivan
* @date 2018-08-02
*/ */
@Data @Data
@NoArgsConstructor @NoArgsConstructor


+ 3
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayOrderQueryResult.java View File

@@ -267,6 +267,9 @@ public class WxPayOrderQueryResult extends BaseWxPayResult {
} }
} }


/**
* The type Coupon.
*/
@Data @Data
@Builder(builderMethodName = "newBuilder") @Builder(builderMethodName = "newBuilder")
@AllArgsConstructor @AllArgsConstructor


+ 3
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayRedpackQueryResult.java View File

@@ -223,6 +223,9 @@ public class WxPayRedpackQueryResult extends BaseWxPayResult {
@XStreamAlias("hblist") @XStreamAlias("hblist")
private List<RedpackInfo> redpackList; private List<RedpackInfo> redpackList;


/**
* The type Redpack info.
*/
@Data @Data
@XStreamAlias("hbinfo") @XStreamAlias("hbinfo")
public static class RedpackInfo implements Serializable { public static class RedpackInfo implements Serializable {


+ 10
- 3
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayRefundQueryResult.java View File

@@ -1,10 +1,14 @@
package com.github.binarywang.wxpay.bean.result; package com.github.binarywang.wxpay.bean.result;


import java.util.List;

import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.*;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;


/** /**
* <pre> * <pre>
@@ -168,6 +172,9 @@ public class WxPayRefundQueryResult extends BaseWxPayResult {
} }
} }


/**
* The type Refund record.
*/
@Data @Data
@Builder(builderMethodName = "newBuilder") @Builder(builderMethodName = "newBuilder")
@NoArgsConstructor @NoArgsConstructor


+ 3
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java View File

@@ -95,6 +95,9 @@ public class WxPayConfig {


/** /**
* 初始化ssl. * 初始化ssl.
*
* @return the ssl context
* @throws WxPayException the wx pay exception
*/ */
public SSLContext initSSLContext() throws WxPayException { public SSLContext initSSLContext() throws WxPayException {
if (StringUtils.isBlank(this.getMchId())) { if (StringUtils.isBlank(this.getMchId())) {


+ 9
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/constant/WxPayConstants.java View File

@@ -127,8 +127,17 @@ public class WxPayConstants {
* 签名类型. * 签名类型.
*/ */
public static class SignType { public static class SignType {
/**
* The constant HMAC_SHA256.
*/
public static final String HMAC_SHA256 = "HMAC-SHA256"; public static final String HMAC_SHA256 = "HMAC-SHA256";
/**
* The constant MD5.
*/
public static final String MD5 = "MD5"; public static final String MD5 = "MD5";
/**
* The constant ALL_SIGN_TYPES.
*/
public static final List<String> ALL_SIGN_TYPES = Lists.newArrayList(HMAC_SHA256, MD5); public static final List<String> ALL_SIGN_TYPES = Lists.newArrayList(HMAC_SHA256, MD5);
} }




+ 17
- 8
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/converter/WxPayOrderNotifyResultConverter.java View File

@@ -1,5 +1,14 @@
package com.github.binarywang.wxpay.converter; package com.github.binarywang.wxpay.converter;


import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyCoupon; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyCoupon;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.google.common.base.Function; import com.google.common.base.Function;
@@ -13,20 +22,20 @@ import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.mapper.Mapper;
import org.apache.commons.lang3.StringUtils;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;


/** /**
* The type Wxpay order notify result converter.
*
* @author aimilin * @author aimilin
*/ */
public class WxPayOrderNotifyResultConverter extends AbstractReflectionConverter { public class WxPayOrderNotifyResultConverter extends AbstractReflectionConverter {


/**
* Instantiates a new Wx pay order notify result converter.
*
* @param mapper the mapper
* @param reflectionProvider the reflection provider
*/
public WxPayOrderNotifyResultConverter(Mapper mapper, ReflectionProvider reflectionProvider) { public WxPayOrderNotifyResultConverter(Mapper mapper, ReflectionProvider reflectionProvider) {
super(mapper, reflectionProvider); super(mapper, reflectionProvider);
} }


+ 68
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/exception/WxPayException.java View File

@@ -51,11 +51,22 @@ public class WxPayException extends Exception {
*/ */
private String xmlString; private String xmlString;


/**
* Instantiates a new Wx pay exception.
*
* @param customErrorMsg the custom error msg
*/
public WxPayException(String customErrorMsg) { public WxPayException(String customErrorMsg) {
super(customErrorMsg); super(customErrorMsg);
this.customErrorMsg = customErrorMsg; this.customErrorMsg = customErrorMsg;
} }


/**
* Instantiates a new Wx pay exception.
*
* @param customErrorMsg the custom error msg
* @param tr the tr
*/
public WxPayException(String customErrorMsg, Throwable tr) { public WxPayException(String customErrorMsg, Throwable tr) {
super(customErrorMsg, tr); super(customErrorMsg, tr);
this.customErrorMsg = customErrorMsg; this.customErrorMsg = customErrorMsg;
@@ -73,6 +84,9 @@ public class WxPayException extends Exception {


/** /**
* 通过BaseWxPayResult生成异常对象. * 通过BaseWxPayResult生成异常对象.
*
* @param payBaseResult the pay base result
* @return the wx pay exception
*/ */
public static WxPayException from(BaseWxPayResult payBaseResult) { public static WxPayException from(BaseWxPayResult payBaseResult) {
return WxPayException.newBuilder() return WxPayException.newBuilder()
@@ -85,10 +99,18 @@ public class WxPayException extends Exception {
.build(); .build();
} }


/**
* New builder builder.
*
* @return the builder
*/
public static Builder newBuilder() { public static Builder newBuilder() {
return new Builder(); return new Builder();
} }


/**
* The type Builder.
*/
public static final class Builder { public static final class Builder {
private String returnCode; private String returnCode;
private String returnMsg; private String returnMsg;
@@ -100,40 +122,86 @@ public class WxPayException extends Exception {
private Builder() { private Builder() {
} }


/**
* Return code builder.
*
* @param returnCode the return code
* @return the builder
*/
public Builder returnCode(String returnCode) { public Builder returnCode(String returnCode) {
this.returnCode = returnCode; this.returnCode = returnCode;
return this; return this;
} }


/**
* Return msg builder.
*
* @param returnMsg the return msg
* @return the builder
*/
public Builder returnMsg(String returnMsg) { public Builder returnMsg(String returnMsg) {
this.returnMsg = returnMsg; this.returnMsg = returnMsg;
return this; return this;
} }


/**
* Result code builder.
*
* @param resultCode the result code
* @return the builder
*/
public Builder resultCode(String resultCode) { public Builder resultCode(String resultCode) {
this.resultCode = resultCode; this.resultCode = resultCode;
return this; return this;
} }


/**
* Err code builder.
*
* @param errCode the err code
* @return the builder
*/
public Builder errCode(String errCode) { public Builder errCode(String errCode) {
this.errCode = errCode; this.errCode = errCode;
return this; return this;
} }


/**
* Err code des builder.
*
* @param errCodeDes the err code des
* @return the builder
*/
public Builder errCodeDes(String errCodeDes) { public Builder errCodeDes(String errCodeDes) {
this.errCodeDes = errCodeDes; this.errCodeDes = errCodeDes;
return this; return this;
} }


/**
* Xml string builder.
*
* @param xmlString the xml string
* @return the builder
*/
public Builder xmlString(String xmlString) { public Builder xmlString(String xmlString) {
this.xmlString = xmlString; this.xmlString = xmlString;
return this; return this;
} }


/**
* Build wx pay exception.
*
* @return the wx pay exception
*/
public WxPayException build() { public WxPayException build() {
return new WxPayException(this); return new WxPayException(this);
} }


/**
* Build error msg string.
*
* @return the string
*/
public String buildErrorMsg() { public String buildErrorMsg() {
return Joiner.on(",").skipNulls().join( return Joiner.on(",").skipNulls().join(
returnCode == null ? null : String.format("返回代码:[%s]", returnCode), returnCode == null ? null : String.format("返回代码:[%s]", returnCode),


+ 11
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java View File

@@ -24,6 +24,8 @@ public interface EntPayService {
* </pre> * </pre>
* *
* @param request 请求对象 * @param request 请求对象
* @return the ent pay result
* @throws WxPayException the wx pay exception
*/ */
EntPayResult entPay(EntPayRequest request) throws WxPayException; EntPayResult entPay(EntPayRequest request) throws WxPayException;


@@ -36,6 +38,8 @@ public interface EntPayService {
* </pre> * </pre>
* *
* @param partnerTradeNo 商户订单号 * @param partnerTradeNo 商户订单号
* @return the ent pay query result
* @throws WxPayException the wx pay exception
*/ */
EntPayQueryResult queryEntPay(String partnerTradeNo) throws WxPayException; EntPayQueryResult queryEntPay(String partnerTradeNo) throws WxPayException;


@@ -54,6 +58,9 @@ public interface EntPayService {
* 文档详见:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_7&index=4 * 文档详见:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_7&index=4
* 接口链接:https://fraud.mch.weixin.qq.com/risk/getpublickey * 接口链接:https://fraud.mch.weixin.qq.com/risk/getpublickey
* </pre> * </pre>
*
* @return the public key
* @throws WxPayException the wx pay exception
*/ */
String getPublicKey() throws WxPayException; String getPublicKey() throws WxPayException;


@@ -67,6 +74,8 @@ public interface EntPayService {
* </pre> * </pre>
* *
* @param request 请求对象 * @param request 请求对象
* @return the ent pay bank result
* @throws WxPayException the wx pay exception
*/ */
EntPayBankResult payBank(EntPayBankRequest request) throws WxPayException; EntPayBankResult payBank(EntPayBankRequest request) throws WxPayException;


@@ -79,6 +88,8 @@ public interface EntPayService {
* </pre> * </pre>
* *
* @param partnerTradeNo 商户订单号 * @param partnerTradeNo 商户订单号
* @return the ent pay bank query result
* @throws WxPayException the wx pay exception
*/ */
EntPayBankQueryResult queryPayBank(String partnerTradeNo) throws WxPayException; EntPayBankQueryResult queryPayBank(String partnerTradeNo) throws WxPayException;
} }

+ 105
- 21
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java View File

@@ -53,6 +53,8 @@ public interface WxPayService {


/** /**
* 获取微信支付请求url前缀,沙箱环境可能不一样. * 获取微信支付请求url前缀,沙箱环境可能不一样.
*
* @return the pay base url
*/ */
String getPayBaseUrl(); String getPayBaseUrl();


@@ -62,7 +64,8 @@ public interface WxPayService {
* @param url 请求地址 * @param url 请求地址
* @param requestStr 请求信息 * @param requestStr 请求信息
* @param useKey 是否使用证书 * @param useKey 是否使用证书
* @return 返回请求结果字节数组
* @return 返回请求结果字节数组 byte [ ]
* @throws WxPayException the wx pay exception
*/ */
byte[] postForBytes(String url, String requestStr, boolean useKey) throws WxPayException; byte[] postForBytes(String url, String requestStr, boolean useKey) throws WxPayException;


@@ -72,17 +75,22 @@ public interface WxPayService {
* @param url 请求地址 * @param url 请求地址
* @param requestStr 请求信息 * @param requestStr 请求信息
* @param useKey 是否使用证书 * @param useKey 是否使用证书
* @return 返回请求结果字符串
* @return 返回请求结果字符串 string
* @throws WxPayException the wx pay exception
*/ */
String post(String url, String requestStr, boolean useKey) throws WxPayException; String post(String url, String requestStr, boolean useKey) throws WxPayException;


/** /**
* 获取企业付款服务类. * 获取企业付款服务类.
*
* @return the ent pay service
*/ */
EntPayService getEntPayService(); EntPayService getEntPayService();


/** /**
* 设置企业付款服务类,允许开发者自定义实现类. * 设置企业付款服务类,允许开发者自定义实现类.
*
* @param entPayService the ent pay service
*/ */
void setEntPayService(EntPayService entPayService); void setEntPayService(EntPayService entPayService);


@@ -101,6 +109,8 @@ public interface WxPayService {
* *
* @param transactionId 微信订单号 * @param transactionId 微信订单号
* @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。 * @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。
* @return the wx pay order query result
* @throws WxPayException the wx pay exception
*/ */
WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxPayException; WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxPayException;


@@ -118,6 +128,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 查询订单请求对象 * @param request 查询订单请求对象
* @return the wx pay order query result
* @throws WxPayException the wx pay exception
*/ */
WxPayOrderQueryResult queryOrder(WxPayOrderQueryRequest request) throws WxPayException; WxPayOrderQueryResult queryOrder(WxPayOrderQueryRequest request) throws WxPayException;


@@ -134,6 +146,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param outTradeNo 商户系统内部的订单号 * @param outTradeNo 商户系统内部的订单号
* @return the wx pay order close result
* @throws WxPayException the wx pay exception
*/ */
WxPayOrderCloseResult closeOrder(String outTradeNo) throws WxPayException; WxPayOrderCloseResult closeOrder(String outTradeNo) throws WxPayException;


@@ -150,15 +164,18 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 关闭订单请求对象 * @param request 关闭订单请求对象
* @return the wx pay order close result
* @throws WxPayException the wx pay exception
*/ */
WxPayOrderCloseResult closeOrder(WxPayOrderCloseRequest request) throws WxPayException; WxPayOrderCloseResult closeOrder(WxPayOrderCloseRequest request) throws WxPayException;


/** /**
* 调用统一下单接口,并组装生成支付所需参数对象. * 调用统一下单接口,并组装生成支付所需参数对象.
* *
* @param request 统一下单请求参数
* @param <T> 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类 * @param <T> 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类
* @param request 统一下单请求参数
* @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象 * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象
* @throws WxPayException the wx pay exception
*/ */
<T> T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException; <T> T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException;


@@ -168,6 +185,8 @@ public interface WxPayService {
* 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder * 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder
* *
* @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置) * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
* @return the wx pay unified order result
* @throws WxPayException the wx pay exception
*/ */
WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request) throws WxPayException; WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request) throws WxPayException;


@@ -176,6 +195,8 @@ public interface WxPayService {
* 详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 * 详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
* *
* @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置) * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置)
* @return the pay info
* @throws WxPayException the wx pay exception
* @deprecated 建议使用 {@link com.github.binarywang.wxpay.service.WxPayService#createOrder(WxPayUnifiedOrderRequest)} * @deprecated 建议使用 {@link com.github.binarywang.wxpay.service.WxPayService#createOrder(WxPayUnifiedOrderRequest)}
*/ */
@Deprecated @Deprecated
@@ -183,11 +204,15 @@ public interface WxPayService {


/** /**
* 获取配置. * 获取配置.
*
* @return the config
*/ */
WxPayConfig getConfig(); WxPayConfig getConfig();


/** /**
* 设置配置对象. * 设置配置对象.
*
* @param config the config
*/ */
void setConfig(WxPayConfig config); void setConfig(WxPayConfig config);


@@ -199,7 +224,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 请求对象 * @param request 请求对象
* @return 退款操作结果
* @return 退款操作结果 wx pay refund result
* @throws WxPayException the wx pay exception
*/ */
WxPayRefundResult refund(WxPayRefundRequest request) throws WxPayException; WxPayRefundResult refund(WxPayRefundRequest request) throws WxPayException;


@@ -218,7 +244,8 @@ public interface WxPayService {
* @param outTradeNo 商户订单号 * @param outTradeNo 商户订单号
* @param outRefundNo 商户退款单号 * @param outRefundNo 商户退款单号
* @param refundId 微信退款单号 * @param refundId 微信退款单号
* @return 退款信息
* @return 退款信息 wx pay refund query result
* @throws WxPayException the wx pay exception
*/ */
WxPayRefundQueryResult refundQuery(String transactionId, String outTradeNo, String outRefundNo, String refundId) WxPayRefundQueryResult refundQuery(String transactionId, String outTradeNo, String outRefundNo, String refundId)
throws WxPayException; throws WxPayException;
@@ -234,25 +261,38 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 微信退款单号 * @param request 微信退款单号
* @return 退款信息
* @return 退款信息 wx pay refund query result
* @throws WxPayException the wx pay exception
*/ */
WxPayRefundQueryResult refundQuery(WxPayRefundQueryRequest request) throws WxPayException; WxPayRefundQueryResult refundQuery(WxPayRefundQueryRequest request) throws WxPayException;


/** /**
* 解析支付结果通知. * 解析支付结果通知.
* 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
*
* @param xmlData the xml data
* @return the wx pay order notify result
* @throws WxPayException the wx pay exception
*/ */
WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData) throws WxPayException; WxPayOrderNotifyResult parseOrderNotifyResult(String xmlData) throws WxPayException;


/** /**
* 解析退款结果通知 * 解析退款结果通知
* 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=9 * 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=9
*
* @param xmlData the xml data
* @return the wx pay refund notify result
* @throws WxPayException the wx pay exception
*/ */
WxPayRefundNotifyResult parseRefundNotifyResult(String xmlData) throws WxPayException; WxPayRefundNotifyResult parseRefundNotifyResult(String xmlData) throws WxPayException;


/** /**
* 解析扫码支付回调通知 * 解析扫码支付回调通知
* 详见https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 * 详见https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4
*
* @param xmlData the xml data
* @return the wx scan pay notify result
* @throws WxPayException the wx pay exception
*/ */
WxScanPayNotifyResult parseScanPayNotifyResult(String xmlData) throws WxPayException; WxScanPayNotifyResult parseScanPayNotifyResult(String xmlData) throws WxPayException;


@@ -267,6 +307,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 请求对象 * @param request 请求对象
* @return the wx pay send redpack result
* @throws WxPayException the wx pay exception
*/ */
WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException; WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException;


@@ -280,6 +322,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param mchBillNo 商户发放红包的商户订单号,比如10000098201411111234567890 * @param mchBillNo 商户发放红包的商户订单号,比如10000098201411111234567890
* @return the wx pay redpack query result
* @throws WxPayException the wx pay exception
*/ */
WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxPayException; WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxPayException;


@@ -293,9 +337,9 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param productId 产品Id * @param productId 产品Id
* @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
* @param logoFile 商户logo图片的文件对象,可以为空 * @param logoFile 商户logo图片的文件对象,可以为空
* @return 生成的二维码的字节数组
* @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
* @return 生成的二维码的字节数组 byte [ ]
*/ */
byte[] createScanPayQrcodeMode1(String productId, File logoFile, Integer sideLength); byte[] createScanPayQrcodeMode1(String productId, File logoFile, Integer sideLength);


@@ -309,7 +353,7 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param productId 产品Id * @param productId 产品Id
* @return 生成的二维码URL连接
* @return 生成的二维码URL连接 string
*/ */
String createScanPayQrcodeMode1(String productId); String createScanPayQrcodeMode1(String productId);


@@ -324,7 +368,7 @@ public interface WxPayService {
* @param codeUrl 微信返回的交易会话的二维码链接 * @param codeUrl 微信返回的交易会话的二维码链接
* @param logoFile 商户logo图片的文件对象,可以为空 * @param logoFile 商户logo图片的文件对象,可以为空
* @param sideLength 要生成的二维码的边长,如果为空,则取默认值400 * @param sideLength 要生成的二维码的边长,如果为空,则取默认值400
* @return 生成的二维码的字节数组
* @return 生成的二维码的字节数组 byte [ ]
*/ */
byte[] createScanPayQrcodeMode2(String codeUrl, File logoFile, Integer sideLength); byte[] createScanPayQrcodeMode2(String codeUrl, File logoFile, Integer sideLength);


@@ -338,6 +382,9 @@ public interface WxPayService {
* 接口地址: https://api.mch.weixin.qq.com/payitil/report * 接口地址: https://api.mch.weixin.qq.com/payitil/report
* 是否需要证书:不需要 * 是否需要证书:不需要
* </pre> * </pre>
*
* @param request the request
* @throws WxPayException the wx pay exception
*/ */
void report(WxPayReportRequest request) throws WxPayException; void report(WxPayReportRequest request) throws WxPayException;


@@ -358,7 +405,8 @@ public interface WxPayService {
* @param billType 账单类型 bill_type ALL,返回当日所有订单信息,默认值,SUCCESS,返回当日成功支付的订单,REFUND,返回当日退款订单 * @param billType 账单类型 bill_type ALL,返回当日所有订单信息,默认值,SUCCESS,返回当日成功支付的订单,REFUND,返回当日退款订单
* @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。 * @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
* @param deviceInfo 设备号 device_info 非必传参数,终端设备号 * @param deviceInfo 设备号 device_info 非必传参数,终端设备号
* @return WxPayBillResult对象
* @return WxPayBillResult对象 wx pay bill result
* @throws WxPayException the wx pay exception
*/ */
WxPayBillResult downloadBill(String billDate, String billType, String tarType, String deviceInfo) throws WxPayException; WxPayBillResult downloadBill(String billDate, String billType, String tarType, String deviceInfo) throws WxPayException;


@@ -376,7 +424,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 下载对账单请求 * @param request 下载对账单请求
* @return WxPayBillResult对象
* @return WxPayBillResult对象 wx pay bill result
* @throws WxPayException the wx pay exception
*/ */
WxPayBillResult downloadBill(WxPayDownloadBillRequest request) throws WxPayException; WxPayBillResult downloadBill(WxPayDownloadBillRequest request) throws WxPayException;


@@ -392,10 +441,11 @@ public interface WxPayService {
* 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_18">下载对账单</a> * 详情请见: <a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_18">下载对账单</a>
* </pre> * </pre>
* *
* @param billDate 资金账单日期 bill_date 下载对账单的日期,格式:20140603
* @param accountType 资金账户类型 account_type Basic,基本账户,Operation,运营账户,Fees,手续费账户
* @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
* @return WxPayFundFlowResult对象
* @param billDate 资金账单日期 bill_date 下载对账单的日期,格式:20140603
* @param accountType 资金账户类型 account_type Basic,基本账户,Operation,运营账户,Fees,手续费账户
* @param tarType 压缩账单 tar_type 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单。不传则默认为数据流形式。
* @return WxPayFundFlowResult对象 wx pay fund flow result
* @throws WxPayException the wx pay exception
*/ */
WxPayFundFlowResult downloadFundFlow(String billDate, String accountType, String tarType) throws WxPayException; WxPayFundFlowResult downloadFundFlow(String billDate, String accountType, String tarType) throws WxPayException;


@@ -412,7 +462,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 下载资金流水请求 * @param request 下载资金流水请求
* @return WxPayFundFlowResult对象
* @return WxPayFundFlowResult对象 wx pay fund flow result
* @throws WxPayException the wx pay exception
*/ */
WxPayFundFlowResult downloadFundFlow(WxPayDownloadFundFlowRequest request) throws WxPayException; WxPayFundFlowResult downloadFundFlow(WxPayDownloadFundFlowRequest request) throws WxPayException;


@@ -427,6 +478,10 @@ public interface WxPayService {
* 接口地址: https://api.mch.weixin.qq.com/pay/micropay * 接口地址: https://api.mch.weixin.qq.com/pay/micropay
* 是否需要证书:不需要。 * 是否需要证书:不需要。
* </pre> * </pre>
*
* @param request the request
* @return the wx pay micropay result
* @throws WxPayException the wx pay exception
*/ */
WxPayMicropayResult micropay(WxPayMicropayRequest request) throws WxPayException; WxPayMicropayResult micropay(WxPayMicropayRequest request) throws WxPayException;


@@ -443,6 +498,10 @@ public interface WxPayService {
* 接口链接 :https://api.mch.weixin.qq.com/secapi/pay/reverse * 接口链接 :https://api.mch.weixin.qq.com/secapi/pay/reverse
* 是否需要证书:请求需要双向证书。 * 是否需要证书:请求需要双向证书。
* </pre> * </pre>
*
* @param request the request
* @return the wx pay order reverse result
* @throws WxPayException the wx pay exception
*/ */
WxPayOrderReverseResult reverseOrder(WxPayOrderReverseRequest request) throws WxPayException; WxPayOrderReverseResult reverseOrder(WxPayOrderReverseRequest request) throws WxPayException;


@@ -458,6 +517,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 请求对象 * @param request 请求对象
* @return the string
* @throws WxPayException the wx pay exception
*/ */
String shorturl(WxPayShorturlRequest request) throws WxPayException; String shorturl(WxPayShorturlRequest request) throws WxPayException;


@@ -467,7 +528,9 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param longUrl 需要被压缩的网址 * @param longUrl 需要被压缩的网址
* @see WxPayService#shorturl(WxPayShorturlRequest)
* @return the string
* @throws WxPayException the wx pay exception
* @see WxPayService#shorturl(WxPayShorturlRequest) WxPayService#shorturl(WxPayShorturlRequest)
*/ */
String shorturl(String longUrl) throws WxPayException; String shorturl(String longUrl) throws WxPayException;


@@ -482,7 +545,8 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param request 请求对象 * @param request 请求对象
* @return openid
* @return openid string
* @throws WxPayException the wx pay exception
*/ */
String authcode2Openid(WxPayAuthcode2OpenidRequest request) throws WxPayException; String authcode2Openid(WxPayAuthcode2OpenidRequest request) throws WxPayException;


@@ -492,8 +556,9 @@ public interface WxPayService {
* </pre> * </pre>
* *
* @param authCode 授权码 * @param authCode 授权码
* @return openid
* @see WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest)
* @return openid string
* @throws WxPayException the wx pay exception
* @see WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest) WxPayService#authcode2Openid(WxPayAuthcode2OpenidRequest)
*/ */
String authcode2Openid(String authCode) throws WxPayException; String authcode2Openid(String authCode) throws WxPayException;


@@ -505,6 +570,9 @@ public interface WxPayService {
* 请求方式: POST * 请求方式: POST
* 文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1 * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1
* </pre> * </pre>
*
* @return the sandbox sign key
* @throws WxPayException the wx pay exception
*/ */
String getSandboxSignKey() throws WxPayException; String getSandboxSignKey() throws WxPayException;


@@ -515,6 +583,10 @@ public interface WxPayService {
* 是否需要证书:请求需要双向证书。 * 是否需要证书:请求需要双向证书。
* 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_3 * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_3
* </pre> * </pre>
*
* @param request the request
* @return the wx pay coupon send result
* @throws WxPayException the wx pay exception
*/ */
WxPayCouponSendResult sendCoupon(WxPayCouponSendRequest request) throws WxPayException; WxPayCouponSendResult sendCoupon(WxPayCouponSendRequest request) throws WxPayException;


@@ -524,6 +596,10 @@ public interface WxPayService {
* 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/query_coupon_stock * 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/query_coupon_stock
* 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_4 * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_4
* </pre> * </pre>
*
* @param request the request
* @return the wx pay coupon stock query result
* @throws WxPayException the wx pay exception
*/ */
WxPayCouponStockQueryResult queryCouponStock(WxPayCouponStockQueryRequest request) throws WxPayException; WxPayCouponStockQueryResult queryCouponStock(WxPayCouponStockQueryRequest request) throws WxPayException;


@@ -533,11 +609,17 @@ public interface WxPayService {
* 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/querycouponsinfo * 接口请求链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/querycouponsinfo
* 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_5 * 文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_5
* </pre> * </pre>
*
* @param request the request
* @return the wx pay coupon info query result
* @throws WxPayException the wx pay exception
*/ */
WxPayCouponInfoQueryResult queryCouponInfo(WxPayCouponInfoQueryRequest request) throws WxPayException; WxPayCouponInfoQueryResult queryCouponInfo(WxPayCouponInfoQueryRequest request) throws WxPayException;


/** /**
* 获取微信请求数据,方便接口调用方获取处理. * 获取微信请求数据,方便接口调用方获取处理.
*
* @return the wx api data
*/ */
WxPayApiData getWxApiData(); WxPayApiData getWxApiData();


@@ -558,6 +640,8 @@ public interface WxPayService {
* @param endDate 结束时间 * @param endDate 结束时间
* @param offset 位移 * @param offset 位移
* @param limit 条数,建议填null,否则接口会报签名错误 * @param limit 条数,建议填null,否则接口会报签名错误
* @return the string
* @throws WxPayException the wx pay exception
*/ */
String queryComment(Date beginDate, Date endDate, Integer offset, Integer limit) throws WxPayException; String queryComment(Date beginDate, Date endDate, Integer offset, Integer limit) throws WxPayException;
} }

+ 9
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java View File

@@ -90,11 +90,20 @@ import static com.github.binarywang.wxpay.constant.WxPayConstants.TarType;
*/ */
public abstract class BaseWxPayServiceImpl implements WxPayService { public abstract class BaseWxPayServiceImpl implements WxPayService {
private static final String PAY_BASE_URL = "https://api.mch.weixin.qq.com"; private static final String PAY_BASE_URL = "https://api.mch.weixin.qq.com";
/**
* The Log.
*/
protected final Logger log = LoggerFactory.getLogger(this.getClass()); protected final Logger log = LoggerFactory.getLogger(this.getClass());
/**
* The constant wxApiData.
*/
protected static ThreadLocal<WxPayApiData> wxApiData = new ThreadLocal<>(); protected static ThreadLocal<WxPayApiData> wxApiData = new ThreadLocal<>();


private EntPayService entPayService = new EntPayServiceImpl(this); private EntPayService entPayService = new EntPayServiceImpl(this);


/**
* The Config.
*/
protected WxPayConfig config; protected WxPayConfig config;


@Override @Override


+ 12
- 0
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java View File

@@ -40,6 +40,11 @@ import com.github.binarywang.wxpay.service.WxPayService;
public class EntPayServiceImpl implements EntPayService { public class EntPayServiceImpl implements EntPayService {
private WxPayService payService; private WxPayService payService;


/**
* Instantiates a new Ent pay service.
*
* @param payService the pay service
*/
public EntPayServiceImpl(WxPayService payService) { public EntPayServiceImpl(WxPayService payService) {
this.payService = payService; this.payService = payService;
} }
@@ -140,6 +145,13 @@ public class EntPayServiceImpl implements EntPayService {
} }
} }


/**
* The entry point of application.
*
* @param args the input arguments
* @throws WxPayException the wx pay exception
* @throws IOException the io exception
*/
public static void main(String[] args) throws WxPayException, IOException { public static void main(String[] args) throws WxPayException, IOException {
String key = "-----BEGIN RSA PUBLIC KEY-----\n" + String key = "-----BEGIN RSA PUBLIC KEY-----\n" +
"MIIBCgKCAQEAtEeUSop/YGqZ53Y++R9NapFSZmorj+SL/brmJUU7+hyClEnPOeG/\n" + "MIIBCgKCAQEAtEeUSop/YGqZ53Y++R9NapFSZmorj+SL/brmJUU7+hyClEnPOeG/\n" +


+ 11
- 3
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java View File

@@ -33,6 +33,10 @@ import lombok.extern.slf4j.Slf4j;
public class SignUtils { public class SignUtils {
/** /**
* 请参考并使用 {@link #createSign(Object, String, String, String[])}. * 请参考并使用 {@link #createSign(Object, String, String, String[])}.
*
* @param xmlBean the xml bean
* @param signKey the sign key
* @return the string
*/ */
@Deprecated @Deprecated
public static String createSign(Object xmlBean, String signKey) { public static String createSign(Object xmlBean, String signKey) {
@@ -41,6 +45,10 @@ public class SignUtils {


/** /**
* 请参考并使用 {@link #createSign(Map, String, String, String[])} . * 请参考并使用 {@link #createSign(Map, String, String, String[])} .
*
* @param params the params
* @param signKey the sign key
* @return the string
*/ */
@Deprecated @Deprecated
public static String createSign(Map<String, String> params, String signKey) { public static String createSign(Map<String, String> params, String signKey) {
@@ -54,7 +62,7 @@ public class SignUtils {
* @param signType 签名类型,如果为空,则默认为MD5 * @param signType 签名类型,如果为空,则默认为MD5
* @param signKey 签名Key * @param signKey 签名Key
* @param ignoredParams 签名时需要忽略的特殊参数 * @param ignoredParams 签名时需要忽略的特殊参数
* @return 签名字符串
* @return 签名字符串 string
*/ */
public static String createSign(Object xmlBean, String signType, String signKey, String[] ignoredParams) { public static String createSign(Object xmlBean, String signType, String signKey, String[] ignoredParams) {
return createSign(xmlBean2Map(xmlBean), signType, signKey, ignoredParams); return createSign(xmlBean2Map(xmlBean), signType, signKey, ignoredParams);
@@ -67,7 +75,7 @@ public class SignUtils {
* @param signType 签名类型,如果为空,则默认为MD5 * @param signType 签名类型,如果为空,则默认为MD5
* @param signKey 签名Key * @param signKey 签名Key
* @param ignoredParams 签名时需要忽略的特殊参数 * @param ignoredParams 签名时需要忽略的特殊参数
* @return 签名字符串
* @return 签名字符串 string
*/ */
public static String createSign(Map<String, String> params, String signType, String signKey, String[] ignoredParams) { public static String createSign(Map<String, String> params, String signType, String signKey, String[] ignoredParams) {
SortedMap<String, String> sortedMap = new TreeMap<>(params); SortedMap<String, String> sortedMap = new TreeMap<>(params);
@@ -123,7 +131,7 @@ public class SignUtils {
* 将bean按照@XStreamAlias标识的字符串内容生成以之为key的map对象. * 将bean按照@XStreamAlias标识的字符串内容生成以之为key的map对象.
* *
* @param bean 包含@XStreamAlias的xml bean对象 * @param bean 包含@XStreamAlias的xml bean对象
* @return map对象
* @return map对象 map
*/ */
public static Map<String, String> xmlBean2Map(Object bean) { public static Map<String, String> xmlBean2Map(Object bean) {
Map<String, String> result = Maps.newHashMap(); Map<String, String> result = Maps.newHashMap();


+ 5
- 2
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/notify/WxPayOrderNotifyResultTest.java View File

@@ -1,16 +1,19 @@
package com.github.binarywang.wxpay.bean.notify; package com.github.binarywang.wxpay.bean.notify;


import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import org.testng.*; import org.testng.*;
import org.testng.annotations.*; import org.testng.annotations.*;


/** /**
* <pre> * <pre>
* Created by Binary Wang on 2017-6-15. * Created by Binary Wang on 2017-6-15.
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* </pre> * </pre>
*
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */
public class WxPayOrderNotifyResultTest { public class WxPayOrderNotifyResultTest {
/**
* Test from xml.
*/
@Test @Test
public void testFromXML() { public void testFromXML() {
String xmlString = "<xml>\n" + String xmlString = "<xml>\n" +


+ 10
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/notify/WxPayRefundNotifyResultTest.java View File

@@ -28,6 +28,11 @@ public class WxPayRefundNotifyResultTest {
@Inject @Inject
private WxPayConfig wxPayConfig; private WxPayConfig wxPayConfig;


/**
* Test from xml.
*
* @throws WxPayException the wx pay exception
*/
public void testFromXML() throws WxPayException { public void testFromXML() throws WxPayException {
String xmlString = "<xml>" + String xmlString = "<xml>" +
"<return_code>SUCCESS</return_code>" + "<return_code>SUCCESS</return_code>" +
@@ -42,6 +47,11 @@ public class WxPayRefundNotifyResultTest {
System.out.println(refundNotifyResult); System.out.println(refundNotifyResult);
} }


/**
* Encode req info.
*
* @throws Exception the exception
*/
public void encodeReqInfo() throws Exception { public void encodeReqInfo() throws Exception {
String xml = "<root>\n" + String xml = "<root>\n" +
"<out_refund_no><![CDATA[R4001312001201707262674894706_4]]></out_refund_no>\n" + "<out_refund_no><![CDATA[R4001312001201707262674894706_4]]></out_refund_no>\n" +


+ 6
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/notify/WxScanPayNotifyResultTest.java View File

@@ -16,10 +16,16 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class WxScanPayNotifyResultTest { public class WxScanPayNotifyResultTest {


/**
* Test to map.
*/
@Test @Test
public void testToMap() { public void testToMap() {
} }


/**
* Test from xml.
*/
@Test @Test
public void testFromXML() { public void testFromXML() {
String xmlString = "<xml>\n" + String xmlString = "<xml>\n" +


+ 22
- 3
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/BaseWxPayResultTest.java View File

@@ -1,26 +1,42 @@
package com.github.binarywang.wxpay.bean.result; package com.github.binarywang.wxpay.bean.result;


import java.util.Map;

import org.testng.*; import org.testng.*;
import org.testng.annotations.*; import org.testng.annotations.*;


import java.util.Map;

/** /**
* <pre> * <pre>
* Created by Binary Wang on 2017-01-04. * Created by Binary Wang on 2017-01-04.
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
* </pre> * </pre>
*
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
*/ */
public class BaseWxPayResultTest { public class BaseWxPayResultTest {


/**
* Test get xml value.
*
* @throws Exception the exception
*/
@Test @Test
public void testGetXmlValue() throws Exception { public void testGetXmlValue() throws Exception {
} }


/**
* Test xml 2 doc.
*
* @throws Exception the exception
*/
@Test @Test
public void testXml2Doc() throws Exception { public void testXml2Doc() throws Exception {
} }


/**
* Test to map.
*
* @throws Exception the exception
*/
@Test @Test
public void testToMap() throws Exception { public void testToMap() throws Exception {
WxPayOrderQueryResult result = new WxPayOrderQueryResult(); WxPayOrderQueryResult result = new WxPayOrderQueryResult();
@@ -53,6 +69,9 @@ public class BaseWxPayResultTest {


} }


/**
* Test to map with empty xml string.
*/
@Test(expectedExceptions = {RuntimeException.class}) @Test(expectedExceptions = {RuntimeException.class})
public void testToMap_with_empty_xmlString() { public void testToMap_with_empty_xmlString() {
WxPayOrderQueryResult result = new WxPayOrderQueryResult(); WxPayOrderQueryResult result = new WxPayOrderQueryResult();


+ 5
- 1
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayOrderQueryResultTest.java View File

@@ -6,10 +6,14 @@ import org.testng.annotations.*;
/** /**
* <pre> * <pre>
* Created by Binary Wang on 2017-01-04. * Created by Binary Wang on 2017-01-04.
* </pre>
*
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a> * @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
* </pre>
*/ */
public class WxPayOrderQueryResultTest { public class WxPayOrderQueryResultTest {
/**
* Test compose coupons.
*/
@Test @Test
public void testComposeCoupons() { public void testComposeCoupons() {
/* /*


+ 3
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayRedpackQueryResultTest.java View File

@@ -13,6 +13,9 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author <a href="https://github.com/binarywang">Binary Wang</a> * @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */
public class WxPayRedpackQueryResultTest { public class WxPayRedpackQueryResultTest {
/**
* Test from xml.
*/
@Test @Test
public void testFromXML() { public void testFromXML() {
String xmlString = "<xml>\n" + String xmlString = "<xml>\n" +


+ 7
- 1
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayRefundQueryResultTest.java View File

@@ -7,10 +7,16 @@ import org.testng.annotations.*;
/** /**
* <pre> * <pre>
* Created by Binary Wang on 2016-12-29. * Created by Binary Wang on 2016-12-29.
* </pre>
*
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a> * @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
* </pre>
*/ */
public class WxPayRefundQueryResultTest { public class WxPayRefundQueryResultTest {
/**
* Compose refund records.
*
* @throws Exception the exception
*/
@Test @Test
public void composeRefundRecords() throws Exception { public void composeRefundRecords() throws Exception {
/* /*


+ 3
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPayRefundResultTest.java View File

@@ -13,6 +13,9 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class WxPayRefundResultTest { public class WxPayRefundResultTest {


/**
* Test compose refund coupons.
*/
@Test @Test
public void testComposeRefundCoupons() { public void testComposeRefundCoupons() {
/* /*


+ 15
- 2
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/result/WxPaySendRedpackResultTest.java View File

@@ -1,20 +1,30 @@
package com.github.binarywang.wxpay.bean.result; package com.github.binarywang.wxpay.bean.result;


import com.thoughtworks.xstream.XStream;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
import org.testng.*; import org.testng.*;
import org.testng.annotations.*; import org.testng.annotations.*;


import com.thoughtworks.xstream.XStream;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;

/**
* The type Wx pay send redpack result test.
*/
public class WxPaySendRedpackResultTest { public class WxPaySendRedpackResultTest {


private XStream xstream; private XStream xstream;


/**
* Sets .
*/
@BeforeTest @BeforeTest
public void setup() { public void setup() {
this.xstream = XStreamInitializer.getInstance(); this.xstream = XStreamInitializer.getInstance();
this.xstream.processAnnotations(WxPaySendRedpackResult.class); this.xstream.processAnnotations(WxPaySendRedpackResult.class);
} }


/**
* Load success result.
*/
@Test @Test
public void loadSuccessResult() { public void loadSuccessResult() {
final String successSample = "<xml>\n" + final String successSample = "<xml>\n" +
@@ -37,6 +47,9 @@ public class WxPaySendRedpackResultTest {
Assert.assertEquals("20150520102602", wxMpRedpackResult.getSendTime()); Assert.assertEquals("20150520102602", wxMpRedpackResult.getSendTime());
} }


/**
* Load failure result.
*/
@Test @Test
public void loadFailureResult() { public void loadFailureResult() {
final String failureSample = "<xml>\n" + final String failureSample = "<xml>\n" +


+ 5
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/config/WxPayConfigTest.java View File

@@ -14,6 +14,11 @@ import static org.testng.Assert.*;
public class WxPayConfigTest { public class WxPayConfigTest {
private WxPayConfig payConfig = new WxPayConfig(); private WxPayConfig payConfig = new WxPayConfig();


/**
* Test init ssl context.
*
* @throws Exception the exception
*/
@Test @Test
public void testInitSSLContext() throws Exception { public void testInitSSLContext() throws Exception {
payConfig.setMchId("123"); payConfig.setMchId("123");


+ 157
- 1
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImplTest.java View File

@@ -68,6 +68,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#unifiedOrder(WxPayUnifiedOrderRequest)}. * Test method for {@link WxPayService#unifiedOrder(WxPayUnifiedOrderRequest)}.
*
* @throws WxPayException the wx pay exception
*/ */
@Test @Test
public void testUnifiedOrder() throws WxPayException { public void testUnifiedOrder() throws WxPayException {
@@ -86,11 +88,21 @@ public class BaseWxPayServiceImplTest {
this.logger.warn(this.payService.getWxApiData().toString()); this.logger.warn(this.payService.getWxApiData().toString());
} }


/**
* Test create order.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateOrder() throws Exception { public void testCreateOrder() throws Exception {
//see other tests with method name starting with 'testCreateOrder_' //see other tests with method name starting with 'testCreateOrder_'
} }


/**
* Test create order jsapi.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateOrder_jsapi() throws Exception { public void testCreateOrder_jsapi() throws Exception {
WxPayMpOrderResult result = this.payService WxPayMpOrderResult result = this.payService
@@ -107,6 +119,11 @@ public class BaseWxPayServiceImplTest {
this.logger.warn(this.payService.getWxApiData().toString()); this.logger.warn(this.payService.getWxApiData().toString());
} }


/**
* Test create order app.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateOrder_app() throws Exception { public void testCreateOrder_app() throws Exception {
WxPayAppOrderResult result = this.payService WxPayAppOrderResult result = this.payService
@@ -122,6 +139,11 @@ public class BaseWxPayServiceImplTest {
this.logger.warn(this.payService.getWxApiData().toString()); this.logger.warn(this.payService.getWxApiData().toString());
} }


/**
* Test create order native.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateOrder_native() throws Exception { public void testCreateOrder_native() throws Exception {
WxPayNativeOrderResult result = this.payService WxPayNativeOrderResult result = this.payService
@@ -138,6 +160,11 @@ public class BaseWxPayServiceImplTest {
this.logger.warn(this.payService.getWxApiData().toString()); this.logger.warn(this.payService.getWxApiData().toString());
} }


/**
* Test get pay info.
*
* @throws Exception the exception
*/
@Test @Test
public void testGetPayInfo() throws Exception { public void testGetPayInfo() throws Exception {
//please use createOrder instead //please use createOrder instead
@@ -145,6 +172,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#queryOrder(String, String)} . * Test method for {@link WxPayService#queryOrder(String, String)} .
*
* @throws WxPayException the wx pay exception
*/ */
@Test @Test
public void testQueryOrder() throws WxPayException { public void testQueryOrder() throws WxPayException {
@@ -154,12 +183,19 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#closeOrder(String)} . * Test method for {@link WxPayService#closeOrder(String)} .
*
* @throws WxPayException the wx pay exception
*/ */
@Test @Test
public void testCloseOrder() throws WxPayException { public void testCloseOrder() throws WxPayException {
this.logger.info(this.payService.closeOrder("11212121").toString()); this.logger.info(this.payService.closeOrder("11212121").toString());
} }


/**
* Billing data object [ ] [ ].
*
* @return the object [ ] [ ]
*/
@DataProvider @DataProvider
public Object[][] billingData() { public Object[][] billingData() {
return new Object[][]{ return new Object[][]{
@@ -174,6 +210,15 @@ public class BaseWxPayServiceImplTest {
}; };
} }


/**
* Test download bill.
*
* @param billDate the bill date
* @param billType the bill type
* @param tarType the tar type
* @param deviceInfo the device info
* @throws Exception the exception
*/
@Test(dataProvider = "billingData") @Test(dataProvider = "billingData")
public void testDownloadBill(String billDate, String billType, public void testDownloadBill(String billDate, String billType,
String tarType, String deviceInfo) throws Exception { String tarType, String deviceInfo) throws Exception {
@@ -182,12 +227,22 @@ public class BaseWxPayServiceImplTest {
this.logger.info(billResult.toString()); this.logger.info(billResult.toString());
} }


/**
* Test download bill with no params.
*
* @throws Exception the exception
*/
@Test(expectedExceptions = WxPayException.class) @Test(expectedExceptions = WxPayException.class)
public void testDownloadBill_withNoParams() throws Exception { public void testDownloadBill_withNoParams() throws Exception {
//必填字段为空时,抛出异常 //必填字段为空时,抛出异常
this.payService.downloadBill("", "", "", null); this.payService.downloadBill("", "", "", null);
} }


/**
* Fund flow data object [ ] [ ].
*
* @return the object [ ] [ ]
*/
@DataProvider @DataProvider
public Object[][] fundFlowData() { public Object[][] fundFlowData() {
return new Object[][]{ return new Object[][]{
@@ -200,6 +255,14 @@ public class BaseWxPayServiceImplTest {
}; };
} }


/**
* Test download fund flow.
*
* @param billDate the bill date
* @param accountType the account type
* @param tarType the tar type
* @throws Exception the exception
*/
@Test(dataProvider = "fundFlowData") @Test(dataProvider = "fundFlowData")
public void testDownloadFundFlow(String billDate, String accountType, String tarType) throws Exception { public void testDownloadFundFlow(String billDate, String accountType, String tarType) throws Exception {
WxPayFundFlowResult fundFlowResult = this.payService.downloadFundFlow(billDate, accountType, tarType); WxPayFundFlowResult fundFlowResult = this.payService.downloadFundFlow(billDate, accountType, tarType);
@@ -207,12 +270,22 @@ public class BaseWxPayServiceImplTest {
this.logger.info(fundFlowResult.toString()); this.logger.info(fundFlowResult.toString());
} }


/**
* Test download fund flow with no params.
*
* @throws Exception the exception
*/
@Test(expectedExceptions = WxPayException.class) @Test(expectedExceptions = WxPayException.class)
public void testDownloadFundFlow_withNoParams() throws Exception { public void testDownloadFundFlow_withNoParams() throws Exception {
//必填字段为空时,抛出异常 //必填字段为空时,抛出异常
this.payService.downloadFundFlow("", "", null); this.payService.downloadFundFlow("", "", null);
} }


/**
* Test report.
*
* @throws Exception the exception
*/
@Test @Test
public void testReport() throws Exception { public void testReport() throws Exception {
WxPayReportRequest request = new WxPayReportRequest(); WxPayReportRequest request = new WxPayReportRequest();
@@ -227,6 +300,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#refund(WxPayRefundRequest)} . * Test method for {@link WxPayService#refund(WxPayRefundRequest)} .
*
* @throws Exception the exception
*/ */
@Test @Test
public void testRefund() throws Exception { public void testRefund() throws Exception {
@@ -242,6 +317,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#refundQuery(String, String, String, String)} . * Test method for {@link WxPayService#refundQuery(String, String, String, String)} .
*
* @throws Exception the exception
*/ */
@Test @Test
public void testRefundQuery() throws Exception { public void testRefundQuery() throws Exception {
@@ -264,6 +341,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result.toString()); this.logger.info(result.toString());
} }


/**
* Test parse refund notify result.
*
* @throws Exception the exception
*/
@Test @Test
public void testParseRefundNotifyResult() throws Exception { public void testParseRefundNotifyResult() throws Exception {
// 请参考com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResultTest里的单元测试 // 请参考com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResultTest里的单元测试
@@ -271,6 +353,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#sendRedpack(WxPaySendRedpackRequest)} . * Test method for {@link WxPayService#sendRedpack(WxPaySendRedpackRequest)} .
*
* @throws Exception the exception
*/ */
@Test @Test
public void testSendRedpack() throws Exception { public void testSendRedpack() throws Exception {
@@ -289,6 +373,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* Test method for {@link WxPayService#queryRedpack(String)}. * Test method for {@link WxPayService#queryRedpack(String)}.
*
* @throws Exception the exception
*/ */
@Test @Test
public void testQueryRedpack() throws Exception { public void testQueryRedpack() throws Exception {
@@ -296,6 +382,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(redpackResult.toString()); this.logger.info(redpackResult.toString());
} }


/**
* Test create scan pay qrcode mode 1.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateScanPayQrcodeMode1() throws Exception { public void testCreateScanPayQrcodeMode1() throws Exception {
String productId = "abc"; String productId = "abc";
@@ -309,6 +400,11 @@ public class BaseWxPayServiceImplTest {
assertTrue(qrcodeContent.contains("product_id=" + productId)); assertTrue(qrcodeContent.contains("product_id=" + productId));
} }


/**
* Test create scan pay qrcode mode 2.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateScanPayQrcodeMode2() throws Exception { public void testCreateScanPayQrcodeMode2() throws Exception {
String qrcodeContent = "abc"; String qrcodeContent = "abc";
@@ -318,6 +414,11 @@ public class BaseWxPayServiceImplTest {
assertEquals(QrcodeUtils.decodeQrcode(qrcodeFilePath.toFile()), qrcodeContent); assertEquals(QrcodeUtils.decodeQrcode(qrcodeFilePath.toFile()), qrcodeContent);
} }


/**
* Test micropay.
*
* @throws Exception the exception
*/
@Test @Test
public void testMicropay() throws Exception { public void testMicropay() throws Exception {
WxPayMicropayResult result = this.payService.micropay( WxPayMicropayResult result = this.payService.micropay(
@@ -332,16 +433,31 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result.toString()); this.logger.info(result.toString());
} }


/**
* Test get config.
*
* @throws Exception the exception
*/
@Test @Test
public void testGetConfig() throws Exception { public void testGetConfig() throws Exception {
// no need to test // no need to test
} }


/**
* Test set config.
*
* @throws Exception the exception
*/
@Test @Test
public void testSetConfig() throws Exception { public void testSetConfig() throws Exception {
// no need to test // no need to test
} }


/**
* Test reverse order.
*
* @throws Exception the exception
*/
@Test @Test
public void testReverseOrder() throws Exception { public void testReverseOrder() throws Exception {
WxPayOrderReverseResult result = this.payService.reverseOrder( WxPayOrderReverseResult result = this.payService.reverseOrder(
@@ -353,6 +469,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result.toString()); this.logger.info(result.toString());
} }


/**
* Test shorturl.
*
* @throws Exception the exception
*/
@Test @Test
public void testShorturl() throws Exception { public void testShorturl() throws Exception {
String longUrl = "weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX"; String longUrl = "weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX";
@@ -366,6 +487,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result); this.logger.info(result);
} }


/**
* Test authcode 2 openid.
*
* @throws Exception the exception
*/
@Test @Test
public void testAuthcode2Openid() throws Exception { public void testAuthcode2Openid() throws Exception {
String authCode = "11111"; String authCode = "11111";
@@ -379,6 +505,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result); this.logger.info(result);
} }


/**
* Test get sandbox sign key.
*
* @throws Exception the exception
*/
@Test @Test
public void testGetSandboxSignKey() throws Exception { public void testGetSandboxSignKey() throws Exception {
final String signKey = this.payService.getSandboxSignKey(); final String signKey = this.payService.getSandboxSignKey();
@@ -386,6 +517,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(signKey); this.logger.info(signKey);
} }


/**
* Test send coupon.
*
* @throws Exception the exception
*/
@Test @Test
public void testSendCoupon() throws Exception { public void testSendCoupon() throws Exception {
WxPayCouponSendResult result = this.payService.sendCoupon(WxPayCouponSendRequest.newBuilder() WxPayCouponSendResult result = this.payService.sendCoupon(WxPayCouponSendRequest.newBuilder()
@@ -397,6 +533,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result.toString()); this.logger.info(result.toString());
} }


/**
* Test query coupon stock.
*
* @throws Exception the exception
*/
@Test @Test
public void testQueryCouponStock() throws Exception { public void testQueryCouponStock() throws Exception {
WxPayCouponStockQueryResult result = this.payService.queryCouponStock( WxPayCouponStockQueryResult result = this.payService.queryCouponStock(
@@ -407,6 +548,11 @@ public class BaseWxPayServiceImplTest {
this.logger.info(result.toString()); this.logger.info(result.toString());
} }


/**
* Test query coupon info.
*
* @throws Exception the exception
*/
@Test @Test
public void testQueryCouponInfo() throws Exception { public void testQueryCouponInfo() throws Exception {
WxPayCouponInfoQueryResult result = this.payService.queryCouponInfo( WxPayCouponInfoQueryResult result = this.payService.queryCouponInfo(
@@ -421,6 +567,8 @@ public class BaseWxPayServiceImplTest {


/** /**
* 只支持拉取90天内的评论数据 * 只支持拉取90天内的评论数据
*
* @throws Exception the exception
*/ */
@Test @Test
public void testQueryComment() throws Exception { public void testQueryComment() throws Exception {
@@ -434,7 +582,10 @@ public class BaseWxPayServiceImplTest {
} }


/** /**
* @see WxPayOrderNotifyResultTest#testFromXML()
* Test parse order notify result.
*
* @throws Exception the exception
* @see WxPayOrderNotifyResultTest#testFromXML() WxPayOrderNotifyResultTest#testFromXML()
*/ */
@Test @Test
public void testParseOrderNotifyResult() throws Exception { public void testParseOrderNotifyResult() throws Exception {
@@ -471,6 +622,11 @@ public class BaseWxPayServiceImplTest {
System.out.println(result); System.out.println(result);
} }


/**
* Test get wx api data.
*
* @throws Exception the exception
*/
@Test @Test
public void testGetWxApiData() throws Exception { public void testGetWxApiData() throws Exception {
//see test in testUnifiedOrder() //see test in testUnifiedOrder()


+ 25
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImplTest.java View File

@@ -28,6 +28,11 @@ public class EntPayServiceImplTest {
@Inject @Inject
private WxPayService payService; private WxPayService payService;


/**
* Test ent pay.
*
* @throws WxPayException the wx pay exception
*/
@Test @Test
public void testEntPay() throws WxPayException { public void testEntPay() throws WxPayException {
EntPayRequest request = EntPayRequest.newBuilder() EntPayRequest request = EntPayRequest.newBuilder()
@@ -42,16 +47,31 @@ public class EntPayServiceImplTest {
this.logger.info(this.payService.getEntPayService().entPay(request).toString()); this.logger.info(this.payService.getEntPayService().entPay(request).toString());
} }


/**
* Test query ent pay.
*
* @throws WxPayException the wx pay exception
*/
@Test @Test
public void testQueryEntPay() throws WxPayException { public void testQueryEntPay() throws WxPayException {
this.logger.info(this.payService.getEntPayService().queryEntPay("11212121").toString()); this.logger.info(this.payService.getEntPayService().queryEntPay("11212121").toString());
} }


/**
* Test get public key.
*
* @throws Exception the exception
*/
@Test @Test
public void testGetPublicKey() throws Exception { public void testGetPublicKey() throws Exception {
this.logger.info(this.payService.getEntPayService().getPublicKey()); this.logger.info(this.payService.getEntPayService().getPublicKey());
} }


/**
* Test pay bank.
*
* @throws Exception the exception
*/
@Test @Test
public void testPayBank() throws Exception { public void testPayBank() throws Exception {
EntPayBankResult result = this.payService.getEntPayService().payBank(EntPayBankRequest.builder() EntPayBankResult result = this.payService.getEntPayService().payBank(EntPayBankRequest.builder()
@@ -65,6 +85,11 @@ public class EntPayServiceImplTest {
this.logger.info(result.toString()); this.logger.info(result.toString());
} }


/**
* Test query pay bank.
*
* @throws Exception the exception
*/
@Test @Test
public void testQueryPayBank() throws Exception { public void testQueryPayBank() throws Exception {
this.logger.info(this.payService.getEntPayService().queryPayBank("123").toString()); this.logger.info(this.payService.getEntPayService().queryPayBank("123").toString());


+ 3
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/testbase/ApiTestModule.java View File

@@ -14,6 +14,9 @@ import com.google.inject.Module;
import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.XStream;
import me.chanjar.weixin.common.util.xml.XStreamInitializer; import me.chanjar.weixin.common.util.xml.XStreamInitializer;


/**
* The type Api test module.
*/
public class ApiTestModule implements Module { public class ApiTestModule implements Module {
private final Logger log = LoggerFactory.getLogger(this.getClass()); private final Logger log = LoggerFactory.getLogger(this.getClass());
private static final String TEST_CONFIG_XML = "test-config.xml"; private static final String TEST_CONFIG_XML = "test-config.xml";


+ 13
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/testbase/XmlWxPayConfig.java View File

@@ -3,14 +3,27 @@ package com.github.binarywang.wxpay.testbase;
import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.config.WxPayConfig;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;


/**
* The type Xml wx pay config.
*/
@XStreamAlias("xml") @XStreamAlias("xml")
public class XmlWxPayConfig extends WxPayConfig { public class XmlWxPayConfig extends WxPayConfig {
private String openid; private String openid;


/**
* Gets openid.
*
* @return the openid
*/
public String getOpenid() { public String getOpenid() {
return openid; return openid;
} }


/**
* Sets openid.
*
* @param openid the openid
*/
public void setOpenid(String openid) { public void setOpenid(String openid) {
this.openid = openid; this.openid = openid;
} }


+ 15
- 0
weixin-java-pay/src/test/java/com/github/binarywang/wxpay/util/SignUtilsTest.java View File

@@ -17,6 +17,11 @@ import static org.testng.Assert.*;
* @author <a href="https://github.com/binarywang">Binary Wang</a> * @author <a href="https://github.com/binarywang">Binary Wang</a>
*/ */
public class SignUtilsTest { public class SignUtilsTest {
/**
* Test create sign.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateSign() throws Exception { public void testCreateSign() throws Exception {
String signKey = "192006250b4c09247ec02edce69f6a2d"; String signKey = "192006250b4c09247ec02edce69f6a2d";
@@ -25,6 +30,11 @@ public class SignUtilsTest {
"9A0A8659F005D6984697E2CA0A9CF3B7"); "9A0A8659F005D6984697E2CA0A9CF3B7");
} }


/**
* Test create sign hmacsha 256.
*
* @throws Exception the exception
*/
@Test @Test
public void testCreateSign_HMACSHA256() throws Exception { public void testCreateSign_HMACSHA256() throws Exception {
String signKey = "192006250b4c09247ec02edce69f6a2d"; String signKey = "192006250b4c09247ec02edce69f6a2d";
@@ -34,6 +44,11 @@ public class SignUtilsTest {
assertEquals(sign, "6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6"); assertEquals(sign, "6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6");
} }


/**
* Test check sign.
*
* @throws Exception the exception
*/
@Test @Test
public void testCheckSign() throws Exception { public void testCheckSign() throws Exception {
} }


Loading…
Cancel
Save