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 ffbbabd8e..a1dabfa05 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 @@ -13,6 +13,23 @@ import java.util.Map; */ public interface WxMpPayService { + /** + *
+ * 查询订单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2) + * 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。 + * 需要调用查询接口的情况: + ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; + ◆ 调用支付接口后,返回系统错误或未知交易状态情况; + ◆ 调用被扫支付API,返回USERPAYING的状态; + ◆ 调用关单或撤销接口API之前,需确认支付状态; + * 接口地址:https://api.mch.weixin.qq.com/pay/orderquery + *+ * @param transactionId 微信支付分配的商户号 + * @param outTradeNo 商户系统内部的订单号,当没提供transaction_id时需要传这个。 + * @throws WxErrorException + */ + WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxErrorException; + /** * 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1) * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" @@ -21,31 +38,21 @@ public interface WxMpPayService { * @param request 请求对象 * */ - WxUnifiedOrderResult unifiedOrder(WxUnifiedOrderRequest request) - throws WxErrorException; + WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request) throws WxErrorException; /** * 该接口调用“统一下单”接口,并拼装发起支付请求需要的参数 * 详见http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN * @param request 请求对象 */ - Map
@@ -57,7 +64,7 @@ public interface WxMpPayService {
* @param keyFile 证书文件对象
* @return 退款操作结果
*/
- WxMpPayRefundResult refund(WxMpPayRefundRequest request, File keyFile) throws WxErrorException;
+ WxPayRefundResult refund(WxPayRefundRequest request, File keyFile) throws WxErrorException;
/**
*
@@ -78,7 +85,7 @@ public interface WxMpPayService {
* @param request 请求对象
* @param keyFile 证书文件对象
*/
- WxRedpackResult sendRedpack(WxSendRedpackRequest request, File keyFile) throws WxErrorException;
+ WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request, File keyFile) throws WxErrorException;
/**
*
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 9745e22ce..8cb737c6f 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
@@ -46,64 +46,26 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
- public WxMpPayResult getJSSDKPayResult(String transactionId,
- String outTradeNo) throws WxErrorException {
- String nonce_str = System.currentTimeMillis() + "";
-
- SortedMap packageParams = new TreeMap<>();
- packageParams.put("appid",
- this.wxMpService.getWxMpConfigStorage().getAppId());
- packageParams.put("mch_id",
- this.wxMpService.getWxMpConfigStorage().getPartnerId());
-
- if (transactionId != null && !"".equals(transactionId.trim())) {
- packageParams.put("transaction_id", transactionId);
- } else if (outTradeNo != null && !"".equals(outTradeNo.trim())) {
- packageParams.put("out_trade_no", outTradeNo);
- } else {
- throw new IllegalArgumentException(
- "Either 'transactionId' or 'outTradeNo' must be given.");
- }
-
- packageParams.put("nonce_str", nonce_str);
- packageParams.put("sign", this.createSign(packageParams,
- this.wxMpService.getWxMpConfigStorage().getPartnerKey()));
-
- StringBuilder request = new StringBuilder("");
- for (Map.Entry para : packageParams.entrySet()) {
- request.append(String.format("<%s>%s%s>", para.getKey(),
- para.getValue(), para.getKey()));
- }
- request.append(" ");
-
- String url = PAY_BASE_URL + "/pay/orderquery";
- String responseContent = this.wxMpService.post(url, request.toString());
- XStream xstream = XStreamInitializer.getInstance();
- xstream.alias("xml", WxMpPayResult.class);
- return (WxMpPayResult) xstream.fromXML(responseContent);
- }
-
- @Override
- public WxMpPayCallback getJSSDKCallbackData(String xmlData) {
+ public WxPayJsSDKCallback getJSSDKCallbackData(String xmlData) {
try {
XStream xstream = XStreamInitializer.getInstance();
- xstream.alias("xml", WxMpPayCallback.class);
- return (WxMpPayCallback) xstream.fromXML(xmlData);
+ xstream.alias("xml", WxPayJsSDKCallback.class);
+ return (WxPayJsSDKCallback) xstream.fromXML(xmlData);
} catch (Exception e) {
e.printStackTrace();
}
- return new WxMpPayCallback();
+ return new WxPayJsSDKCallback();
}
@Override
- public WxMpPayRefundResult refund(WxMpPayRefundRequest request, File keyFile)
+ public WxPayRefundResult refund(WxPayRefundRequest request, File keyFile)
throws WxErrorException {
checkParameters(request);
XStream xstream = XStreamInitializer.getInstance();
- xstream.processAnnotations(WxMpPayRefundResult.class);
- xstream.processAnnotations(WxMpPayRefundRequest.class);
+ xstream.processAnnotations(WxPayRefundResult.class);
+ xstream.processAnnotations(WxPayRefundRequest.class);
request.setAppid(this.wxMpService.getWxMpConfigStorage().getAppId());
String partnerId = this.wxMpService.getWxMpConfigStorage().getPartnerId();
@@ -115,7 +77,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
String url = PAY_BASE_URL + "/secapi/pay/refund";
String responseContent = this.executeRequestWithKeyFile(url, keyFile, xstream.toXML(request), partnerId);
- WxMpPayRefundResult wxMpPayRefundResult = (WxMpPayRefundResult) xstream.fromXML(responseContent);
+ WxPayRefundResult wxMpPayRefundResult = (WxPayRefundResult) xstream.fromXML(responseContent);
if (!"SUCCESS".equalsIgnoreCase(wxMpPayRefundResult.getResultCode())
|| !"SUCCESS".equalsIgnoreCase(wxMpPayRefundResult.getReturnCode())) {
@@ -132,7 +94,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
return wxMpPayRefundResult;
}
- private void checkParameters(WxMpPayRefundRequest request) throws WxErrorException {
+ private void checkParameters(WxPayRefundRequest request) throws WxErrorException {
BeanUtils.checkRequiredFields(request);
if (StringUtils.isNotBlank(request.getRefundAccount())) {
@@ -154,11 +116,11 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
- public WxRedpackResult sendRedpack(WxSendRedpackRequest request, File keyFile)
+ public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request, File keyFile)
throws WxErrorException {
XStream xstream = XStreamInitializer.getInstance();
- xstream.processAnnotations(WxSendRedpackRequest.class);
- xstream.processAnnotations(WxRedpackResult.class);
+ xstream.processAnnotations(WxPaySendRedpackRequest.class);
+ xstream.processAnnotations(WxPaySendRedpackResult.class);
request.setWxAppid(this.wxMpService.getWxMpConfigStorage().getAppId());
String mchId = this.wxMpService.getWxMpConfigStorage().getPartnerId();
@@ -176,7 +138,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
String responseContent = this.executeRequestWithKeyFile(url, keyFile, xstream.toXML(request), mchId);
- WxRedpackResult redpackResult = (WxRedpackResult) xstream
+ WxPaySendRedpackResult redpackResult = (WxPaySendRedpackResult) xstream
.fromXML(responseContent);
if ("FAIL".equals(redpackResult.getResultCode())) {
throw new WxErrorException(WxError.newBuilder()
@@ -212,13 +174,49 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
- public WxUnifiedOrderResult unifiedOrder(WxUnifiedOrderRequest request)
+ public WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo) throws WxErrorException {
+ if ((StringUtils.isBlank(transactionId) && StringUtils.isBlank(outTradeNo)) ||
+ (StringUtils.isNotBlank(transactionId) && StringUtils.isNotBlank(outTradeNo))) {
+ throw new IllegalArgumentException("transaction_id 和 out_trade_no 不能同时存在或同时为空,必须二选一");
+ }
+
+ XStream xstream = XStreamInitializer.getInstance();
+ xstream.processAnnotations(WxPayOrderQueryRequest.class);
+ xstream.processAnnotations(WxPayOrderQueryResult.class);
+
+ WxPayOrderQueryRequest request = new WxPayOrderQueryRequest();
+ request.setOutTradeNo(StringUtils.trimToNull(outTradeNo));
+ request.setTransactionId(StringUtils.trimToNull(transactionId));
+ request.setAppid(this.wxMpService.getWxMpConfigStorage().getAppId());
+ request.setMchId(this.wxMpService.getWxMpConfigStorage().getPartnerId());
+ request.setNonceStr(System.currentTimeMillis() + "");
+
+ String sign = this.createSign(BeanUtils.xmlBean2Map(request),
+ this.wxMpService.getWxMpConfigStorage().getPartnerKey());
+ request.setSign(sign);
+
+ String url = PAY_BASE_URL + "/pay/orderquery";
+
+ String responseContent = this.wxMpService.post(url, xstream.toXML(request));
+ WxPayOrderQueryResult result = (WxPayOrderQueryResult) xstream.fromXML(responseContent);
+ result.composeCoupons(responseContent);
+ if ("FAIL".equals(result.getResultCode())) {
+ throw new WxErrorException(WxError.newBuilder()
+ .setErrorMsg(result.getErrCode() + ":" + result.getErrCodeDes())
+ .build());
+ }
+
+ return result;
+ }
+
+ @Override
+ public WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request)
throws WxErrorException {
checkParameters(request);
XStream xstream = XStreamInitializer.getInstance();
- xstream.processAnnotations(WxUnifiedOrderRequest.class);
- xstream.processAnnotations(WxUnifiedOrderResult.class);
+ xstream.processAnnotations(WxPayUnifiedOrderRequest.class);
+ xstream.processAnnotations(WxPayUnifiedOrderResult.class);
request.setAppid(this.wxMpService.getWxMpConfigStorage().getAppId());
request.setMchId(this.wxMpService.getWxMpConfigStorage().getPartnerId());
@@ -231,7 +229,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
String url = PAY_BASE_URL + "/pay/unifiedorder";
String responseContent = this.wxMpService.post(url, xstream.toXML(request));
- WxUnifiedOrderResult result = (WxUnifiedOrderResult) xstream
+ WxPayUnifiedOrderResult result = (WxPayUnifiedOrderResult) xstream
.fromXML(responseContent);
if ("FAIL".equals(result.getResultCode())) {
throw new WxErrorException(WxError.newBuilder()
@@ -242,7 +240,7 @@ public class WxMpPayServiceImpl implements WxMpPayService {
return result;
}
- private void checkParameters(WxUnifiedOrderRequest request) throws WxErrorException {
+ private void checkParameters(WxPayUnifiedOrderRequest request) throws WxErrorException {
BeanUtils.checkRequiredFields(request);
if (! ArrayUtils.contains(TRADE_TYPES, request.getTradeType())) {
@@ -259,8 +257,8 @@ public class WxMpPayServiceImpl implements WxMpPayService {
}
@Override
- public Map getPayInfo(WxUnifiedOrderRequest request) throws WxErrorException {
- WxUnifiedOrderResult unifiedOrderResult = this.unifiedOrder(request);
+ public Map getPayInfo(WxPayUnifiedOrderRequest request) throws WxErrorException {
+ WxPayUnifiedOrderResult unifiedOrderResult = this.unifiedOrder(request);
if (!"SUCCESS".equalsIgnoreCase(unifiedOrderResult.getReturnCode())
|| !"SUCCESS".equalsIgnoreCase(unifiedOrderResult.getResultCode())) {
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/WxEntPayQueryRequest.java
index c1f540a4d..512ac1594 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/WxEntPayQueryRequest.java
@@ -20,20 +20,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author binarywang (https://github.com/binarywang)
*/
@XStreamAlias("xml")
-public class WxEntPayQueryRequest {
- /**
- *
- * Appid
- * appid
- * 是
- * wxe062425f740d30d8
- * String(32)
- * 商户号的appid
- *
- */
- @XStreamAlias("appid")
- private String appid;
-
+public class WxEntPayQueryRequest extends WxPayBaseRequest {
/**
*
* 商户号
@@ -47,32 +34,6 @@ public class WxEntPayQueryRequest {
@XStreamAlias("mchid")
private String mchId;
- /**
- *
- * 随机字符串
- * nonce_str
- * 是
- * 5K8264ILTKCH16CQ2502SI8ZNMTM67VS
- * String(32)
- * 随机字符串,不长于32位
- *
- */
- @XStreamAlias("nonce_str")
- private String nonceStr;
-
- /**
- *
- * 签名
- * sign
- * 是
- * C380BEC2BFD727A4B6845133519F3AD6
- * String(32)
- *签名,详见签名算法
- *
- */
- @XStreamAlias("sign")
- private String sign;
-
/**
*
* 商户订单号
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/WxEntPayQueryResult.java
index 55659ca4d..382a88580 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/WxEntPayQueryResult.java
@@ -1,8 +1,6 @@
package me.chanjar.weixin.mp.bean.pay;
import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 企业付款查询返回结果
@@ -10,37 +8,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author binarywang (https://github.com/binarywang)
*/
@XStreamAlias("xml")
-public class WxEntPayQueryResult {
-
- /**
- * 返回状态码
- */
- @XStreamAlias("return_code")
- private String returnCode;
-
- /**
- * 返回信息
- */
- @XStreamAlias("return_msg")
- private String returnMsg;
-
- //############以下字段在return_code为SUCCESS的时候有返回
- /**
- * 业务结果
- */
- @XStreamAlias("result_code")
- private String resultCode;
- /**
- * 错误代码
- */
- @XStreamAlias("err_code")
- private String errCode;
-
- /**
- * 错误代码描述
- */
- @XStreamAlias("err_code_des")
- private String errCodeDes;
+public class WxEntPayQueryResult extends WxPayBaseResult {
//############以下字段在return_code 和result_code都为SUCCESS的时候有返回##############
/**
@@ -49,12 +17,6 @@ public class WxEntPayQueryResult {
@XStreamAlias("partner_trade_no")
private String partnerTradeNo;
- /**
- * 商户号
- */
- @XStreamAlias("mchid")
- private String mchId;
-
/**
* 付款单号
*/
@@ -103,11 +65,6 @@ public class WxEntPayQueryResult {
@XStreamAlias("desc")
private String desc;
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
-
public String getReturnCode() {
return returnCode;
}
@@ -124,30 +81,6 @@ public class WxEntPayQueryResult {
this.returnMsg = returnMsg;
}
- public String getResultCode() {
- return resultCode;
- }
-
- public void setResultCode(String resultCode) {
- this.resultCode = resultCode;
- }
-
- public String getErrCode() {
- return errCode;
- }
-
- public void setErrCode(String errCode) {
- this.errCode = errCode;
- }
-
- public String getErrCodeDes() {
- return errCodeDes;
- }
-
- public void setErrCodeDes(String errCodeDes) {
- this.errCodeDes = errCodeDes;
- }
-
public String getPartnerTradeNo() {
return partnerTradeNo;
}
@@ -156,14 +89,6 @@ public class WxEntPayQueryResult {
this.partnerTradeNo = partnerTradeNo;
}
- public String getMchId() {
- return mchId;
- }
-
- public void setMchId(String mchId) {
- this.mchId = mchId;
- }
-
public String getDetailId() {
return detailId;
}
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/WxEntPayResult.java
index 86c2c0105..07bac47b7 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/WxEntPayResult.java
@@ -1,8 +1,5 @@
package me.chanjar.weixin.mp.bean.pay;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
@@ -11,21 +8,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
* @author binarywang (https://github.com/binarywang)
*/
@XStreamAlias("xml")
-public class WxEntPayResult {
-
- /**
- * 返回状态码
- */
- @XStreamAlias("return_code")
- private String returnCode;
-
- /**
- * 返回信息
- */
- @XStreamAlias("return_msg")
- private String returnMsg;
-
- //############以下字段在return_code为SUCCESS的时候有返回
+public class WxEntPayResult extends WxPayBaseResult {
/**
* 商户appid
@@ -33,41 +16,12 @@ public class WxEntPayResult {
@XStreamAlias("mch_appid")
private String mchAppid;
- /**
- * 商户号
- */
- @XStreamAlias("mchid")
- private String mchId;
-
/**
* 设备号
*/
@XStreamAlias("device_info")
private String deviceInfo;
- /**
- * 随机字符串
- */
- @XStreamAlias("nonce_str")
- private String nonceStr;
-
- /**
- * 业务结果
- */
- @XStreamAlias("result_code")
- private String resultCode;
- /**
- * 错误代码
- */
- @XStreamAlias("err_code")
- private String errCode;
-
- /**
- * 错误代码描述
- */
- @XStreamAlias("err_code_des")
- private String errCodeDes;
-
//############以下字段在return_code 和result_code都为SUCCESS的时候有返回##############
/**
* 商户订单号
@@ -87,27 +41,6 @@ public class WxEntPayResult {
@XStreamAlias("payment_time")
private String paymentTime;
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
-
- public String getReturnCode() {
- return returnCode;
- }
-
- public void setReturnCode(String returnCode) {
- this.returnCode = returnCode;
- }
-
- public String getReturnMsg() {
- return returnMsg;
- }
-
- public void setReturnMsg(String returnMsg) {
- this.returnMsg = returnMsg;
- }
-
public String getMchAppid() {
return mchAppid;
}
@@ -116,14 +49,6 @@ public class WxEntPayResult {
this.mchAppid = mchAppid;
}
- public String getMchId() {
- return mchId;
- }
-
- public void setMchId(String mchId) {
- this.mchId = mchId;
- }
-
public String getDeviceInfo() {
return deviceInfo;
}
@@ -132,38 +57,6 @@ public class WxEntPayResult {
this.deviceInfo = deviceInfo;
}
- public String getNonceStr() {
- return nonceStr;
- }
-
- public void setNonceStr(String nonceStr) {
- this.nonceStr = nonceStr;
- }
-
- public String getResultCode() {
- return resultCode;
- }
-
- public void setResultCode(String resultCode) {
- this.resultCode = resultCode;
- }
-
- public String getErrCode() {
- return errCode;
- }
-
- public void setErrCode(String errCode) {
- this.errCode = errCode;
- }
-
- public String getErrCodeDes() {
- return errCodeDes;
- }
-
- public void setErrCodeDes(String errCodeDes) {
- this.errCodeDes = errCodeDes;
- }
-
public String getPartnerTradeNo() {
return partnerTradeNo;
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayResult.java
deleted file mode 100644
index 6f4532041..000000000
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayResult.java
+++ /dev/null
@@ -1,259 +0,0 @@
-package me.chanjar.weixin.mp.bean.pay;
-
-import java.io.Serializable;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- *
- * 查询订单支付状态返回的结果
- *
- * 查询订单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2)
- *
- *
- *
- * @author ukid
- */
-public class WxMpPayResult implements Serializable {
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
-
- private static final long serialVersionUID = -570934170727777190L;
-
- private String return_code;
- private String return_msg;
- private String appid;
- private String mch_id;
- private String nonce_str;
- private String sign;
- private String result_code;
- private String err_code;
- private String err_code_des;
- private String trade_state;
- private String trade_state_desc;
- private String device_info;
- private String openid;
- private String is_subscribe;
- private String trade_type;
- private String bank_type;
- private String total_fee;
- private String coupon_fee;
- private String fee_type;
- private String transaction_id;
- private String out_trade_no;
- private String attach;
- private String time_end;
- /**
- * 现金支付金额 cash_fee 是 Int 100 现金支付金额订单现金支付金额,详见支付金额
- */
- private String cash_fee;
-
- /**
- * 现金支付货币类型 cash_fee_type 否
- *
- */
- private String cash_fee_type;
-
- 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 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 getTrade_state() {
- return this.trade_state;
- }
-
- public String getDevice_info() {
- return this.device_info;
- }
-
- 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 getCoupon_fee() {
- return this.coupon_fee;
- }
-
- public String getFee_type() {
- return this.fee_type;
- }
-
- public String getTransaction_id() {
- return this.transaction_id;
- }
-
- public String getOut_trade_no() {
- return this.out_trade_no;
- }
-
- public String getAttach() {
- return this.attach;
- }
-
- public String getTime_end() {
- return this.time_end;
- }
-
- public void setReturn_code(String return_code) {
- this.return_code = return_code;
- }
-
- public void setReturn_msg(String return_msg) {
- this.return_msg = return_msg;
- }
-
- public void setAppid(String appid) {
- this.appid = appid;
- }
-
- public void setMch_id(String mch_id) {
- this.mch_id = mch_id;
- }
-
- 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 setTrade_state(String trade_state) {
- this.trade_state = trade_state;
- }
-
- public void setDevice_info(String device_info) {
- this.device_info = device_info;
- }
-
- 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 setCoupon_fee(String coupon_fee) {
- this.coupon_fee = coupon_fee;
- }
-
- public void setFee_type(String fee_type) {
- this.fee_type = fee_type;
- }
-
- 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;
- }
-
- public String getTrade_state_desc() {
- return this.trade_state_desc;
- }
-
- public void setTrade_state_desc(String trade_state_desc) {
- this.trade_state_desc = trade_state_desc;
- }
-
- 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;
- }
-}
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/WxPayBaseRequest.java
new file mode 100644
index 000000000..062152d8f
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseRequest.java
@@ -0,0 +1,107 @@
+package me.chanjar.weixin.mp.bean.pay;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ *
+ * Created by Binary Wang on 2016-10-24.
+ * 微信支付请求对象共用的参数存放类
+ * 注释中各行每个字段描述对应如下:
+ *
字段名
+ * 变量名
+ * 是否必填
+ * 类型
+ * 示例值
+ * 描述
+ *
+ * @author binarywang(Binary Wang)
+ */
+public abstract class WxPayBaseRequest {
+ /**
+ *
+ * 公众账号ID
+ * appid
+ * 是
+ * String(32)
+ * wxd678efh567hg6787
+ * 微信分配的公众账号ID(企业号corpid即为此appId)
+ *
+ */
+ @XStreamAlias("appid")
+ protected String appid;
+ /**
+ *
+ * 商户号
+ * mch_id
+ * 是
+ * String(32)
+ * 1230000109
+ * 微信支付分配的商户号
+ *
+ */
+ @XStreamAlias("mch_id")
+ protected String mchId;
+ /**
+ *
+ * 随机字符串
+ * nonce_str
+ * 是
+ * String(32)
+ * 5K8264ILTKCH16CQ2502SI8ZNMTM67VS
+ * 随机字符串,不长于32位。推荐随机数生成算法
+ *
+ */
+ @XStreamAlias("nonce_str")
+ protected String nonceStr;
+ /**
+ *
+ * 签名
+ * sign
+ * 是
+ * String(32)
+ * C380BEC2BFD727A4B6845133519F3AD6
+ * 签名,详见签名生成算法
+ *
+ */
+ @XStreamAlias("sign")
+ protected String sign;
+
+ public String getAppid() {
+ return appid;
+ }
+
+ public void setAppid(String appid) {
+ this.appid = appid;
+ }
+
+ public String getMchId() {
+ return mchId;
+ }
+
+ public void setMchId(String mchId) {
+ this.mchId = mchId;
+ }
+
+ public String getNonceStr() {
+ return nonceStr;
+ }
+
+ public void setNonceStr(String nonceStr) {
+ this.nonceStr = nonceStr;
+ }
+
+ public String getSign() {
+ return sign;
+ }
+
+ public void setSign(String sign) {
+ this.sign = sign;
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
+ }
+}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxUnifiedOrderResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseResult.java
similarity index 61%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxUnifiedOrderResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseResult.java
index 7dfc65986..cdec82738 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxUnifiedOrderResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayBaseResult.java
@@ -1,59 +1,78 @@
package me.chanjar.weixin.mp.bean.pay;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
/**
*
- * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"返回的结果
- * 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
+ * 微信支付结果共用属性类
+ * Created by Binary Wang on 2016-10-24.
+ * @author binarywang(Binary Wang)
*
- *
- * @author chanjarster
*/
-@XStreamAlias("xml")
-public class WxUnifiedOrderResult {
+public abstract class WxPayBaseResult {
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
+ }
+ /**
+ * 返回状态码
+ */
@XStreamAlias("return_code")
- private String returnCode;
+ protected String returnCode;
+ /**
+ * 返回信息
+ */
@XStreamAlias("return_msg")
- private String returnMsg;
-
- @XStreamAlias("appid")
- private String appid;
-
- @XStreamAlias("mch_id")
- private String mchId;
-
- @XStreamAlias("nonce_str")
- private String nonceStr;
-
- @XStreamAlias("sign")
- private String sign;
+ protected String returnMsg;
+ /**
+ * 业务结果
+ */
@XStreamAlias("result_code")
private String resultCode;
- @XStreamAlias("prepay_id")
- private String prepayId;
-
- @XStreamAlias("trade_type")
- private String tradeType;
-
+ /**
+ * 错误代码
+ */
@XStreamAlias("err_code")
private String errCode;
+ /**
+ * 错误代码描述
+ */
@XStreamAlias("err_code_des")
private String errCodeDes;
- @XStreamAlias("code_url")
- private String codeURL;
+ /**
+ * 公众账号ID
+ */
+ @XStreamAlias("appid")
+ private String appid;
+
+ /**
+ * 商户号
+ */
+ @XStreamAlias("mch_id")
+ private String mchId;
+
+ /**
+ * 随机字符串
+ */
+ @XStreamAlias("nonce_str")
+ private String nonceStr;
+
+ /**
+ * 签名
+ */
+ @XStreamAlias("sign")
+ private String sign;
public String getReturnCode() {
- return this.returnCode;
+ return returnCode;
}
public void setReturnCode(String returnCode) {
@@ -61,71 +80,23 @@ public class WxUnifiedOrderResult {
}
public String getReturnMsg() {
- return this.returnMsg;
+ return returnMsg;
}
public void setReturnMsg(String returnMsg) {
this.returnMsg = returnMsg;
}
- public String getAppid() {
- return this.appid;
- }
-
- public void setAppid(String appid) {
- this.appid = appid;
- }
-
- public String getMchId() {
- return this.mchId;
- }
-
- public void setMchId(String mchId) {
- this.mchId = mchId;
- }
-
- public String getNonceStr() {
- return this.nonceStr;
- }
-
- public void setNonceStr(String nonceStr) {
- this.nonceStr = nonceStr;
- }
-
- public String getSign() {
- return this.sign;
- }
-
- public void setSign(String sign) {
- this.sign = sign;
- }
-
public String getResultCode() {
- return this.resultCode;
+ return resultCode;
}
public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}
- public String getPrepayId() {
- return this.prepayId;
- }
-
- public void setPrepayId(String prepayId) {
- this.prepayId = prepayId;
- }
-
- public String getTradeType() {
- return this.tradeType;
- }
-
- public void setTradeType(String tradeType) {
- this.tradeType = tradeType;
- }
-
public String getErrCode() {
- return this.errCode;
+ return errCode;
}
public void setErrCode(String errCode) {
@@ -133,23 +104,42 @@ public class WxUnifiedOrderResult {
}
public String getErrCodeDes() {
- return this.errCodeDes;
+ return errCodeDes;
}
public void setErrCodeDes(String errCodeDes) {
this.errCodeDes = errCodeDes;
}
- public String getCodeURL() {
- return this.codeURL;
+ public String getAppid() {
+ return appid;
}
- public void setCodeURL(String codeURL) {
- this.codeURL = codeURL;
+ public void setAppid(String appid) {
+ this.appid = appid;
}
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
+ public String getMchId() {
+ return mchId;
+ }
+
+ public void setMchId(String mchId) {
+ this.mchId = mchId;
+ }
+
+ public String getNonceStr() {
+ return nonceStr;
+ }
+
+ public void setNonceStr(String nonceStr) {
+ this.nonceStr = nonceStr;
+ }
+
+ public String getSign() {
+ return sign;
+ }
+
+ public void setSign(String sign) {
+ this.sign = sign;
}
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayCallback.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java
similarity index 97%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayCallback.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java
index e32e721e5..11b8b0d54 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayCallback.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayJsSDKCallback.java
@@ -4,16 +4,16 @@ import java.io.Serializable;
/**
* pre> 订单支付状态回调
- *
+ *
* 支付结果通知(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7)
*
* /pre>
*
* @author ukid
*/
-public class WxMpPayCallback implements Serializable {
+public class WxPayJsSDKCallback implements Serializable {
/**
- *
+ *
*/
private static final long serialVersionUID = -4143804055690843641L;
private String return_code;
@@ -263,7 +263,7 @@ public class WxMpPayCallback implements Serializable {
@Override
public String toString() {
- return "WxMpPayCallback [return_code=" + this.return_code + ", return_msg="
+ 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
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/WxPayOrderQueryRequest.java
new file mode 100644
index 000000000..ede1b06a5
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryRequest.java
@@ -0,0 +1,63 @@
+package me.chanjar.weixin.mp.bean.pay;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+/**
+ *
+ * 订单查询请求对象
+ * Created by Binary Wang on 2016-10-24.
+ * 注释中各行每个字段描述对应如下:
+ *
+ * 微信订单号 + * transaction_id + * 二选一 + * String(32) + * 1009660380201506130728806387 + * 微信的订单号,优先使用 + *+ */ + @XStreamAlias("transaction_id") + private String transactionId; + + /** + *
+ * 商户订单号 + * out_trade_no + * 二选一 + * String(32) + * 20150806125346 + * 商户系统内部的订单号,当没提供transaction_id时需要传这个。 + *+ */ + @XStreamAlias("out_trade_no") + private String outTradeNo; + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getOutTradeNo() { + return outTradeNo; + } + + public void setOutTradeNo(String outTradeNo) { + this.outTradeNo = outTradeNo; + } +} 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/WxPayOrderQueryResult.java new file mode 100644 index 000000000..25dc6cc8b --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayOrderQueryResult.java @@ -0,0 +1,444 @@ +package me.chanjar.weixin.mp.bean.pay; + +import com.google.common.collect.Lists; +import com.thoughtworks.xstream.annotations.XStreamAlias; + +import java.util.List; + +/** + *
+ * 查询订单 返回结果对象 + * Created by Binary Wang on 2016-10-24. + * 注释中各行每个字段描述对应如下: + *
设备号 + * device_info + * 否 + * String(32) + * 013467007045764 + * 微信支付分配的终端设备号, + *+ */ + @XStreamAlias("device_info") + private String deviceInfo; + + /** + *
用户标识 + * openid + * 是 + * String(128) + * oUpF8uMuAJO_M2pxb1Q9zNjWeS6o + * 用户在商户appid下的唯一标识 + *+ */ + @XStreamAlias("openid") + private String openid; + + /** + *
是否关注公众账号 + * is_subscribe + * 否 + * String(1) + * Y + * 用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效 + *+ */ + @XStreamAlias("is_subscribe") + private String isSubscribe; + + /** + *
交易类型 + * trade_type + * 是 + * String(16) + * JSAPI + * 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,MICROPAY,详细说明见参数规定 + *+ */ + @XStreamAlias("trade_type") + private String tradeType; + + /** + *
交易状态 + * trade_state + * 是 + * String(32) + * SUCCESS + * SUCCESS—支付成功,REFUND—转入退款,NOTPAY—未支付,CLOSED—已关闭,REVOKED—已撤销(刷卡支付),USERPAYING--用户支付中,PAYERROR--支付失败(其他原因,如银行返回失败) + *+ */ + @XStreamAlias("trade_state") + private String tradeState; + + /** + *
付款银行 + * bank_type + * 是 + * String(16) + * CMC + * 银行类型,采用字符串类型的银行标识 + *+ */ + @XStreamAlias("bank_type") + private String bankType; + + /** + *
订单金额 + * total_fee + * 是 + * Int + * 100 + * 订单总金额,单位为分 + *+ */ + @XStreamAlias("total_fee") + private Integer totalFee; + + /** + *
应结订单金额 + * settlement_total_fee + * 否 + * Int + * 100 + * 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。 + *+ */ + @XStreamAlias("settlement_total_fee") + private Integer settlementTotalFee; + + /** + *
货币种类 + * fee_type + * 否 + * String(8) + * CNY + * 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 + *+ */ + @XStreamAlias("fee_type") + private String feeType; + + /** + *
现金支付金额 + * cash_fee + * 是 + * Int + * 100 + * 现金支付金额订单现金支付金额,详见支付金额 + *+ */ + @XStreamAlias("cash_fee") + private Integer cashFee; + + /** + *
现金支付货币类型 + * cash_fee_type + * 否 + * String(16) + * CNY + * 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 + *+ */ + @XStreamAlias("cash_fee_type") + private String cashFeeType; + + /** + *
代金券金额 + * coupon_fee + * 否 + * Int + * 100 + * “代金券”金额<=订单金额,订单金额-“代金券”金额=现金支付金额,详见支付金额 + *+ */ + @XStreamAlias("coupon_fee") + private Integer couponFee; + + /** + *
代金券使用数量 + * coupon_count + * 否 + * Int + * 1 + * 代金券使用数量 + *+ */ + @XStreamAlias("coupon_count") + private Integer couponCount; + + private List
代金券类型 + * coupon_type_$n + * 否 + * String + * CASH + *
代金券ID + * coupon_id_$n + * 否 + * String(20) + * 10000 + * 代金券ID, $n为下标,从0开始编号 + *+ */ + private String couponId; + + /** + *
单个代金券支付金额 + * coupon_fee_$n + * 否 + * Int + * 100 + * 单个代金券支付金额, $n为下标,从0开始编号 + *+ */ + private Integer couponFee; + + public Coupon(String couponType, String couponId, Integer couponFee) { + this.couponType = couponType; + this.couponId = couponId; + this.couponFee = couponFee; + } + } + + /** + *
微信支付订单号 + * transaction_id + * 是 + * String(32) + * 1009660380201506130728806387 + * 微信支付订单号 + *+ */ + @XStreamAlias("transaction_id") + private String transactionId; + + /** + *
商户订单号 + * out_trade_no + * 是 + * String(32) + * 20150806125346 + * 商户系统的订单号,与请求一致。 + *+ */ + @XStreamAlias("out_trade_no") + private String outTradeNo; + + /** + *
附加数据 + * attach + * 否 + * String(128) + * 深圳分店 + * 附加数据,原样返回 + *+ */ + @XStreamAlias("attach") + private String attach; + + /** + *
支付完成时间 + * time_end + * 是 + * String(14) + * 20141030133525 + * 订单支付时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则 + *+ */ + @XStreamAlias("time_end") + private String timeEnd; + + /** + *
交易状态描述 + * trade_state_desc + * 是 + * String(256) + * 支付失败,请重新下单支付 + * 对当前查询订单状态的描述和下一步操作的指引 + *+ */ + @XStreamAlias("trade_state_desc") + private String tradeStateDesc; + + public String getDeviceInfo() { + return deviceInfo; + } + + public void setDeviceInfo(String deviceInfo) { + this.deviceInfo = deviceInfo; + } + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } + + public String getIsSubscribe() { + return isSubscribe; + } + + public void setIsSubscribe(String isSubscribe) { + this.isSubscribe = isSubscribe; + } + + public String getTradeType() { + return tradeType; + } + + public void setTradeType(String tradeType) { + this.tradeType = tradeType; + } + + public String getTradeState() { + return tradeState; + } + + public void setTradeState(String tradeState) { + this.tradeState = tradeState; + } + + public String getBankType() { + return bankType; + } + + public void setBankType(String bankType) { + this.bankType = bankType; + } + + public Integer getTotalFee() { + return totalFee; + } + + public void setTotalFee(Integer totalFee) { + this.totalFee = totalFee; + } + + public Integer getSettlementTotalFee() { + return settlementTotalFee; + } + + public void setSettlementTotalFee(Integer settlementTotalFee) { + this.settlementTotalFee = settlementTotalFee; + } + + public String getFeeType() { + return feeType; + } + + public void setFeeType(String feeType) { + this.feeType = feeType; + } + + public Integer getCashFee() { + return cashFee; + } + + public void setCashFee(Integer cashFee) { + this.cashFee = cashFee; + } + + public String getCashFeeType() { + return cashFeeType; + } + + public void setCashFeeType(String cashFeeType) { + this.cashFeeType = cashFeeType; + } + + public Integer getCouponFee() { + return couponFee; + } + + public void setCouponFee(Integer couponFee) { + this.couponFee = couponFee; + } + + public Integer getCouponCount() { + return couponCount; + } + + public void setCouponCount(Integer couponCount) { + this.couponCount = couponCount; + } + + public List
* 公众账号ID
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayRefundResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundResult.java
similarity index 68%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayRefundResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundResult.java
index 5462d44af..ad20b8f11 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxMpPayRefundResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayRefundResult.java
@@ -1,8 +1,6 @@
package me.chanjar.weixin.mp.bean.pay;
import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
import java.io.Serializable;
@@ -15,39 +13,12 @@ import java.io.Serializable;
*
*/
@XStreamAlias("xml")
-public class WxMpPayRefundResult implements Serializable {
+public class WxPayRefundResult extends WxPayBaseResult implements Serializable{
private static final long serialVersionUID = 1L;
- @XStreamAlias("return_code")
- private String returnCode;
-
- @XStreamAlias("return_msg")
- private String returnMsg;
-
- @XStreamAlias("result_code")
- private String resultCode;
-
- @XStreamAlias("err_code")
- private String errCode;
-
- @XStreamAlias("err_code_des")
- private String errCodeDes;
-
- @XStreamAlias("appid")
- private String appid;
-
- @XStreamAlias("mch_id")
- private String mchId;
-
@XStreamAlias("device_info")
private String deviceInfo;
- @XStreamAlias("nonce_str")
- private String nonceStr;
-
- @XStreamAlias("sign")
- private String sign;
-
@XStreamAlias("transaction_id")
private String transactionId;
@@ -103,46 +74,6 @@ public class WxMpPayRefundResult implements Serializable {
this.returnMsg = returnMsg;
}
- public String getResultCode() {
- return this.resultCode;
- }
-
- public void setResultCode(String resultCode) {
- this.resultCode = resultCode;
- }
-
- public String getErrCode() {
- return this.errCode;
- }
-
- public void setErrCode(String errCode) {
- this.errCode = errCode;
- }
-
- public String getErrCodeDes() {
- return this.errCodeDes;
- }
-
- public void setErrCodeDes(String errCodeDes) {
- this.errCodeDes = errCodeDes;
- }
-
- public String getAppid() {
- return this.appid;
- }
-
- public void setAppid(String appid) {
- this.appid = appid;
- }
-
- public String getMchId() {
- return this.mchId;
- }
-
- public void setMchId(String mchId) {
- this.mchId = mchId;
- }
-
public String getDeviceInfo() {
return this.deviceInfo;
}
@@ -151,22 +82,6 @@ public class WxMpPayRefundResult implements Serializable {
this.deviceInfo = deviceInfo;
}
- public String getNonceStr() {
- return this.nonceStr;
- }
-
- public void setNonceStr(String nonceStr) {
- this.nonceStr = nonceStr;
- }
-
- public String getSign() {
- return this.sign;
- }
-
- public void setSign(String sign) {
- this.sign = sign;
- }
-
public String getTransactionId() {
return this.transactionId;
}
@@ -271,9 +186,4 @@ public class WxMpPayRefundResult implements Serializable {
this.couponRefundId = couponRefundId;
}
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
-
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxSendRedpackRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackRequest.java
similarity index 96%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxSendRedpackRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackRequest.java
index abe0d68f9..27a46a71f 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxSendRedpackRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackRequest.java
@@ -8,7 +8,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
* @author binarywang (https://github.com/binarywang)
*/
@XStreamAlias("xml")
-public class WxSendRedpackRequest {
+public class WxPaySendRedpackRequest {
/**
* mch_billno
* 商户订单号(每个订单号必须唯一) 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。 接口根据商户订单号支持重入,如出现超时可再调用。
@@ -18,7 +18,7 @@ public class WxSendRedpackRequest {
/**
* send_name
- * 商户名称
+ * 商户名称
* 红包发送者名称
*/
@XStreamAlias("send_name")
@@ -117,7 +117,7 @@ public class WxSendRedpackRequest {
* 场景id
* PRODUCT_1:商品促销
* PRODUCT_2:抽奖
- * PRODUCT_3:虚拟物品兑奖
+ * PRODUCT_3:虚拟物品兑奖
* PRODUCT_4:企业内部福利
* PRODUCT_5:渠道分润
* PRODUCT_6:保险回馈
@@ -135,7 +135,7 @@ public class WxSendRedpackRequest {
* 活动信息
* posttime:用户操作的时间戳
* mobile:业务系统账号的手机号,国家代码-手机号。不需要+号
- * deviceid :mac 地址或者设备唯一标识
+ * deviceid :mac 地址或者设备唯一标识
* clientversion :用户操作的客户端版本
* 把值为非空的信息用key=value进行拼接,再进行urlencode
* urlencode(posttime=xx&mobile=xx&deviceid=xx)
@@ -150,7 +150,7 @@ public class WxSendRedpackRequest {
* consume_mch_id
* 资金授权商户号
* 资金授权商户号
- * 服务商替特约商户发放时使用
+ * 服务商替特约商户发放时使用
* 非必填字段
*
*/
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/WxPaySendRedpackResult.java
new file mode 100644
index 000000000..4a5ab1468
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPaySendRedpackResult.java
@@ -0,0 +1,82 @@
+package me.chanjar.weixin.mp.bean.pay;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+import java.io.Serializable;
+
+/**
+ * 向微信用户个人发现金红包返回结果
+ * https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5
+ * @author kane
+ *
+ */
+@XStreamAlias("xml")
+public class WxPaySendRedpackResult extends WxPayBaseResult implements Serializable {
+ private static final long serialVersionUID = -4837415036337132073L;
+
+ @XStreamAlias("mch_billno")
+ private String mchBillno;
+
+ @XStreamAlias("wxappid")
+ private String wxappid;
+
+ @XStreamAlias("re_openid")
+ private String reOpenid;
+
+ @XStreamAlias("total_amount")
+ private int totalAmount;
+
+ @XStreamAlias("send_time")
+ private String sendTime;
+
+ @XStreamAlias("send_listid")
+ private String sendListid;
+
+ public String getMchBillno() {
+ return mchBillno;
+ }
+
+ public void setMchBillno(String mchBillno) {
+ this.mchBillno = mchBillno;
+ }
+
+ public String getWxappid() {
+ return wxappid;
+ }
+
+ public void setWxappid(String wxappid) {
+ this.wxappid = wxappid;
+ }
+
+ public String getReOpenid() {
+ return reOpenid;
+ }
+
+ public void setReOpenid(String reOpenid) {
+ this.reOpenid = reOpenid;
+ }
+
+ public int getTotalAmount() {
+ return totalAmount;
+ }
+
+ public void setTotalAmount(int totalAmount) {
+ this.totalAmount = totalAmount;
+ }
+
+ public String getSendTime() {
+ return sendTime;
+ }
+
+ public void setSendTime(String sendTime) {
+ this.sendTime = sendTime;
+ }
+
+ public String getSendListid() {
+ return sendListid;
+ }
+
+ public void setSendListid(String sendListid) {
+ this.sendListid = sendListid;
+ }
+}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxUnifiedOrderRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderRequest.java
similarity index 91%
rename from weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxUnifiedOrderRequest.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderRequest.java
index 7cadd2464..de3518ae8 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxUnifiedOrderRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderRequest.java
@@ -1,10 +1,6 @@
package me.chanjar.weixin.mp.bean.pay;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
import com.thoughtworks.xstream.annotations.XStreamAlias;
-
import me.chanjar.weixin.common.annotation.Required;
/**
@@ -23,33 +19,7 @@ import me.chanjar.weixin.common.annotation.Required;
* @author binarywang (https://github.com/binarywang)
*/
@XStreamAlias("xml")
-public class WxUnifiedOrderRequest {
-
- /**
- * - * 公众账号ID - * appid - * 是 - * String(32) - * wxd678efh567hg6787 - * 微信分配的公众账号ID(企业号corpid即为此appId) - *- */ - @XStreamAlias("appid") - private String appid; - - /** - *
- * 商户号 - * mch_id - * 是 - * String(32) - * 1230000109 - * 微信支付分配的商户号 - *- */ - @XStreamAlias("mch_id") - private String mchId; +public class WxPayUnifiedOrderRequest extends WxPayBaseRequest { /** *
@@ -64,32 +34,6 @@ public class WxUnifiedOrderRequest {
@XStreamAlias("device_info")
private String deviceInfo;
- /**
- *
- * 随机字符串
- * nonce_str
- * 是
- * String(32)
- * 5K8264ILTKCH16CQ2502SI8ZNMTM67VS
- * 随机字符串,不长于32位。推荐随机数生成算法
- *
- */
- @XStreamAlias("nonce_str")
- private String nonceStr;
-
- /**
- *
- * 签名
- * sign
- * 是
- * String(32)
- * C380BEC2BFD727A4B6845133519F3AD6
- * 签名,详见签名生成算法
- *
- */
- @XStreamAlias("sign")
- private String sign;
-
/**
*
* 商品描述
@@ -482,11 +426,6 @@ public class WxUnifiedOrderRequest {
this.openid = openid;
}
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
-
public static WxUnifiedOrderRequestBuilder builder() {
return new WxUnifiedOrderRequestBuilder();
}
@@ -613,7 +552,7 @@ public class WxUnifiedOrderRequest {
return this;
}
- public WxUnifiedOrderRequestBuilder from(WxUnifiedOrderRequest origin) {
+ public WxUnifiedOrderRequestBuilder from(WxPayUnifiedOrderRequest origin) {
this.appid(origin.appid);
this.mchId(origin.mchId);
this.deviceInfo(origin.deviceInfo);
@@ -637,8 +576,8 @@ public class WxUnifiedOrderRequest {
return this;
}
- public WxUnifiedOrderRequest build() {
- WxUnifiedOrderRequest m = new WxUnifiedOrderRequest();
+ public WxPayUnifiedOrderRequest build() {
+ WxPayUnifiedOrderRequest m = new WxPayUnifiedOrderRequest();
m.appid = this.appid;
m.mchId = this.mchId;
m.deviceInfo = this.deviceInfo;
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/WxPayUnifiedOrderResult.java
new file mode 100644
index 000000000..012da5a43
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxPayUnifiedOrderResult.java
@@ -0,0 +1,48 @@
+package me.chanjar.weixin.mp.bean.pay;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+/**
+ *
+ * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"返回的结果
+ * 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
+ *
+ *
+ * @author chanjarster
+ */
+@XStreamAlias("xml")
+public class WxPayUnifiedOrderResult extends WxPayBaseResult {
+
+ @XStreamAlias("prepay_id")
+ private String prepayId;
+
+ @XStreamAlias("trade_type")
+ private String tradeType;
+
+ @XStreamAlias("code_url")
+ private String codeURL;
+
+ public String getPrepayId() {
+ return this.prepayId;
+ }
+
+ public void setPrepayId(String prepayId) {
+ this.prepayId = prepayId;
+ }
+
+ public String getTradeType() {
+ return this.tradeType;
+ }
+
+ public void setTradeType(String tradeType) {
+ this.tradeType = tradeType;
+ }
+
+ public String getCodeURL() {
+ return this.codeURL;
+ }
+
+ public void setCodeURL(String codeURL) {
+ this.codeURL = codeURL;
+ }
+}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxRedpackResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxRedpackResult.java
deleted file mode 100644
index a8287be66..000000000
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/WxRedpackResult.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package me.chanjar.weixin.mp.bean.pay;
-
-import java.io.Serializable;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-/**
- * 向微信用户个人发现金红包返回结果
- * https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5
- * @author kane
- *
- */
-@XStreamAlias("xml")
-public class WxRedpackResult implements Serializable {
-
- private static final long serialVersionUID = -4837415036337132073L;
-
- @XStreamAlias("return_code")
- private String returnCode;
- @XStreamAlias("return_msg")
- private String returnMsg;
- @XStreamAlias("sign")
- private String sign;
- @XStreamAlias("result_code")
- private String resultCode;
-
- @XStreamAlias("err_code")
- private String errCode;
- @XStreamAlias("err_code_des")
- private String errCodeDes;
- @XStreamAlias("mch_billno")
- private String mchBillno;
- @XStreamAlias("mch_id")
- private String mchId;
- @XStreamAlias("wxappid")
- private String wxappid;
- @XStreamAlias("re_openid")
- private String reOpenid;
- @XStreamAlias("total_amount")
- private int totalAmount;
- @XStreamAlias("send_time")
- private String sendTime;
- @XStreamAlias("send_listid")
- private String sendListid;
-
- public String getErrCode() {
- return this.errCode;
- }
-
- public String getErrCodeDes() {
- return this.errCodeDes;
- }
-
- public String getReturnCode() {
- return this.returnCode;
- }
-
- public String getReturnMsg() {
- return this.returnMsg;
- }
-
- public String getSign() {
- return this.sign;
- }
-
- public String getResultCode() {
- return this.resultCode;
- }
-
- public String getMchBillno() {
- return this.mchBillno;
- }
-
- public String getMchId() {
- return this.mchId;
- }
-
- public String getWxappid() {
- return this.wxappid;
- }
-
- public String getReOpenid() {
- return this.reOpenid;
- }
-
- public int getTotalAmount() {
- return this.totalAmount;
- }
-
- public String getSendTime() {
- return this.sendTime;
- }
-
- public String getSendListid() {
- return this.sendListid;
- }
-
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
-}
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 17cf5eec8..51414e1b3 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
@@ -27,11 +27,6 @@ public class WxMpPayServiceImplTest {
}
- @Test
- public void testGetJSSDKPayResult() throws Exception {
-
- }
-
@Test
public void testGetJSSDKCallbackData() throws Exception {
@@ -39,13 +34,13 @@ public class WxMpPayServiceImplTest {
@Test
public void testRefund() throws Exception {
- WxMpPayRefundRequest request = new WxMpPayRefundRequest();
+ WxPayRefundRequest request = new WxPayRefundRequest();
request.setOutRefundNo("aaa");
request.setOutTradeNo("1111");
request.setTotalFee(1222);
request.setRefundFee(111);
File keyFile = new File("E:\\dlt.p12");
- WxMpPayRefundResult result = this.wxService.getPayService().refund(request, keyFile);
+ WxPayRefundResult result = this.wxService.getPayService().refund(request, keyFile);
System.err.println(result);
}
@@ -56,30 +51,41 @@ public class WxMpPayServiceImplTest {
@Test
public void testSendRedpack() throws Exception {
- WxSendRedpackRequest request = new WxSendRedpackRequest();
+ WxPaySendRedpackRequest request = new WxPaySendRedpackRequest();
request.setActName("abc");
request.setClientIp("aaa");
request.setMchBillno("aaaa");
request
.setReOpenid(((WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage()).getOpenid());
File keyFile = new File("E:\\dlt.p12");
- WxRedpackResult redpackResult = this.wxService.getPayService().sendRedpack(request, keyFile);
+ WxPaySendRedpackResult redpackResult = this.wxService.getPayService().sendRedpack(request, keyFile);
System.err.println(redpackResult);
}
/**
- * Test method for {@link me.chanjar.weixin.mp.api.impl.WxMpPayServiceImpl#unifiedOrder(me.chanjar.weixin.mp.bean.pay.WxUnifiedOrderRequest)}.
+ * Test method for {@link me.chanjar.weixin.mp.api.impl.WxMpPayServiceImpl#unifiedOrder(WxPayUnifiedOrderRequest)}.
* @throws WxErrorException
*/
@Test
public void testUnifiedOrder() throws WxErrorException {
- WxUnifiedOrderResult result = this.wxService.getPayService()
- .unifiedOrder(WxUnifiedOrderRequest.builder().body("1111111")
+ WxPayUnifiedOrderResult result = this.wxService.getPayService()
+ .unifiedOrder(WxPayUnifiedOrderRequest.builder().body("1111111")
.totalFee(1).spbillCreateIp("111111").notifyURL("111111")
.tradeType("JSAPI").openid("122").outTradeNo("111111").build());
System.err.println(result);
}
+ /**
+ * Test method for {@link me.chanjar.weixin.mp.api.impl.WxMpPayServiceImpl#queryOrder(String, String)} .
+ * @throws WxErrorException
+ */
+ @Test
+ public final void testQueryOrder() throws WxErrorException {
+ //System.err.println(this.wxService.getPayService().queryOrder(null, null));
+ System.err.println(this.wxService.getPayService().queryOrder("11212121", null));
+ System.err.println(this.wxService.getPayService().queryOrder(null, "11111"));
+ }
+
/**
* Test method for {@link me.chanjar.weixin.mp.api.impl.WxMpPayServiceImpl#entPay(WxEntPayRequest, File)}.
* @throws WxErrorException
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/WxRedpackResultTest.java
index 5a5275d48..557065cae 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/WxRedpackResultTest.java
@@ -8,7 +8,7 @@ import org.junit.Test;
import com.thoughtworks.xstream.XStream;
import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.mp.bean.pay.WxRedpackResult;
+import me.chanjar.weixin.mp.bean.pay.WxPaySendRedpackResult;
public class WxRedpackResultTest {
@@ -17,44 +17,44 @@ public class WxRedpackResultTest {
@Before
public void setup() {
this.xstream = XStreamInitializer.getInstance();
- this.xstream.processAnnotations(WxRedpackResult.class);
+ this.xstream.processAnnotations(WxPaySendRedpackResult.class);
}
-
+
@Test public void loadSuccessResult() {
- final String successSample = "\n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- "10010404 \n" +
- " \n" +
- " \n" +
- "1 \n" +
- "100000000020150520314766074200 \n" +
- "20150520102602 \n" +
+ final String successSample = "\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ "10010404 \n" +
+ " \n" +
+ " \n" +
+ "1 \n" +
+ "100000000020150520314766074200 \n" +
+ "20150520102602 \n" +
" ";
- WxRedpackResult wxMpRedpackResult = (WxRedpackResult) this.xstream.fromXML(successSample);
+ WxPaySendRedpackResult wxMpRedpackResult = (WxPaySendRedpackResult) this.xstream.fromXML(successSample);
assertEquals("SUCCESS", wxMpRedpackResult.getReturnCode());
assertEquals("SUCCESS", wxMpRedpackResult.getResultCode());
assertEquals("20150520102602", wxMpRedpackResult.getSendTime());
}
-
+
@Test public void loadFailureResult() {
- final String failureSample = "\n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- "10010404 \n" +
- " \n" +
- " \n" +
- "1 \n" +
+ final String failureSample = "\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ "10010404 \n" +
+ " \n" +
+ " \n" +
+ "1 \n" +
" ";
- WxRedpackResult wxMpRedpackResult = (WxRedpackResult) this.xstream.fromXML(failureSample);
+ WxPaySendRedpackResult wxMpRedpackResult = (WxPaySendRedpackResult) this.xstream.fromXML(failureSample);
assertEquals("FAIL", wxMpRedpackResult.getReturnCode());
assertEquals("FAIL", wxMpRedpackResult.getResultCode());
assertEquals("onqOjjmM1tad-3ROpncN-yUfa6uI", wxMpRedpackResult.getReOpenid());