weixin4j-base:主要调整退款相关类与官网一致
This commit is contained in:
parent
57669927a7
commit
42a3fc357e
@ -731,4 +731,8 @@
|
|||||||
|
|
||||||
* 2016-07-21
|
* 2016-07-21
|
||||||
|
|
||||||
+ 新增MessageConverter
|
+ weixin4j-base:新增MessageConverter
|
||||||
|
|
||||||
|
* 2016-07-22
|
||||||
|
|
||||||
|
+ weixin4j-base:主要调整退款相关类与官网一致
|
||||||
@ -729,10 +729,10 @@ public class PayApi extends MchApi {
|
|||||||
* @throws WeixinException
|
* @throws WeixinException
|
||||||
* @see <a href=
|
* @see <a href=
|
||||||
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_8">
|
* "http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_8">
|
||||||
* 接口测试上报API</a>
|
* 交易保障</a>
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public XmlResult interfaceReport(String interfaceUrl, int executeTime,
|
public XmlResult reportInterface(String interfaceUrl, int executeTime,
|
||||||
String outTradeNo, String ip, Date time, XmlResult returnXml)
|
String outTradeNo, String ip, Date time, XmlResult returnXml)
|
||||||
throws WeixinException {
|
throws WeixinException {
|
||||||
Map<String, String> map = createBaseRequestMap(null);
|
Map<String, String> map = createBaseRequestMap(null);
|
||||||
|
|||||||
@ -97,7 +97,7 @@ public class MimeType implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* reference of apache Spring Web
|
* reference of Spring Web
|
||||||
*/
|
*/
|
||||||
public boolean includes(MimeType other) {
|
public boolean includes(MimeType other) {
|
||||||
if (other == null) {
|
if (other == null) {
|
||||||
|
|||||||
@ -12,8 +12,7 @@ import com.foxinmy.weixin4j.http.MimeType;
|
|||||||
* @className MessageConverter
|
* @className MessageConverter
|
||||||
* @author jinyu
|
* @author jinyu
|
||||||
* @date Jul 20, 2016
|
* @date Jul 20, 2016
|
||||||
* @since JDK 1.8
|
* @since JDK 1.6
|
||||||
* @see
|
|
||||||
*/
|
*/
|
||||||
public interface MessageConverter {
|
public interface MessageConverter {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.foxinmy.weixin4j.http.message;
|
package com.foxinmy.weixin4j.http.message;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
@ -18,10 +20,22 @@ import com.alibaba.fastjson.annotation.JSONField;
|
|||||||
*/
|
*/
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class XmlResult extends ApiResult {
|
public class XmlResult implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -6185313616955051150L;
|
private static final long serialVersionUID = -6185313616955051150L;
|
||||||
|
/**
|
||||||
|
* 调用接口返回码,通信标识
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "return_code")
|
||||||
|
@JSONField(name = "return_code")
|
||||||
|
private String returnCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用接口返回消息,如非 空,为错误原因 可能为空
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "return_msg")
|
||||||
|
@JSONField(name = "return_msg")
|
||||||
|
private String returnMsg;
|
||||||
/**
|
/**
|
||||||
* 业务结果SUCCESS/FAIL 非空
|
* 业务结果SUCCESS/FAIL 非空
|
||||||
*/
|
*/
|
||||||
@ -42,10 +56,12 @@ public class XmlResult extends ApiResult {
|
|||||||
private String errCodeDes;
|
private String errCodeDes;
|
||||||
|
|
||||||
protected XmlResult() {
|
protected XmlResult() {
|
||||||
|
// jaxb required
|
||||||
}
|
}
|
||||||
|
|
||||||
public XmlResult(String returnCode, String returnMsg) {
|
public XmlResult(String returnCode, String returnMsg) {
|
||||||
super(returnCode, returnMsg);
|
this.returnCode = returnCode;
|
||||||
|
this.returnMsg = returnMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getResultCode() {
|
public String getResultCode() {
|
||||||
@ -60,6 +76,14 @@ public class XmlResult extends ApiResult {
|
|||||||
return errCodeDes;
|
return errCodeDes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getReturnCode() {
|
||||||
|
return returnCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReturnMsg() {
|
||||||
|
return returnMsg;
|
||||||
|
}
|
||||||
|
|
||||||
public void setResultCode(String resultCode) {
|
public void setResultCode(String resultCode) {
|
||||||
this.resultCode = resultCode;
|
this.resultCode = resultCode;
|
||||||
}
|
}
|
||||||
@ -74,6 +98,8 @@ public class XmlResult extends ApiResult {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return super.toString() + ", resultCode=" + resultCode + ", errCode=" + errCode + ", errCodeDes=" + errCodeDes;
|
return "returnCode=" + returnCode + ", returnMsg=" + returnMsg
|
||||||
|
+ ", resultCode=" + resultCode + ", errCode=" + errCode
|
||||||
|
+ ", errCodeDes=" + errCodeDes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,7 +114,7 @@ public class WeixinRequestExecutor {
|
|||||||
if (XmlMessageConverter.GLOBAL.canConvert(XmlResult.class, response)) {
|
if (XmlMessageConverter.GLOBAL.canConvert(XmlResult.class, response)) {
|
||||||
try {
|
try {
|
||||||
XmlResult xmlResult = XmlMessageConverter.GLOBAL.convert(XmlResult.class, response);
|
XmlResult xmlResult = XmlMessageConverter.GLOBAL.convert(XmlResult.class, response);
|
||||||
if (!SUCCESS_CODE.contains(xmlResult.getResultCode())) {
|
if (!SUCCESS_CODE.contains(String.format(",%s,", xmlResult.getResultCode().toLowerCase()))) {
|
||||||
throw new WeixinException(xmlResult.getErrCode(), xmlResult.getErrCodeDes());
|
throw new WeixinException(xmlResult.getErrCode(), xmlResult.getErrCodeDes());
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@ -821,7 +821,7 @@
|
|||||||
</error>
|
</error>
|
||||||
<error>
|
<error>
|
||||||
<code>60008</code>
|
<code>60008</code>
|
||||||
<text>部门名称已存在</text>
|
<text>部门ID或者部门名称已存在</text>
|
||||||
</error>
|
</error>
|
||||||
<error>
|
<error>
|
||||||
<code>60009</code>
|
<code>60009</code>
|
||||||
|
|||||||
@ -624,10 +624,10 @@ public class WeixinPayProxy {
|
|||||||
* 接口测试上报API</a>
|
* 接口测试上报API</a>
|
||||||
* @throws WeixinException
|
* @throws WeixinException
|
||||||
*/
|
*/
|
||||||
public XmlResult interfaceReport(String interfaceUrl, int executeTime,
|
public XmlResult reportInterface(String interfaceUrl, int executeTime,
|
||||||
String outTradeNo, String ip, Date time, XmlResult returnXml)
|
String outTradeNo, String ip, Date time, XmlResult returnXml)
|
||||||
throws WeixinException {
|
throws WeixinException {
|
||||||
return payApi.interfaceReport(interfaceUrl, executeTime, outTradeNo,
|
return payApi.reportInterface(interfaceUrl, executeTime, outTradeNo,
|
||||||
ip, time, returnXml);
|
ip, time, returnXml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,96 @@
|
|||||||
|
package com.foxinmy.weixin4j.payment.coupon;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.foxinmy.weixin4j.type.CouponType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单代金券信息
|
||||||
|
*
|
||||||
|
* @className OrderCouponInfo
|
||||||
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
|
* @date 2015年3月24日
|
||||||
|
* @since JDK 1.6
|
||||||
|
* @see
|
||||||
|
*/
|
||||||
|
@XmlRootElement
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class OrderCouponInfo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8744999305258786901L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代金券或立减优惠批次ID
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "coupon_batch_id")
|
||||||
|
@JSONField(name = "coupon_batch_id")
|
||||||
|
private String couponBatchId;
|
||||||
|
/**
|
||||||
|
* 代金券类型
|
||||||
|
*
|
||||||
|
* @see com.foxinmy.weixin4j.type.CouponType
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "coupon_type")
|
||||||
|
@JSONField(name = "coupon_type")
|
||||||
|
private String couponType;
|
||||||
|
/**
|
||||||
|
* 代金券或立减优惠ID
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "coupon_id")
|
||||||
|
@JSONField(name = "coupon_id")
|
||||||
|
private String couponId;
|
||||||
|
/**
|
||||||
|
* 单个代金券或立减优惠支付金额
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "coupon_fee")
|
||||||
|
@JSONField(name = "coupon_fee")
|
||||||
|
private Integer couponFee;
|
||||||
|
|
||||||
|
protected OrderCouponInfo() {
|
||||||
|
// jaxb requried
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouponBatchId() {
|
||||||
|
return couponBatchId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouponType() {
|
||||||
|
return couponType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public CouponType getFormatCouponType() {
|
||||||
|
return couponType != null ? CouponType
|
||||||
|
.valueOf(couponType.toUpperCase()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouponId() {
|
||||||
|
return couponId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCouponFee() {
|
||||||
|
return couponFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatCouponFee() {
|
||||||
|
return couponFee != null ? couponFee.doubleValue() / 100d : 0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "couponBatchId=" + couponBatchId + ", couponType=" + couponType
|
||||||
|
+ ", couponId=" + couponId + ", couponFee=" + couponFee;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,9 +10,9 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代金券信息(订单,退款中体现)
|
* 退款代金券信息
|
||||||
*
|
*
|
||||||
* @className CouponInfo
|
* @className RefundCouponInfo
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2015年3月24日
|
* @date 2015年3月24日
|
||||||
* @since JDK 1.6
|
* @since JDK 1.6
|
||||||
@ -20,31 +20,31 @@ import com.alibaba.fastjson.annotation.JSONField;
|
|||||||
*/
|
*/
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class CouponInfo implements Serializable {
|
public class RefundCouponInfo implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = -8744999305258786901L;
|
private static final long serialVersionUID = -8744999305258786901L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 代金券或立减优惠批次ID
|
* 代金券或立减优惠批次ID
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "coupon_batch_id")
|
@XmlElement(name = "coupon_refund_batch_id")
|
||||||
@JSONField(name = "coupon_batch_id")
|
@JSONField(name = "coupon_refund_batch_id")
|
||||||
private String couponBatchId;
|
private String couponBatchId;
|
||||||
/**
|
/**
|
||||||
* 代金券或立减优惠ID
|
* 退款代金券ID
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "coupon_id")
|
@XmlElement(name = "coupon_refund_id")
|
||||||
@JSONField(name = "coupon_id")
|
@JSONField(name = "coupon_refund_id")
|
||||||
private String couponId;
|
private String couponId;
|
||||||
/**
|
/**
|
||||||
* 单个代金券或立减优惠支付金额
|
* 单个代金券或立减优惠支付金额
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "coupon_fee")
|
@XmlElement(name = "coupon_refund_fee")
|
||||||
@JSONField(name = "coupon_fee")
|
@JSONField(name = "coupon_refund_fee")
|
||||||
private Integer couponFee;
|
private Integer couponFee;
|
||||||
|
|
||||||
public CouponInfo() {
|
protected RefundCouponInfo() {
|
||||||
|
// jaxb requried
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCouponBatchId() {
|
public String getCouponBatchId() {
|
||||||
@ -69,10 +69,6 @@ public class CouponInfo implements Serializable {
|
|||||||
return couponFee != null ? couponFee.doubleValue() / 100d : 0d;
|
return couponFee != null ? couponFee.doubleValue() / 100d : 0d;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCouponId(String couponId) {
|
|
||||||
this.couponId = couponId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "couponBatchId=" + couponBatchId + ", couponId=" + couponId
|
return "couponBatchId=" + couponBatchId + ", couponId=" + couponId
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
package com.foxinmy.weixin4j.payment.mch;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.foxinmy.weixin4j.type.CurrencyType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户平台交易结果
|
||||||
|
*
|
||||||
|
* @className MerchantTradeResult
|
||||||
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
|
* @date 2016年7月21日
|
||||||
|
* @since JDK 1.7
|
||||||
|
* @see
|
||||||
|
*/
|
||||||
|
public class MerchantTradeResult extends MerchantResult {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 4205906286092873877L;
|
||||||
|
/**
|
||||||
|
* 微信支付订单号
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "transaction_id")
|
||||||
|
@JSONField(name = "transaction_id")
|
||||||
|
private String transactionId;
|
||||||
|
/**
|
||||||
|
* 商户订单号
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "out_trade_no")
|
||||||
|
@JSONField(name = "out_trade_no")
|
||||||
|
private String outTradeNo;
|
||||||
|
/**
|
||||||
|
* 订单总金额,单位为分
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "total_fee")
|
||||||
|
@JSONField(name = "total_fee")
|
||||||
|
private Integer totalFee;
|
||||||
|
/**
|
||||||
|
* 应结订单金额,单位为分:应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "settlement_total_fee")
|
||||||
|
@JSONField(name = "settlement_total_fee")
|
||||||
|
private Integer settlementTotalFee;
|
||||||
|
/**
|
||||||
|
* 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
|
||||||
|
*
|
||||||
|
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "fee_type")
|
||||||
|
@JSONField(name = "fee_type")
|
||||||
|
private String feeType;
|
||||||
|
/**
|
||||||
|
* 现金支付金额
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "cash_fee")
|
||||||
|
@JSONField(name = "cash_fee")
|
||||||
|
private Integer cashFee;
|
||||||
|
|
||||||
|
public Integer getCashFee() {
|
||||||
|
return cashFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatCashFee() {
|
||||||
|
return cashFee != null ? cashFee / 100d : 0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getTotalFee() {
|
||||||
|
return totalFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatTotalFee() {
|
||||||
|
return totalFee != null ? totalFee / 100d : 0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public CurrencyType getFormatFeeType() {
|
||||||
|
return feeType != null ? CurrencyType.valueOf(feeType.toUpperCase())
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFeeType() {
|
||||||
|
return feeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTransactionId() {
|
||||||
|
return transactionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOutTradeNo() {
|
||||||
|
return outTradeNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSettlementTotalFee() {
|
||||||
|
return settlementTotalFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatSettlementTotalFee() {
|
||||||
|
return settlementTotalFee != null ? settlementTotalFee / 100d : 0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "transactionId=" + transactionId + ", outTradeNo=" + outTradeNo
|
||||||
|
+ ", totalFee=" + totalFee + ", cashFee=" + cashFee
|
||||||
|
+ ", feeType=" + feeType + ", settlementTotalFee="
|
||||||
|
+ settlementTotalFee + ", " + super.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -45,8 +45,7 @@ public class NativePayResponse extends MerchantResult {
|
|||||||
* @throws WeixinPayException
|
* @throws WeixinPayException
|
||||||
*/
|
*/
|
||||||
public NativePayResponse(String returnMsg, String resultMsg) {
|
public NativePayResponse(String returnMsg, String resultMsg) {
|
||||||
super.setReturnMsg(returnMsg);
|
super(Consts.FAIL, returnMsg);
|
||||||
super.setReturnCode(Consts.FAIL);
|
|
||||||
super.setErrCodeDes(resultMsg);
|
super.setErrCodeDes(resultMsg);
|
||||||
super.setResultCode(Consts.FAIL);
|
super.setResultCode(Consts.FAIL);
|
||||||
}
|
}
|
||||||
@ -61,7 +60,7 @@ public class NativePayResponse extends MerchantResult {
|
|||||||
* @throws WeixinPayException
|
* @throws WeixinPayException
|
||||||
*/
|
*/
|
||||||
public NativePayResponse(WeixinPayAccount weixinAccount, String prepayId) {
|
public NativePayResponse(WeixinPayAccount weixinAccount, String prepayId) {
|
||||||
super.setReturnCode(Consts.SUCCESS);
|
super(Consts.SUCCESS, "OK");
|
||||||
this.setResultCode(Consts.SUCCESS);
|
this.setResultCode(Consts.SUCCESS);
|
||||||
this.setMchId(weixinAccount.getMchId());
|
this.setMchId(weixinAccount.getMchId());
|
||||||
this.setAppId(weixinAccount.getId());
|
this.setAppId(weixinAccount.getId());
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import javax.xml.bind.annotation.XmlElement;
|
|||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.foxinmy.weixin4j.payment.coupon.CouponInfo;
|
import com.foxinmy.weixin4j.payment.coupon.OrderCouponInfo;
|
||||||
import com.foxinmy.weixin4j.type.BankType;
|
import com.foxinmy.weixin4j.type.BankType;
|
||||||
import com.foxinmy.weixin4j.type.CurrencyType;
|
import com.foxinmy.weixin4j.type.CurrencyType;
|
||||||
import com.foxinmy.weixin4j.type.TradeState;
|
import com.foxinmy.weixin4j.type.TradeState;
|
||||||
@ -28,7 +28,7 @@ import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
|||||||
*/
|
*/
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class Order extends MerchantResult {
|
public class Order extends MerchantTradeResult {
|
||||||
|
|
||||||
private static final long serialVersionUID = 5636828325595317079L;
|
private static final long serialVersionUID = 5636828325595317079L;
|
||||||
/**
|
/**
|
||||||
@ -65,14 +65,17 @@ public class Order extends MerchantResult {
|
|||||||
@XmlElement(name = "bank_type")
|
@XmlElement(name = "bank_type")
|
||||||
@JSONField(name = "bank_type")
|
@JSONField(name = "bank_type")
|
||||||
private String bankType;
|
private String bankType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单总金额,单位为分
|
* 现金支付货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
|
||||||
|
*
|
||||||
|
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "total_fee")
|
@XmlElement(name = "cash_fee_type")
|
||||||
@JSONField(name = "total_fee")
|
@JSONField(name = "cash_fee_type")
|
||||||
private Integer totalFee;
|
private String cashFeeType;
|
||||||
/**
|
/**
|
||||||
* 现金券支付金额<=订单总金 额,订单总金额-现金券金额 为现金支付金额
|
* 代金券金额:“代金券”金额<=订单金额,订单金额-“代金券”金额=现金支付金额
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "coupon_fee")
|
@XmlElement(name = "coupon_fee")
|
||||||
@JSONField(name = "coupon_fee")
|
@JSONField(name = "coupon_fee")
|
||||||
@ -87,33 +90,7 @@ public class Order extends MerchantResult {
|
|||||||
* 代金券信息 验证签名有点麻烦
|
* 代金券信息 验证签名有点麻烦
|
||||||
*/
|
*/
|
||||||
@ListsuffixResult
|
@ListsuffixResult
|
||||||
private List<CouponInfo> couponList;
|
private List<OrderCouponInfo> couponList;
|
||||||
/**
|
|
||||||
* 现金支付金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_fee")
|
|
||||||
@JSONField(name = "cash_fee")
|
|
||||||
private Integer cashFee;
|
|
||||||
/**
|
|
||||||
* 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "fee_type")
|
|
||||||
@JSONField(name = "fee_type")
|
|
||||||
private String feeType;
|
|
||||||
/**
|
|
||||||
* 微信支付订单号
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "transaction_id")
|
|
||||||
@JSONField(name = "transaction_id")
|
|
||||||
private String transactionId;
|
|
||||||
/**
|
|
||||||
* 商户订单号
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "out_trade_no")
|
|
||||||
@JSONField(name = "out_trade_no")
|
|
||||||
private String outTradeNo;
|
|
||||||
/**
|
/**
|
||||||
* 商家数据包
|
* 商家数据包
|
||||||
*/
|
*/
|
||||||
@ -183,20 +160,6 @@ public class Order extends MerchantResult {
|
|||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getTotalFee() {
|
|
||||||
return totalFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatTotalFee() {
|
|
||||||
return totalFee != null ? totalFee / 100d : 0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getCouponFee() {
|
public Integer getCouponFee() {
|
||||||
return couponFee;
|
return couponFee;
|
||||||
}
|
}
|
||||||
@ -215,26 +178,6 @@ public class Order extends MerchantResult {
|
|||||||
return couponCount;
|
return couponCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getCashFee() {
|
|
||||||
return cashFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatCashFee() {
|
|
||||||
return cashFee != null ? cashFee / 100d : 0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatFeeType() {
|
|
||||||
return feeType != null ? CurrencyType.valueOf(feeType.toUpperCase())
|
|
||||||
: null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTradeState() {
|
public String getTradeState() {
|
||||||
return tradeState;
|
return tradeState;
|
||||||
}
|
}
|
||||||
@ -243,18 +186,6 @@ public class Order extends MerchantResult {
|
|||||||
return tradeType;
|
return tradeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFeeType() {
|
|
||||||
return feeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTransactionId() {
|
|
||||||
return transactionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOutTradeNo() {
|
|
||||||
return outTradeNo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAttach() {
|
public String getAttach() {
|
||||||
return attach;
|
return attach;
|
||||||
}
|
}
|
||||||
@ -272,11 +203,11 @@ public class Order extends MerchantResult {
|
|||||||
return tradeStateDesc;
|
return tradeStateDesc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CouponInfo> getCouponList() {
|
public List<OrderCouponInfo> getCouponList() {
|
||||||
return couponList;
|
return couponList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCouponList(List<CouponInfo> couponList) {
|
public void setCouponList(List<OrderCouponInfo> couponList) {
|
||||||
this.couponList = couponList;
|
this.couponList = couponList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,19 +224,25 @@ public class Order extends MerchantResult {
|
|||||||
return subIsSubscribe != null && subIsSubscribe.equalsIgnoreCase("y");
|
return subIsSubscribe != null && subIsSubscribe.equalsIgnoreCase("y");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCashFeeType() {
|
||||||
|
return cashFeeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public CurrencyType getFormatCashFeeType() {
|
||||||
|
return cashFeeType != null ? CurrencyType.valueOf(cashFeeType
|
||||||
|
.toUpperCase()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Order [tradeState=" + tradeState + ", openId=" + openId
|
return "Order [tradeState=" + tradeState + ", openId=" + openId
|
||||||
+ ", isSubscribe=" + isSubscribe + ", tradeType=" + tradeType
|
+ ", isSubscribe=" + isSubscribe + ", tradeType=" + tradeType
|
||||||
+ ", bankType=" + bankType + ", feeType=" + feeType
|
+ ", bankType=" + bankType + ", cashFeeType=" + cashFeeType
|
||||||
+ ", transactionId=" + transactionId + ", outTradeNo="
|
+ ", couponFee=" + couponFee + ", couponCount=" + couponCount
|
||||||
+ outTradeNo + ", attach=" + attach + ", timeEnd=" + timeEnd
|
+ ", couponList=" + couponList + ", attach=" + attach
|
||||||
+ ", totalFee=" + getFormatTotalFee() + ", couponFee="
|
+ ", timeEnd=" + timeEnd + ", tradeStateDesc=" + tradeStateDesc
|
||||||
+ getFormatCouponFee() + ", couponCount=" + couponCount
|
+ ", subOpenId=" + subOpenId + ", subIsSubscribe="
|
||||||
+ ", couponList=" + couponList + ", cashFee="
|
+ subIsSubscribe + ", " + super.toString() + "]";
|
||||||
+ getFormatCashFee() + ", timeEnd=" + getFormatTimeEnd()
|
|
||||||
+ ", tradeStateDesc=" + tradeStateDesc + ", subOpenId="
|
|
||||||
+ subOpenId + ", subIsSubscribe=" + subIsSubscribe
|
|
||||||
+ super.toString() + "]";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.foxinmy.weixin4j.payment.mch;
|
package com.foxinmy.weixin4j.payment.mch;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
@ -8,26 +9,28 @@ import javax.xml.bind.annotation.XmlElement;
|
|||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.foxinmy.weixin4j.payment.coupon.CouponInfo;
|
import com.foxinmy.weixin4j.payment.coupon.RefundCouponInfo;
|
||||||
import com.foxinmy.weixin4j.type.CurrencyType;
|
import com.foxinmy.weixin4j.type.CouponType;
|
||||||
import com.foxinmy.weixin4j.type.RefundChannel;
|
import com.foxinmy.weixin4j.type.RefundChannel;
|
||||||
import com.foxinmy.weixin4j.type.RefundStatus;
|
import com.foxinmy.weixin4j.type.RefundStatus;
|
||||||
import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* V3退款详细
|
* 退款详细
|
||||||
*
|
*
|
||||||
* @className RefundDetail
|
* @className RefundDetail
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2014年11月6日
|
* @date 2016年7月21日
|
||||||
* @since JDK 1.6
|
* @since JDK 1.6
|
||||||
* @see
|
|
||||||
*/
|
*/
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class RefundDetail extends MerchantResult {
|
public class RefundDetail implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1402738803019986864L;
|
||||||
|
|
||||||
private static final long serialVersionUID = -3687863914168618620L;
|
protected RefundDetail() {
|
||||||
|
// jaxb required
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商户退款单号
|
* 商户退款单号
|
||||||
@ -53,56 +56,6 @@ public class RefundDetail extends MerchantResult {
|
|||||||
@XmlElement(name = "refund_fee")
|
@XmlElement(name = "refund_fee")
|
||||||
@JSONField(name = "refund_fee")
|
@JSONField(name = "refund_fee")
|
||||||
private int refundFee;
|
private int refundFee;
|
||||||
/**
|
|
||||||
* 退款货币种类
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "refund_fee_type")
|
|
||||||
@JSONField(name = "refund_fee_type")
|
|
||||||
private String refundFeeType;
|
|
||||||
/**
|
|
||||||
* 订单总金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "total_fee")
|
|
||||||
@JSONField(name = "total_fee")
|
|
||||||
private int totalFee;
|
|
||||||
/**
|
|
||||||
* 订单金额货币种类
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "fee_type")
|
|
||||||
@JSONField(name = "fee_type")
|
|
||||||
private String feeType;
|
|
||||||
/**
|
|
||||||
* 现金支付金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_fee")
|
|
||||||
@JSONField(name = "cash_fee")
|
|
||||||
private int cashFee;
|
|
||||||
/**
|
|
||||||
* 现金支付货币种类
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_fee_type")
|
|
||||||
@JSONField(name = "cash_fee_type")
|
|
||||||
private String cashFeeType;
|
|
||||||
/**
|
|
||||||
* 现金退款金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_refund_fee")
|
|
||||||
@JSONField(name = "cash_refund_fee")
|
|
||||||
private Integer cashRefundFee;
|
|
||||||
/**
|
|
||||||
* 现金退款货币类型
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_refund_fee_type")
|
|
||||||
@JSONField(name = "cash_refund_fee_type")
|
|
||||||
private String cashRefundFeeType;
|
|
||||||
/**
|
/**
|
||||||
* 退款状态
|
* 退款状态
|
||||||
*/
|
*/
|
||||||
@ -110,30 +63,44 @@ public class RefundDetail extends MerchantResult {
|
|||||||
@JSONField(name = "refund_status")
|
@JSONField(name = "refund_status")
|
||||||
private String refundStatus;
|
private String refundStatus;
|
||||||
/**
|
/**
|
||||||
* 现金券退款金额<=退款金额,退款金额-现金券退款金额为现金
|
* 退款金额:退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "settlement_refund_fee")
|
||||||
|
@JSONField(name = "settlement_refund_fee")
|
||||||
|
private Integer settlementRefundFee;
|
||||||
|
/**
|
||||||
|
* 代金券退款金额:代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "coupon_refund_fee")
|
@XmlElement(name = "coupon_refund_fee")
|
||||||
@JSONField(name = "coupon_refund_fee")
|
@JSONField(name = "coupon_refund_fee")
|
||||||
private Integer couponRefundFee;
|
private Integer couponRefundFee;
|
||||||
/**
|
/**
|
||||||
* 代金券或立减优惠使用数量 <font
|
* 代金券或立减优惠使用数量
|
||||||
* color="red">微信支付文档上写的coupon_count,而实际测试拿到的是coupon_refund_count,做个记号。
|
|
||||||
* </font>
|
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "coupon_refund_count")
|
@XmlElement(name = "coupon_refund_count")
|
||||||
@JSONField(name = "coupon_refund_count")
|
@JSONField(name = "coupon_refund_count")
|
||||||
private Integer couponRefundCount;
|
private Integer couponRefundCount;
|
||||||
/**
|
/**
|
||||||
* 代金券信息
|
* 代金券类型
|
||||||
*
|
*
|
||||||
* @see com.foxinmy.weixin4j.payment.coupon.CouponInfo
|
* @see com.foxinmy.weixin4j.type.CouponType
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "coupon_type")
|
||||||
|
@JSONField(name = "coupon_type")
|
||||||
|
private String couponType;
|
||||||
|
/**
|
||||||
|
* 退款入账账户:取当前退款单的退款入账方 1)退回银行卡: {银行名称}{卡类型}{卡尾号} 2)退回支付用户零钱: 支付用户零钱
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "refund_recv_accout")
|
||||||
|
@JSONField(name = "refund_recv_accout")
|
||||||
|
private String refundRecvAccout;
|
||||||
|
/**
|
||||||
|
* 退款代金券信息
|
||||||
|
*
|
||||||
|
* @see com.foxinmy.weixin4j.payment.coupon.RefundCouponInfo
|
||||||
*/
|
*/
|
||||||
@ListsuffixResult
|
@ListsuffixResult
|
||||||
private List<CouponInfo> couponList;
|
private List<RefundCouponInfo> couponList;
|
||||||
|
|
||||||
protected RefundDetail() {
|
|
||||||
// jaxb required
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOutRefundNo() {
|
public String getOutRefundNo() {
|
||||||
return outRefundNo;
|
return outRefundNo;
|
||||||
@ -157,26 +124,6 @@ public class RefundDetail extends MerchantResult {
|
|||||||
return refundFee;
|
return refundFee;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFeeType() {
|
|
||||||
return feeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatFeeType() {
|
|
||||||
return feeType != null ? CurrencyType.valueOf(feeType.toUpperCase())
|
|
||||||
: null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatRefundFee() {
|
|
||||||
return refundFee / 100d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRefundStatus() {
|
public String getRefundStatus() {
|
||||||
return refundStatus;
|
return refundStatus;
|
||||||
}
|
}
|
||||||
@ -187,6 +134,28 @@ public class RefundDetail extends MerchantResult {
|
|||||||
.toUpperCase()) : null;
|
.toUpperCase()) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<RefundCouponInfo> getCouponList() {
|
||||||
|
return couponList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCouponList(List<RefundCouponInfo> couponList) {
|
||||||
|
this.couponList = couponList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSettlementRefundFee() {
|
||||||
|
return settlementRefundFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatSettlementRefundFee() {
|
||||||
|
return settlementRefundFee != null ? settlementRefundFee / 100d : 0d;
|
||||||
|
}
|
||||||
|
|
||||||
public Integer getCouponRefundFee() {
|
public Integer getCouponRefundFee() {
|
||||||
return couponRefundFee;
|
return couponRefundFee;
|
||||||
}
|
}
|
||||||
@ -198,105 +167,36 @@ public class RefundDetail extends MerchantResult {
|
|||||||
*/
|
*/
|
||||||
@JSONField(serialize = false)
|
@JSONField(serialize = false)
|
||||||
public double getFormatCouponRefundFee() {
|
public double getFormatCouponRefundFee() {
|
||||||
return couponRefundFee != null ? couponRefundFee.intValue() / 100d : 0d;
|
return couponRefundFee != null ? couponRefundFee / 100d : 0d;
|
||||||
}
|
|
||||||
|
|
||||||
public String getRefundFeeType() {
|
|
||||||
return refundFeeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatRefundFeeType() {
|
|
||||||
return refundFeeType != null ? CurrencyType.valueOf(refundFeeType
|
|
||||||
.toUpperCase()) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTotalFee() {
|
|
||||||
return totalFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatTotalFee() {
|
|
||||||
return totalFee / 100d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCashFee() {
|
|
||||||
return cashFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatCashFee() {
|
|
||||||
return cashFee / 100d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCashFeeType() {
|
|
||||||
return cashFeeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatCashFeeType() {
|
|
||||||
return cashFeeType != null ? CurrencyType.valueOf(cashFeeType
|
|
||||||
.toUpperCase()) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getCashRefundFee() {
|
|
||||||
return cashRefundFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatCashRefundFee() {
|
|
||||||
return cashRefundFee != null ? cashRefundFee.intValue() / 100d : 0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCashRefundFeeType() {
|
|
||||||
return cashRefundFeeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatCashRefundFeeType() {
|
|
||||||
return cashRefundFeeType != null ? CurrencyType
|
|
||||||
.valueOf(cashRefundFeeType.toUpperCase()) : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getCouponRefundCount() {
|
public Integer getCouponRefundCount() {
|
||||||
return couponRefundCount;
|
return couponRefundCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CouponInfo> getCouponList() {
|
public String getCouponType() {
|
||||||
return couponList;
|
return couponType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCouponList(List<CouponInfo> couponList) {
|
@JSONField(serialize = false)
|
||||||
this.couponList = couponList;
|
public CouponType getFormatCouponType() {
|
||||||
|
return couponType != null ? CouponType
|
||||||
|
.valueOf(couponType.toUpperCase()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRefundRecvAccout() {
|
||||||
|
return refundRecvAccout;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "RefundDetail [outRefundNo=" + outRefundNo + ", refundId="
|
return "RefundDetail [outRefundNo=" + outRefundNo + ", refundId="
|
||||||
+ refundId + ", refundChannel=" + refundChannel
|
+ refundId + ", refundChannel=" + refundChannel
|
||||||
+ ", refundFee=" + getFormatRefundFee() + ", refundFeeType="
|
+ ", refundFee=" + refundFee + ", refundStatus=" + refundStatus
|
||||||
+ refundFeeType + ", totalFee=" + getFormatTotalFee()
|
+ ", settlementRefundFee=" + settlementRefundFee
|
||||||
+ ", feeType=" + feeType + ", cashFee=" + getFormatCashFee()
|
+ ", couponRefundFee=" + couponRefundFee
|
||||||
+ ", cashFeeType=" + cashFeeType + ", cashRefundFee="
|
+ ", couponRefundCount=" + couponRefundCount + ", couponType="
|
||||||
+ getFormatCashRefundFee() + ", cashRefundFeeType="
|
+ couponType + ", refundRecvAccout=" + refundRecvAccout
|
||||||
+ cashRefundFeeType + ", refundStatus=" + refundStatus
|
+ ", couponList=" + couponList + "]";
|
||||||
+ ", couponRefundFee=" + getFormatCouponRefundFee()
|
|
||||||
+ ", couponRefundCount=" + couponRefundCount + ", couponList="
|
|
||||||
+ couponList + ", " + super.toString() + "]";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,11 +8,10 @@ import javax.xml.bind.annotation.XmlElement;
|
|||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.foxinmy.weixin4j.type.CurrencyType;
|
|
||||||
import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* V3退款记录
|
* 退款记录
|
||||||
*
|
*
|
||||||
* @className RefundRecord
|
* @className RefundRecord
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
@ -21,162 +20,37 @@ import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
|||||||
*/
|
*/
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class RefundRecord extends MerchantResult {
|
public class RefundRecord extends MerchantTradeResult {
|
||||||
|
|
||||||
private static final long serialVersionUID = -2971132874939642721L;
|
private static final long serialVersionUID = -2971132874939642721L;
|
||||||
|
|
||||||
/**
|
|
||||||
* 微信订单号
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "transaction_id")
|
|
||||||
@JSONField(name = "transaction_id")
|
|
||||||
private String transactionId;
|
|
||||||
/**
|
|
||||||
* 商户订单号
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "out_trade_no")
|
|
||||||
@JSONField(name = "out_trade_no")
|
|
||||||
private String outTradeNo;
|
|
||||||
/**
|
|
||||||
* 订单总金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "total_fee")
|
|
||||||
@JSONField(name = "total_fee")
|
|
||||||
private int totalFee;
|
|
||||||
/**
|
|
||||||
* 订单金额货币种类
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "fee_type")
|
|
||||||
@JSONField(name = "fee_type")
|
|
||||||
private String feeType;
|
|
||||||
/**
|
|
||||||
* 现金支付金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_fee")
|
|
||||||
@JSONField(name = "cash_fee")
|
|
||||||
private int cashFee;
|
|
||||||
/**
|
|
||||||
* 现金支付金额货币种类
|
|
||||||
*
|
|
||||||
* @see com.foxinmy.weixin4j.mp.type.CurrencyType
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "cash_fee_type")
|
|
||||||
@JSONField(name = "cash_fee_type")
|
|
||||||
private String cashFeeType;
|
|
||||||
/**
|
|
||||||
* 退款总金额
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "refund_fee")
|
|
||||||
@JSONField(name = "refund_fee")
|
|
||||||
private int refundFee;
|
|
||||||
/**
|
|
||||||
* 代金券或立减优惠退款金额=订单金额-现金退款金额,注意:满立减金额不会退回
|
|
||||||
*/
|
|
||||||
@XmlElement(name = "coupon_refund_fee")
|
|
||||||
@JSONField(name = "coupon_refund_fee")
|
|
||||||
private Integer couponRefundFee;
|
|
||||||
/**
|
/**
|
||||||
* 退款笔数
|
* 退款笔数
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "refund_count")
|
@XmlElement(name = "refund_count")
|
||||||
@JSONField(name = "refund_count")
|
@JSONField(name = "refund_count")
|
||||||
private int refundCount;
|
private int refundCount;
|
||||||
|
/**
|
||||||
|
* 退款总金额,单位为分,可以做部分退款
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "refund_fee")
|
||||||
|
@JSONField(name = "refund_fee")
|
||||||
|
private int refundFee;
|
||||||
/**
|
/**
|
||||||
* 退款详情
|
* 退款详情
|
||||||
*
|
*
|
||||||
* @see com.foxinmy.weixin4j.payment.mch.RefundDetail
|
* @see RefundDetail
|
||||||
*/
|
*/
|
||||||
@ListsuffixResult({ "^out_refund_no(_\\d)$", "^refund_.*(_\\d)$" })
|
@ListsuffixResult({ ".*(_\\d)$" })
|
||||||
private List<RefundDetail> refundList;
|
private List<RefundDetail> refundList;
|
||||||
|
|
||||||
protected RefundRecord() {
|
protected RefundRecord() {
|
||||||
// jaxb required
|
// jaxb required
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTransactionId() {
|
|
||||||
return transactionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOutTradeNo() {
|
|
||||||
return outTradeNo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatCashFee() {
|
|
||||||
return cashFee / 100d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCashFee() {
|
|
||||||
return cashFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFeeType() {
|
|
||||||
return feeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCashFeeType() {
|
|
||||||
return cashFeeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatFeeType() {
|
|
||||||
return feeType != null ? CurrencyType.valueOf(feeType.toUpperCase())
|
|
||||||
: null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CurrencyType getFormatCashFeeType() {
|
|
||||||
return cashFeeType != null ? CurrencyType.valueOf(cashFeeType
|
|
||||||
.toUpperCase()) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatCouponRefundFee() {
|
|
||||||
return couponRefundFee != null ? couponRefundFee.intValue() / 100d : 0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getCouponRefundFee() {
|
|
||||||
return couponRefundFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
|
||||||
*
|
|
||||||
* @return 元单位
|
|
||||||
*/
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public double getFormatTotalFee() {
|
|
||||||
return totalFee / 100d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTotalFee() {
|
|
||||||
return totalFee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRefundCount() {
|
public int getRefundCount() {
|
||||||
return refundCount;
|
return refundCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<RefundDetail> getRefundList() {
|
|
||||||
return refundList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRefundList(List<RefundDetail> refundList) {
|
|
||||||
this.refundList = refundList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRefundFee() {
|
public int getRefundFee() {
|
||||||
return refundFee;
|
return refundFee;
|
||||||
}
|
}
|
||||||
@ -191,14 +65,18 @@ public class RefundRecord extends MerchantResult {
|
|||||||
return refundFee / 100d;
|
return refundFee / 100d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<RefundDetail> getRefundList() {
|
||||||
|
return refundList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRefundList(List<RefundDetail> refundList) {
|
||||||
|
this.refundList = refundList;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "RefundRecord [transactionId=" + transactionId + ", outTradeNo="
|
return "RefundRecord [refundCount=" + refundCount + ", refundFee="
|
||||||
+ outTradeNo + ", totalFee=" + getFormatTotalFee()
|
+ refundFee + ", refundList=" + refundList + ", "
|
||||||
+ ", feeType=" + feeType + ", cashFee=" + getFormatCashFee()
|
+ super.toString() + "]";
|
||||||
+ ", cashFeeType=" + cashFeeType + ", refundFee="
|
|
||||||
+ getFormatRefundFee() + ", couponRefundFee="
|
|
||||||
+ getFormatCouponRefundFee() + ", refundCount=" + refundCount
|
|
||||||
+ ", refundList=" + refundList + ", " + super.toString() + "]";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,18 @@
|
|||||||
package com.foxinmy.weixin4j.payment.mch;
|
package com.foxinmy.weixin4j.payment.mch;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.foxinmy.weixin4j.type.RefundChannel;
|
||||||
|
import com.foxinmy.weixin4j.xml.ListsuffixResult;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* V3退款申请结果
|
* 退款申请结果
|
||||||
*
|
*
|
||||||
* @className RefundResult
|
* @className RefundResult
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
@ -18,38 +22,108 @@ import com.alibaba.fastjson.annotation.JSONField;
|
|||||||
*/
|
*/
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
@XmlAccessorType(XmlAccessType.FIELD)
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
public class RefundResult extends RefundDetail {
|
public class RefundResult extends MerchantTradeResult {
|
||||||
|
|
||||||
private static final long serialVersionUID = -3687863914168618620L;
|
private static final long serialVersionUID = -3687863914168618620L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信订单号
|
* 商户退款单号
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "transaction_id")
|
@XmlElement(name = "out_refund_no")
|
||||||
@JSONField(name = "transaction_id")
|
@JSONField(name = "out_refund_no")
|
||||||
private String transactionId;
|
private String outRefundNo;
|
||||||
/**
|
/**
|
||||||
* 商户系统内部的订单号
|
* 微信退款单号
|
||||||
*/
|
*/
|
||||||
@XmlElement(name = "out_trade_no")
|
@XmlElement(name = "refund_id")
|
||||||
@JSONField(name = "out_trade_no")
|
@JSONField(name = "refund_id")
|
||||||
private String outTradeNo;
|
private String refundId;
|
||||||
|
/**
|
||||||
|
* 退款渠道:ORIGINAL—原路退款,默认 BALANCE—退回到余额
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "refund_channel")
|
||||||
|
@JSONField(name = "refund_channel")
|
||||||
|
private String refundChannel;
|
||||||
|
/**
|
||||||
|
* 退款总金额,单位为分,可以做部分退款
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "refund_fee")
|
||||||
|
@JSONField(name = "refund_fee")
|
||||||
|
private int refundFee;
|
||||||
|
/**
|
||||||
|
* 现金退款金额
|
||||||
|
*/
|
||||||
|
@XmlElement(name = "cash_refund_fee")
|
||||||
|
@JSONField(name = "cash_refund_fee")
|
||||||
|
private Integer cashRefundFee;
|
||||||
|
/**
|
||||||
|
* 退款详情
|
||||||
|
*
|
||||||
|
* @see RefundDetail
|
||||||
|
*/
|
||||||
|
@ListsuffixResult({ ".*(_\\d)$" })
|
||||||
|
private List<RefundDetail> refundList;
|
||||||
|
|
||||||
protected RefundResult() {
|
protected RefundResult() {
|
||||||
// jaxb required
|
// jaxb required
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTransactionId() {
|
public String getOutRefundNo() {
|
||||||
return transactionId;
|
return outRefundNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getOutTradeNo() {
|
public String getRefundId() {
|
||||||
return outTradeNo;
|
return refundId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRefundChannel() {
|
||||||
|
return refundChannel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public RefundChannel getFormatRefundChannel() {
|
||||||
|
return refundChannel != null ? RefundChannel.valueOf(refundChannel
|
||||||
|
.toUpperCase()) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRefundFee() {
|
||||||
|
return refundFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatRefundFee() {
|
||||||
|
return refundFee / 100d;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCashRefundFee() {
|
||||||
|
return cashRefundFee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
|
||||||
|
*
|
||||||
|
* @return 元单位
|
||||||
|
*/
|
||||||
|
@JSONField(serialize = false)
|
||||||
|
public double getFormatCashRefundFee() {
|
||||||
|
return cashRefundFee != null ? cashRefundFee.intValue() / 100d : 0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RefundDetail> getRefundList() {
|
||||||
|
return refundList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "RefundResult [transactionId=" + transactionId + ", outTradeNo="
|
return "RefundResult [" + super.toString() + ", outRefundNo="
|
||||||
+ outTradeNo + ", " + super.toString() + "]";
|
+ outRefundNo + ", refundId=" + refundId + ", refundChannel="
|
||||||
|
+ refundChannel + ", refundFee=" + refundFee
|
||||||
|
+ ", cashRefundFee=" + cashRefundFee + ", refundList="
|
||||||
|
+ refundList + "]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,16 @@ public enum CouponType {
|
|||||||
/**
|
/**
|
||||||
* 门槛叠加
|
* 门槛叠加
|
||||||
*/
|
*/
|
||||||
THRESHOLD_PLUS(3);
|
THRESHOLD_PLUS(3),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值代金券
|
||||||
|
*/
|
||||||
|
CASH(-1),
|
||||||
|
/**
|
||||||
|
* 非充值代金券
|
||||||
|
*/
|
||||||
|
NO_CASH(-2);
|
||||||
private int val;
|
private int val;
|
||||||
|
|
||||||
CouponType(int val) {
|
CouponType(int val) {
|
||||||
|
|||||||
@ -34,7 +34,7 @@ import com.foxinmy.weixin4j.type.TradeType;
|
|||||||
* @className PayTest
|
* @className PayTest
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
* @date 2016年1月30日
|
* @date 2016年1月30日
|
||||||
* @since JDK 1.7
|
* @since JDK 1.6
|
||||||
* @see
|
* @see
|
||||||
*/
|
*/
|
||||||
public class PayTest {
|
public class PayTest {
|
||||||
@ -50,11 +50,11 @@ public class PayTest {
|
|||||||
/**
|
/**
|
||||||
* 商户证书文件
|
* 商户证书文件
|
||||||
*/
|
*/
|
||||||
protected File caFile = new File("商户证书:*.p12");
|
protected File caFile = new File("*.p12");
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryOrder() throws WeixinException {
|
public void queryOrder() throws WeixinException {
|
||||||
Order order = PAY.queryOrder(new IdQuery("BY2016010800025",
|
Order order = PAY.queryOrder(new IdQuery("201601131632321",
|
||||||
IdType.TRADENO));
|
IdType.TRADENO));
|
||||||
System.err.println(order);
|
System.err.println(order);
|
||||||
String sign = order.getSign();
|
String sign = order.getSign();
|
||||||
@ -70,7 +70,6 @@ public class PayTest {
|
|||||||
RefundRecord record = PAY.queryRefund(new IdQuery("TT_1427183696238",
|
RefundRecord record = PAY.queryRefund(new IdQuery("TT_1427183696238",
|
||||||
IdType.TRADENO));
|
IdType.TRADENO));
|
||||||
System.err.println(record);
|
System.err.println(record);
|
||||||
// 这里的验证签名需要把details循环拼接
|
|
||||||
String sign = record.getSign();
|
String sign = record.getSign();
|
||||||
record.setSign(null);
|
record.setSign(null);
|
||||||
String valiSign = SIGNATURE.sign(record);
|
String valiSign = SIGNATURE.sign(record);
|
||||||
@ -139,7 +138,7 @@ public class PayTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void interfaceReport() throws WeixinException {
|
public void reportInterface() throws WeixinException {
|
||||||
String interfaceUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder";
|
String interfaceUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder";
|
||||||
int executeTime = 2500;
|
int executeTime = 2500;
|
||||||
String outTradeNo = null;
|
String outTradeNo = null;
|
||||||
@ -147,7 +146,7 @@ public class PayTest {
|
|||||||
Date time = new Date();
|
Date time = new Date();
|
||||||
XmlResult returnXml = new XmlResult("SUCCESS", "");
|
XmlResult returnXml = new XmlResult("SUCCESS", "");
|
||||||
returnXml.setResultCode("SUCCESS");
|
returnXml.setResultCode("SUCCESS");
|
||||||
returnXml = PAY.interfaceReport(interfaceUrl, executeTime, outTradeNo,
|
returnXml = PAY.reportInterface(interfaceUrl, executeTime, outTradeNo,
|
||||||
ip, time, returnXml);
|
ip, time, returnXml);
|
||||||
System.err.println(returnXml);
|
System.err.println(returnXml);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,8 @@ weixin4j-mp
|
|||||||
|
|
||||||
* UserApi `用户管理API`
|
* UserApi `用户管理API`
|
||||||
|
|
||||||
|
* TagApi `用户标签管理API`
|
||||||
|
|
||||||
* ComponentApi `第三方组件API`
|
* ComponentApi `第三方组件API`
|
||||||
|
|
||||||
[如何使用](https://github.com/foxinmy/weixin4j/wiki)
|
[如何使用](https://github.com/foxinmy/weixin4j/wiki)
|
||||||
|
|||||||
@ -220,7 +220,7 @@ public class OauthApi extends MpApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求CODE
|
* 微信开放平台oauth授权:请求CODE
|
||||||
*
|
*
|
||||||
* @param redirectUri
|
* @param redirectUri
|
||||||
* 重定向地址 域名与审核时填写的授权域名一致
|
* 重定向地址 域名与审核时填写的授权域名一致
|
||||||
|
|||||||
@ -25,3 +25,5 @@
|
|||||||
* UserApi `用户管理API`
|
* UserApi `用户管理API`
|
||||||
|
|
||||||
* TagApi `用户标签管理API`
|
* TagApi `用户标签管理API`
|
||||||
|
|
||||||
|
* ComponentApi `第三方组件API`
|
||||||
@ -9,7 +9,7 @@ import com.foxinmy.weixin4j.token.TokenCreator;
|
|||||||
import com.foxinmy.weixin4j.token.TokenManager;
|
import com.foxinmy.weixin4j.token.TokenManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信开发平台应用组件预授权码创建
|
* 微信开放平台应用组件预授权码创建
|
||||||
*
|
*
|
||||||
* @className WeixinComponentPreCodeCreator
|
* @className WeixinComponentPreCodeCreator
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import com.foxinmy.weixin4j.token.TicketManager;
|
|||||||
import com.foxinmy.weixin4j.token.TokenCreator;
|
import com.foxinmy.weixin4j.token.TokenCreator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信开发平台应用组件凭证创建
|
* 微信开放平台应用组件凭证创建
|
||||||
*
|
*
|
||||||
* @className WeixinComponentTokenCreator
|
* @className WeixinComponentTokenCreator
|
||||||
* @author jinyu(foxinmy@gmail.com)
|
* @author jinyu(foxinmy@gmail.com)
|
||||||
|
|||||||
@ -37,7 +37,7 @@ public class WeixinTokenComponentCreator extends TokenCreator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String key0() {
|
public String key0() {
|
||||||
return String.format("mp_token_suite_%s_%s",
|
return String.format("mp_token_component_%s_%s",
|
||||||
perTicketManager.getThirdId(), perTicketManager.getAuthAppId());
|
perTicketManager.getThirdId(), perTicketManager.getAuthAppId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,10 @@ public class TemplateMessage implements Serializable {
|
|||||||
private final static String TAIL_KEY = "remark";
|
private final static String TAIL_KEY = "remark";
|
||||||
private final static String DEFAULT_COLOR = "#173177";
|
private final static String DEFAULT_COLOR = "#173177";
|
||||||
|
|
||||||
public TemplateMessage(String toUser, String templateId, String url) {
|
@JSONCreator
|
||||||
|
public TemplateMessage(@JSONField(name = "toUser") String toUser,
|
||||||
|
@JSONField(name = "templateId") String templateId,
|
||||||
|
@JSONField(name = "url") String url) {
|
||||||
this.toUser = toUser;
|
this.toUser = toUser;
|
||||||
this.templateId = templateId;
|
this.templateId = templateId;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
|
|||||||
@ -35,7 +35,7 @@ public class NotifyTest extends TokenTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void text() throws WeixinException {
|
public void text() throws WeixinException {
|
||||||
NotifyMessage notify = new NotifyMessage(0, new Text("content"));
|
NotifyMessage notify = new NotifyMessage(40, new Text("content"));
|
||||||
System.out.println(notifyApi.sendNotifyMessage(notify));
|
System.out.println(notifyApi.sendNotifyMessage(notify));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user