diff --git a/CHANGE.md b/CHANGE.md
index c3dbbd17..f25e651e 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -663,4 +663,6 @@
+ weixin4j-base:删除Mciro支付接口,新增MCIROPayRequest对象
- + weixin4j-base:支付对象优化
\ No newline at end of file
+ + weixin4j-base:支付对象优化
+
+ + weixin4j-base:新增海关接口
\ No newline at end of file
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CashApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CashApi.java
index 705823cb..b68bd05e 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CashApi.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CashApi.java
@@ -54,11 +54,12 @@ public class CashApi extends MchApi {
* @see com.foxinmy.weixin4j.payment.mch.Redpacket
* @see com.foxinmy.weixin4j.payment.mch.RedpacketSendResult
* @see 发放红包接口说明
+ * href="https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5">发放红包接口说明
* @throws WeixinException
*/
public RedpacketSendResult sendRedpack(InputStream certificate,
Redpacket redpacket) throws WeixinException {
+ redpacket.declareWeixinPayAccount(weixinAccount);
JSONObject obj = (JSONObject) JSON.toJSON(redpacket);
obj.put("wxappid", obj.remove("appid"));
obj.put("sign", weixinSignature.sign(obj));
@@ -136,6 +137,7 @@ public class CashApi extends MchApi {
*/
public CorpPaymentResult sendCorpPayment(InputStream certificate,
CorpPayment payment) throws WeixinException {
+ payment.declareWeixinPayAccount(weixinAccount);
JSONObject obj = (JSONObject) JSON.toJSON(payment);
obj.put("mchid", obj.remove("mch_id"));
obj.put("mch_appid", obj.remove("appid"));
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CustomsApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CustomsApi.java
new file mode 100644
index 00000000..440acc02
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/CustomsApi.java
@@ -0,0 +1,84 @@
+package com.foxinmy.weixin4j.api;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.foxinmy.weixin4j.exception.WeixinException;
+import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
+import com.foxinmy.weixin4j.model.WeixinPayAccount;
+import com.foxinmy.weixin4j.payment.mch.CustomsOrder;
+import com.foxinmy.weixin4j.payment.mch.CustomsOrderRecord;
+import com.foxinmy.weixin4j.payment.mch.CustomsOrderResult;
+import com.foxinmy.weixin4j.type.CustomsCity;
+import com.foxinmy.weixin4j.type.IdQuery;
+import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
+import com.foxinmy.weixin4j.xml.XmlStream;
+
+/**
+ * 报关接口
+ *
+ * @className CustomsApi
+ * @author jy
+ * @date 2016年3月67日
+ * @since JDK 1.7
+ * @see
+ */
+public class CustomsApi extends MchApi {
+
+ public CustomsApi(WeixinPayAccount weixinAccount) {
+ super(weixinAccount);
+ }
+
+ /**
+ * 订单附加信息提交
+ *
+ * @param customsOrder
+ * 附加订单信息
+ * @return 报关结果
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrder
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrderResult
+ * @see 附加订单信息
+ * @throws WeixinException
+ */
+ public CustomsOrderResult declareCustomsOrder(CustomsOrder customsOrder)
+ throws WeixinException {
+ JSONObject para = (JSONObject) JSON.toJSON(customsOrder);
+ para.put("appid", weixinAccount.getId());
+ para.put("mch_id", weixinAccount.getMchId());
+ para.put("sign", weixinSignature.sign(para));
+ String param = XmlStream.map2xml(para);
+ WeixinResponse response = weixinExecutor.post(
+ getRequestUri("customsorder_declare_uri"), param);
+ return response.getAsObject(new TypeReference() {
+ });
+ }
+
+ /**
+ * 订单附加信息查询
+ *
+ * @param idQuery
+ * out_trade_no,transaction_id,sub_order_no,sub_order_id四选一
+ * @param customsCity
+ * 海关
+ * @return 报关记录
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrderRecord
+ * @see 附加订单信息
+ * @throws WeixinException
+ */
+ public CustomsOrderRecord queryCustomsOrder(IdQuery idQuery,
+ CustomsCity customsCity) throws WeixinException {
+ JSONObject para = new JSONObject();
+ para.put("appid", weixinAccount.getId());
+ para.put("mch_id", weixinAccount.getMchId());
+ para.put(idQuery.getType().getName(), idQuery.getId());
+ para.put("customs", customsCity.name());
+ para.put("sign", weixinSignature.sign(para));
+ String param = XmlStream.map2xml(para);
+ WeixinResponse response = weixinExecutor.post(
+ getRequestUri("customsorder_query_uri"), param);
+ return ListsuffixResultDeserializer.deserialize(response.getAsString(),
+ CustomsOrderRecord.class);
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java
index 9c08b764..b9f3484b 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/PayApi.java
@@ -18,7 +18,6 @@ import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.foxinmy.weixin4j.exception.WeixinException;
-import com.foxinmy.weixin4j.exception.WeixinPayException;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.http.weixin.XmlResult;
import com.foxinmy.weixin4j.model.Consts;
@@ -79,27 +78,14 @@ public class PayApi extends MchApi {
* href="http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1">统一下单接口
* @return 预支付对象
*/
- public PrePay createPrePay(MchPayPackage payPackage)
- throws WeixinPayException {
+ public PrePay createPrePay(MchPayPackage payPackage) throws WeixinException {
+ payPackage.declareWeixinPayAccount(weixinAccount);
payPackage.setSign(weixinSignature.sign(payPackage));
String payJsRequestXml = XmlStream.toXML(payPackage);
- try {
- WeixinResponse response = weixinExecutor.post(
- getRequestUri("order_create_uri"), payJsRequestXml);
- PrePay prePay = response.getAsObject(new TypeReference() {
- });
- if (!prePay.getReturnCode().equalsIgnoreCase(Consts.SUCCESS)) {
- throw new WeixinPayException(prePay.getReturnMsg(),
- prePay.getReturnCode());
- }
- if (!prePay.getResultCode().equalsIgnoreCase(Consts.SUCCESS)) {
- throw new WeixinPayException(prePay.getResultCode(),
- prePay.getErrCodeDes());
- }
- return prePay;
- } catch (WeixinException e) {
- throw new WeixinPayException(e.getErrorCode(), e.getErrorMsg());
- }
+ WeixinResponse response = weixinExecutor.post(
+ getRequestUri("order_create_uri"), payJsRequestXml);
+ return response.getAsObject(new TypeReference() {
+ });
}
/**
@@ -113,10 +99,10 @@ public class PayApi extends MchApi {
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest 刷卡支付
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest APP支付
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest WAP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createPayRequest(MchPayPackage payPackage)
- throws WeixinPayException {
+ throws WeixinException {
PrePay prePay = createPrePay(payPackage);
String tradeType = payPackage.getTradeType();
if (TradeType.APP.name().equalsIgnoreCase(tradeType)) {
@@ -130,19 +116,15 @@ public class PayApi extends MchApi {
return new WAPPayRequest(prePay.getPrepayId(), weixinAccount);
} else if (TradeType.MICROPAY.name().equalsIgnoreCase(tradeType)) {
String para = XmlStream.toXML(payPackage);
- try {
- WeixinResponse response = weixinExecutor.post(
- getRequestUri("micropay_uri"), para);
- MICROPayRequest microPayRequest = response
- .getAsObject(new TypeReference() {
- });
- microPayRequest.setPaymentAccount(weixinAccount);
- return microPayRequest;
- } catch (WeixinException e) {
- throw new WeixinPayException(e);
- }
+ WeixinResponse response = weixinExecutor.post(
+ getRequestUri("micropay_uri"), para);
+ MICROPayRequest microPayRequest = response
+ .getAsObject(new TypeReference() {
+ });
+ microPayRequest.setPaymentAccount(weixinAccount);
+ return microPayRequest;
} else {
- throw new WeixinPayException("unknown tradeType:" + tradeType);
+ throw new WeixinException("unknown tradeType:" + tradeType);
}
}
@@ -185,17 +167,17 @@ public class PayApi extends MchApi {
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest 刷卡支付
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest APP支付
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest WAP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createPayRequest(String body, String detail,
String outTradeNo, double totalFee, String notifyUrl,
String createIp, TradeType tradeType, String openId,
String productId, String attach, Date timeStart, Date timeExpire,
String goodsTag, String limitPay, String subOpenId)
- throws WeixinPayException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, notifyUrl, createIp, tradeType, openId,
- null, productId, attach);
+ throws WeixinException {
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, notifyUrl, createIp, tradeType, openId, null,
+ productId, attach);
payPackage.setTimeStart(timeStart);
payPackage.setTimeExpire(timeExpire);
payPackage.setGoodsTag(goodsTag);
@@ -224,14 +206,14 @@ public class PayApi extends MchApi {
* 附加数据 非必填
* @see com.foxinmy.weixin4j.payment.mch.JSAPIPayRequest
* @return JSAPI支付对象
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createJSPayRequest(String openId, String body,
String outTradeNo, double totalFee, String notifyUrl,
- String createIp, String attach) throws WeixinPayException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, notifyUrl, createIp, TradeType.JSAPI,
- openId, null, null, attach);
+ String createIp, String attach) throws WeixinException {
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, notifyUrl, createIp, TradeType.JSAPI, openId, null,
+ null, attach);
return createPayRequest(payPackage);
}
@@ -317,14 +299,14 @@ public class PayApi extends MchApi {
* @see 扫码支付
* @see 模式一
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public NativePayResponse createNativePayResponse(String productId,
String body, String outTradeNo, double totalFee, String notifyUrl,
- String createIp, String attach) throws WeixinPayException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, notifyUrl, createIp, TradeType.NATIVE,
- null, null, productId, attach);
+ String createIp, String attach) throws WeixinException {
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, notifyUrl, createIp, TradeType.NATIVE, null, null,
+ productId, attach);
PrePay prePay = createPrePay(payPackage);
return new NativePayResponse(weixinAccount, prePay.getPrepayId());
}
@@ -351,14 +333,14 @@ public class PayApi extends MchApi {
* @see 扫码支付
* @see 模式二
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createNativePayRequest(String productId, String body,
String outTradeNo, double totalFee, String notifyUrl,
- String createIp, String attach) throws WeixinPayException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, notifyUrl, createIp, TradeType.NATIVE,
- null, null, productId, attach);
+ String createIp, String attach) throws WeixinException {
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, notifyUrl, createIp, TradeType.NATIVE, null, null,
+ productId, attach);
return createPayRequest(payPackage);
}
@@ -381,14 +363,14 @@ public class PayApi extends MchApi {
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest
* @see APP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createAppPayRequest(String body, String outTradeNo,
double totalFee, String notifyUrl, String createIp, String attach)
- throws WeixinPayException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, notifyUrl, createIp, TradeType.APP, null,
- null, null, attach);
+ throws WeixinException {
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, notifyUrl, createIp, TradeType.APP, null, null, null,
+ attach);
return createPayRequest(payPackage);
}
@@ -411,14 +393,14 @@ public class PayApi extends MchApi {
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest
* @see WAP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createWAPPayRequest(String body, String outTradeNo,
double totalFee, String notifyUrl, String createIp, String attach)
- throws WeixinPayException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, notifyUrl, createIp, TradeType.WAP, null,
- null, null, attach);
+ throws WeixinException {
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, notifyUrl, createIp, TradeType.WAP, null, null, null,
+ attach);
return createPayRequest(payPackage);
}
@@ -447,9 +429,9 @@ public class PayApi extends MchApi {
public MchPayRequest createMICROPayRequest(String authCode, String body,
String outTradeNo, double totalFee, String createIp, String attach)
throws WeixinException {
- MchPayPackage payPackage = new MchPayPackage(weixinAccount, body,
- outTradeNo, totalFee, null, createIp, TradeType.MICROPAY, null,
- null, null, attach);
+ MchPayPackage payPackage = new MchPayPackage(body, outTradeNo,
+ totalFee, null, createIp, TradeType.MICROPAY, null, null, null,
+ attach);
return createPayRequest(payPackage);
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayPackage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayPackage.java
index 778e9f7b..62d4579a 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayPackage.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayPackage.java
@@ -8,7 +8,6 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import com.alibaba.fastjson.annotation.JSONField;
-import com.foxinmy.weixin4j.model.WeixinPayAccount;
import com.foxinmy.weixin4j.payment.mch.MerchantResult;
import com.foxinmy.weixin4j.util.DateUtil;
@@ -91,8 +90,6 @@ public class PayPackage extends MerchantResult {
/**
* 订单对象
*
- * @param weixinPayAccount
- * 商户信息 必填
* @param body
* 订单描述 必填
* @param detail
@@ -114,11 +111,9 @@ public class PayPackage extends MerchantResult {
* @param goodsTag
* 订单标记 非必填
*/
- public PayPackage(WeixinPayAccount weixinPayAccount, String body,
- String detail, String outTradeNo, double totalFee,
- String notifyUrl, String createIp, String attach, Date timeStart,
- Date timeExpire, String goodsTag) {
- super(weixinPayAccount);
+ public PayPackage(String body, String detail, String outTradeNo,
+ double totalFee, String notifyUrl, String createIp, String attach,
+ Date timeStart, Date timeExpire, String goodsTag) {
this.body = body;
this.detail = detail;
this.outTradeNo = outTradeNo;
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
index a86e9a6f..9ef78014 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
@@ -8,9 +8,9 @@ import java.util.Date;
import com.foxinmy.weixin4j.api.CashApi;
import com.foxinmy.weixin4j.api.CouponApi;
+import com.foxinmy.weixin4j.api.CustomsApi;
import com.foxinmy.weixin4j.api.PayApi;
import com.foxinmy.weixin4j.exception.WeixinException;
-import com.foxinmy.weixin4j.exception.WeixinPayException;
import com.foxinmy.weixin4j.http.weixin.XmlResult;
import com.foxinmy.weixin4j.model.Pageable;
import com.foxinmy.weixin4j.model.WeixinPayAccount;
@@ -20,6 +20,9 @@ import com.foxinmy.weixin4j.payment.coupon.CouponStock;
import com.foxinmy.weixin4j.payment.mch.CorpPayment;
import com.foxinmy.weixin4j.payment.mch.CorpPaymentRecord;
import com.foxinmy.weixin4j.payment.mch.CorpPaymentResult;
+import com.foxinmy.weixin4j.payment.mch.CustomsOrder;
+import com.foxinmy.weixin4j.payment.mch.CustomsOrderRecord;
+import com.foxinmy.weixin4j.payment.mch.CustomsOrderResult;
import com.foxinmy.weixin4j.payment.mch.MchPayPackage;
import com.foxinmy.weixin4j.payment.mch.MchPayRequest;
import com.foxinmy.weixin4j.payment.mch.MerchantResult;
@@ -35,6 +38,7 @@ import com.foxinmy.weixin4j.payment.mch.RefundResult;
import com.foxinmy.weixin4j.payment.mch.SettlementRecord;
import com.foxinmy.weixin4j.type.BillType;
import com.foxinmy.weixin4j.type.CurrencyType;
+import com.foxinmy.weixin4j.type.CustomsCity;
import com.foxinmy.weixin4j.type.IdQuery;
import com.foxinmy.weixin4j.type.TradeType;
import com.foxinmy.weixin4j.util.Weixin4jSettings;
@@ -62,6 +66,10 @@ public class WeixinPayProxy {
* 现金API
*/
private final CashApi cashApi;
+ /**
+ * 海关API
+ */
+ private final CustomsApi customsApi;
/**
* 配置相关
*/
@@ -85,6 +93,7 @@ public class WeixinPayProxy {
this.payApi = new PayApi(settings.getWeixinPayAccount());
this.couponApi = new CouponApi(settings.getWeixinPayAccount());
this.cashApi = new CashApi(settings.getWeixinPayAccount());
+ this.customsApi = new CustomsApi(settings.getWeixinPayAccount());
}
/**
@@ -110,8 +119,7 @@ public class WeixinPayProxy {
* href="http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1">统一下单接口
* @return 预支付对象
*/
- public PrePay createPrePay(MchPayPackage payPackage)
- throws WeixinPayException {
+ public PrePay createPrePay(MchPayPackage payPackage) throws WeixinException {
return payApi.createPrePay(payPackage);
}
@@ -127,10 +135,10 @@ public class WeixinPayProxy {
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest 刷卡支付
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest APP支付
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest WAP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createPayRequest(MchPayPackage payPackage)
- throws WeixinPayException {
+ throws WeixinException {
return payApi.createPayRequest(payPackage);
}
@@ -174,14 +182,14 @@ public class WeixinPayProxy {
* @see com.foxinmy.weixin4j.payment.mch.MICROPayRequest 刷卡支付
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest APP支付
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest WAP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createPayRequest(String body, String detail,
String outTradeNo, double totalFee, String notifyUrl,
String createIp, TradeType tradeType, String openId,
String productId, String attach, Date timeStart, Date timeExpire,
String goodsTag, String limitPay, String subOpenId)
- throws WeixinPayException {
+ throws WeixinException {
return payApi.createPayRequest(body, detail, outTradeNo, totalFee,
notifyUrl, createIp, tradeType, openId, productId, attach,
timeStart, timeExpire, goodsTag, limitPay, subOpenId);
@@ -207,11 +215,11 @@ public class WeixinPayProxy {
* @see com.foxinmy.weixin4j.api.PayApi
* @see com.foxinmy.weixin4j.payment.mch.JSAPIPayRequest
* @return JSAPI支付对象
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createJSPayRequest(String openId, String body,
String outTradeNo, double totalFee, String notifyUrl,
- String createIp, String attach) throws WeixinPayException {
+ String createIp, String attach) throws WeixinException {
return payApi.createJSPayRequest(openId, body, outTradeNo, totalFee,
notifyUrl, createIp, attach);
}
@@ -278,11 +286,11 @@ public class WeixinPayProxy {
* @see 扫码支付
* @see 模式一
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public NativePayResponse createNativePayResponse(String productId,
String body, String outTradeNo, double totalFee, String notifyUrl,
- String createIp, String attach) throws WeixinPayException {
+ String createIp, String attach) throws WeixinException {
return payApi.createNativePayResponse(productId, body, outTradeNo,
totalFee, notifyUrl, createIp, attach);
}
@@ -310,11 +318,11 @@ public class WeixinPayProxy {
* @see 扫码支付
* @see 模式二
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createNativePayRequest(String productId, String body,
String outTradeNo, double totalFee, String notifyUrl,
- String createIp, String attach) throws WeixinPayException {
+ String createIp, String attach) throws WeixinException {
return payApi.createNativePayRequest(productId, body, outTradeNo,
totalFee, notifyUrl, createIp, attach);
}
@@ -339,11 +347,11 @@ public class WeixinPayProxy {
* @see com.foxinmy.weixin4j.payment.mch.APPPayRequest
* @see APP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createAppPayRequest(String body, String outTradeNo,
double totalFee, String notifyUrl, String createIp, String attach)
- throws WeixinPayException {
+ throws WeixinException {
return payApi.createAppPayRequest(body, outTradeNo, totalFee,
notifyUrl, createIp, attach);
}
@@ -368,11 +376,11 @@ public class WeixinPayProxy {
* @see com.foxinmy.weixin4j.payment.mch.WAPPayRequest
* @see WAP支付
- * @throws WeixinPayException
+ * @throws WeixinException
*/
public MchPayRequest createWAPPayRequest(String body, String outTradeNo,
double totalFee, String notifyUrl, String createIp, String attach)
- throws WeixinPayException {
+ throws WeixinException {
return payApi.createWAPPayRequest(body, outTradeNo, totalFee,
notifyUrl, createIp, attach);
}
@@ -891,5 +899,42 @@ public class WeixinPayProxy {
return cashApi.queryExchageRate(currencyType, date);
}
+ /**
+ * 订单附加信息提交
+ *
+ * @param customsOrder
+ * 附加订单信息
+ * @return 报关结果
+ * @see com.foxinmy.weixin4j.api.CustomsApi
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrder
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrderResult
+ * @see 附加订单信息
+ * @throws WeixinException
+ */
+ public CustomsOrderResult declareCustomsOrder(CustomsOrder customsOrder)
+ throws WeixinException {
+ return customsApi.declareCustomsOrder(customsOrder);
+ }
+
+ /**
+ * 订单附加信息查询
+ *
+ * @param idQuery
+ * out_trade_no,transaction_id,sub_order_no,sub_order_id四选一
+ * @param customsCity
+ * 海关
+ * @return 报关记录
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrderRecord
+ * @see com.foxinmy.weixin4j.api.CustomsApi
+ * @see 附加订单信息
+ * @throws WeixinException
+ */
+ public CustomsOrderRecord queryCustomsOrder(IdQuery idQuery,
+ CustomsCity customsCity) throws WeixinException {
+ return customsApi.queryCustomsOrder(idQuery, customsCity);
+ }
+
public final static String VERSION = "1.6.7";
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CorpPayment.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CorpPayment.java
index 51875f2a..80e38b3c 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CorpPayment.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CorpPayment.java
@@ -6,7 +6,6 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import com.alibaba.fastjson.annotation.JSONField;
-import com.foxinmy.weixin4j.model.WeixinPayAccount;
import com.foxinmy.weixin4j.type.MPPaymentCheckNameType;
import com.foxinmy.weixin4j.util.DateUtil;
@@ -72,8 +71,6 @@ public class CorpPayment extends MerchantResult {
/**
* 企业付款
*
- * @param weixinPayAccount
- * 商户信息
* @param outTradeNo
* 商户的订单号
* @param openId
@@ -87,10 +84,9 @@ public class CorpPayment extends MerchantResult {
* @param clientIp
* 调用接口IP
*/
- public CorpPayment(WeixinPayAccount weixinPayAccount, String outTradeNo,
- String openId, MPPaymentCheckNameType checkNameType, String desc,
- double amount, String clientIp) {
- super(weixinPayAccount);
+ public CorpPayment(String outTradeNo, String openId,
+ MPPaymentCheckNameType checkNameType, String desc, double amount,
+ String clientIp) {
this.outTradeNo = outTradeNo;
this.openId = openId;
this.checkNameType = checkNameType;
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrder.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrder.java
new file mode 100644
index 00000000..c98d0256
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrder.java
@@ -0,0 +1,217 @@
+package com.foxinmy.weixin4j.payment.mch;
+
+import javax.xml.bind.annotation.XmlElement;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.foxinmy.weixin4j.type.CredentialType;
+import com.foxinmy.weixin4j.type.CurrencyType;
+import com.foxinmy.weixin4j.type.CustomsCity;
+
+/**
+ * 报关对象
+ *
+ * @className CustomsOrder
+ * @author jy
+ * @date 2016年3月27日
+ * @since JDK 1.6
+ * @see
+ */
+public class CustomsOrder extends MerchantResult {
+
+ private static final long serialVersionUID = 799510373861612386L;
+ /**
+ * 微信支付订单号
+ */
+ @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 = "sub_order_no")
+ @JSONField(name = "sub_order_no")
+ private String subOrderNo;
+ /**
+ * 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
+ *
+ * @see com.foxinmy.weixin4j.mp.type.CurrencyType
+ */
+ @XmlElement(name = "fee_type")
+ @JSONField(name = "fee_type")
+ private CurrencyType feeType;
+ /**
+ * 子订单金额,以分为单位,不能超过原订单金额,order_fee=transport_fee+product_fee(应付金额=物流费+商品价格),
+ * 如有拆单则必传。
+ */
+ @XmlElement(name = "order_fee")
+ @JSONField(name = "order_fee")
+ private String orderFee;
+ /**
+ * 物流费用,以分为单位,如有拆单则必传。
+ */
+ @XmlElement(name = "transport_fee")
+ @JSONField(name = "transport_fee")
+ private String transportFee;
+ /**
+ * 商品费用,以分为单位,如有拆单则必传。
+ */
+ @XmlElement(name = "product_fee")
+ @JSONField(name = "product_fee")
+ private String productFee;
+ /**
+ * 关税,以分为单位
+ */
+ @XmlElement(name = "duty")
+ @JSONField(name = "duty")
+ private String dutyFee;
+ /**
+ * 海关
+ */
+ @XmlElement(name = "customs")
+ @JSONField(name = "customs")
+ private CustomsCity customsCity;
+ /**
+ * 商户在海关登记的备案号,customsCity非NO,此参数必填
+ */
+ @XmlElement(name = "mch_customs_no")
+ @JSONField(name = "mch_customs_no")
+ private String customsNo;
+ /**
+ * 证件类型:暂只支持身份证,该参数是指用户信息,商户若有用户信息,可上送,系统将以商户上传的数据为准,进行海关通关报备
+ */
+ @XmlElement(name = "cert_type")
+ @JSONField(name = "cert_type")
+ private CredentialType credentialType;
+ /**
+ * 证件号码:身份证号,该参数是指用户信息,商户若有用户信息,可上送,系统将以商户上传的数据为准,进行海关通关报备;
+ */
+ @XmlElement(name = "cert_id")
+ @JSONField(name = "cert_id")
+ private String credentialId;
+ /**
+ * 用户姓名,该参数是指用户信息,商户若有用户信息,可上送,系统将以商户上传的数据为准,进行海关通关报备;
+ */
+ @XmlElement(name = "name")
+ @JSONField(name = "name")
+ private String uname;
+
+ public CustomsOrder(String transactionId, String outTradeNo) {
+ this.transactionId = transactionId;
+ this.outTradeNo = outTradeNo;
+ this.customsCity = CustomsCity.NO;
+ }
+
+ public String getSubOrderNo() {
+ return subOrderNo;
+ }
+
+ public void setSubOrderNo(String subOrderNo) {
+ this.subOrderNo = subOrderNo;
+ }
+
+ public CurrencyType getFeeType() {
+ return feeType;
+ }
+
+ public void setFeeType(CurrencyType feeType) {
+ this.feeType = feeType;
+ }
+
+ public String getOrderFee() {
+ return orderFee;
+ }
+
+ public void setOrderFee(String orderFee) {
+ this.orderFee = orderFee;
+ }
+
+ public String getTransportFee() {
+ return transportFee;
+ }
+
+ public void setTransportFee(String transportFee) {
+ this.transportFee = transportFee;
+ }
+
+ public String getProductFee() {
+ return productFee;
+ }
+
+ public void setProductFee(String productFee) {
+ this.productFee = productFee;
+ }
+
+ public String getDutyFee() {
+ return dutyFee;
+ }
+
+ public void setDutyFee(String dutyFee) {
+ this.dutyFee = dutyFee;
+ }
+
+ public CustomsCity getCustomsCity() {
+ return customsCity;
+ }
+
+ public void setCustomsCity(CustomsCity customsCity) {
+ this.customsCity = customsCity;
+ }
+
+ public String getCustomsNo() {
+ return customsNo;
+ }
+
+ public void setCustomsNo(String customsNo) {
+ this.customsNo = customsNo;
+ }
+
+ public CredentialType getCredentialType() {
+ return credentialType;
+ }
+
+ public void setCredentialType(CredentialType credentialType) {
+ this.credentialType = credentialType;
+ }
+
+ public String getCredentialId() {
+ return credentialId;
+ }
+
+ public void setCredentialId(String credentialId) {
+ this.credentialId = credentialId;
+ }
+
+ public String getUname() {
+ return uname;
+ }
+
+ public void setUname(String uname) {
+ this.uname = uname;
+ }
+
+ public String getTransactionId() {
+ return transactionId;
+ }
+
+ public String getOutTradeNo() {
+ return outTradeNo;
+ }
+
+ @Override
+ public String toString() {
+ return "CustomsOrder [transactionId=" + transactionId + ", outTradeNo="
+ + outTradeNo + ", subOrderNo=" + subOrderNo + ", feeType="
+ + feeType + ", orderFee=" + orderFee + ", transportFee="
+ + transportFee + ", productFee=" + productFee + ", dutyFee="
+ + dutyFee + ", customsCity=" + customsCity + ", customsNo="
+ + customsNo + ", credentialType=" + credentialType
+ + ", credentialId=" + credentialId + ", uname=" + uname + ", "
+ + super.toString() + "]";
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrderRecord.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrderRecord.java
new file mode 100644
index 00000000..6dcc8bed
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrderRecord.java
@@ -0,0 +1,73 @@
+package com.foxinmy.weixin4j.payment.mch;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.foxinmy.weixin4j.xml.ListsuffixResult;
+
+/**
+ * 报关记录
+ *
+ * @className CustomsOrderRecord
+ * @author jy
+ * @date 2016年3月27日
+ * @since JDK 1.6
+ * @see
+ */
+public class CustomsOrderRecord extends MerchantResult {
+
+ private static final long serialVersionUID = -1675090110657154049L;
+ /**
+ * 微信支付订单号
+ */
+ @XmlElement(name = "transaction_id")
+ @JSONField(name = "transaction_id")
+ private String transactionId;
+ /**
+ * 笔数
+ */
+ @XmlElement(name = "count")
+ @JSONField(name = "count")
+ private int orderCount;
+
+ /**
+ * 报关详情
+ *
+ * @see com.foxinmy.weixin4j.payment.mch.CustomsOrderResult
+ */
+ @ListsuffixResult
+ private List customsOrderList;
+
+ public String getTransactionId() {
+ return transactionId;
+ }
+
+ public void setTransactionId(String transactionId) {
+ this.transactionId = transactionId;
+ }
+
+ public int getOrderCount() {
+ return orderCount;
+ }
+
+ public void setOrderCount(int orderCount) {
+ this.orderCount = orderCount;
+ }
+
+ public List getCustomsOrderList() {
+ return customsOrderList;
+ }
+
+ public void setCustomsOrderList(List customsOrderList) {
+ this.customsOrderList = customsOrderList;
+ }
+
+ @Override
+ public String toString() {
+ return "CustomsOrderRecord [transactionId=" + transactionId
+ + ", orderCount=" + orderCount + ", customsOrderList="
+ + customsOrderList + "]";
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrderResult.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrderResult.java
new file mode 100644
index 00000000..394ffee4
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/CustomsOrderResult.java
@@ -0,0 +1,124 @@
+package com.foxinmy.weixin4j.payment.mch;
+
+import java.util.Date;
+
+import javax.xml.bind.annotation.XmlElement;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.foxinmy.weixin4j.type.CustomsSatus;
+import com.foxinmy.weixin4j.util.DateUtil;
+
+/**
+ * 报关结果
+ *
+ * @className CustomsOrderResult
+ * @author jy
+ * @date 2016年3月27日
+ * @since JDK 1.6
+ * @see
+ */
+public class CustomsOrderResult extends MerchantResult {
+
+ private static final long serialVersionUID = 799510373861612386L;
+ /**
+ * 状态码
+ */
+ private String state;
+ /**
+ * 微信支付订单号
+ */
+ @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 = "sub_order_no")
+ @JSONField(name = "sub_order_no")
+ private String subOrderNo;
+ /**
+ * 微信子订单号
+ *
+ */
+ @XmlElement(name = "sub_order_id")
+ @JSONField(name = "sub_order_id")
+ private String subOrderId;
+ /**
+ * 最后更新时间
+ */
+ @XmlElement(name = "modify_time")
+ @JSONField(name = "modify_time")
+ private String modifyTime;
+
+ public String getState() {
+ return state;
+ }
+
+ @JSONField(serialize = false)
+ public CustomsSatus getFormatState() {
+ return CustomsSatus.valueOf(state.toUpperCase());
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ 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;
+ }
+
+ public String getSubOrderNo() {
+ return subOrderNo;
+ }
+
+ public void setSubOrderNo(String subOrderNo) {
+ this.subOrderNo = subOrderNo;
+ }
+
+ public String getSubOrderId() {
+ return subOrderId;
+ }
+
+ public void setSubOrderId(String subOrderId) {
+ this.subOrderId = subOrderId;
+ }
+
+ public String getModifyTime() {
+ return modifyTime;
+ }
+
+ @JSONField(serialize = false)
+ public Date getFormatModifyTime() {
+ return DateUtil.parse2yyyyMMddHHmmss(modifyTime);
+ }
+
+ public void setModifyTime(String modifyTime) {
+ this.modifyTime = modifyTime;
+ }
+
+ @Override
+ public String toString() {
+ return "CustomsOrderResult [state=" + state + ", transactionId="
+ + transactionId + ", outTradeNo=" + outTradeNo
+ + ", subOrderNo=" + subOrderNo + ", subOrderId=" + subOrderId
+ + ", modifyTime=" + modifyTime + "]";
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java
index 86a94c11..bca1aee5 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MchPayPackage.java
@@ -8,7 +8,6 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import com.alibaba.fastjson.annotation.JSONField;
-import com.foxinmy.weixin4j.model.WeixinPayAccount;
import com.foxinmy.weixin4j.payment.PayPackage;
import com.foxinmy.weixin4j.type.TradeType;
@@ -73,8 +72,6 @@ public class MchPayPackage extends PayPackage {
/**
* 微信支付
*
- * @param weixinAccount
- * 商户信息 必填
* @param body
* 支付详情 必填
* @param outTradeNo
@@ -96,20 +93,17 @@ public class MchPayPackage extends PayPackage {
* @param attach
* 支付时附加信息 非必填
*/
- public MchPayPackage(WeixinPayAccount weixinAccount, String body,
- String outTradeNo, double totalFee, String notifyUrl,
- String createIp, TradeType tradeType, String openId,
- String authCode, String productId, String attach) {
- this(weixinAccount, body, null, outTradeNo, totalFee, notifyUrl,
- createIp, tradeType, openId, authCode, productId, attach, null,
- null, null, null, null);
+ public MchPayPackage(String body, String outTradeNo, double totalFee,
+ String notifyUrl, String createIp, TradeType tradeType,
+ String openId, String authCode, String productId, String attach) {
+ this(body, null, outTradeNo, totalFee, notifyUrl, createIp, tradeType,
+ openId, authCode, productId, attach, null, null, null, null,
+ null);
}
/**
* 完整参数
*
- * @param weixinAccount
- * 商户信息 必填
* @param body
* 支付详情 必填
* @param detail
@@ -146,14 +140,13 @@ public class MchPayPackage extends PayPackage {
* 用户在子商户appid下的唯一标识 非必填
* openid和sub_openid可以选传其中之一,如果选择传sub_openid ,则必须传sub_appid
*/
- public MchPayPackage(WeixinPayAccount weixinPayAccount, String body,
- String detial, String outTradeNo, double totalFee,
- String notifyUrl, String createIp, TradeType tradeType,
- String openId, String authCode, String productId, String attach,
- Date timeStart, Date timeExpire, String goodsTag, String limitPay,
- String subOpenId) {
- super(weixinPayAccount, body, detial, outTradeNo, totalFee, notifyUrl,
- createIp, attach, timeStart, timeExpire, goodsTag);
+ public MchPayPackage(String body, String detial, String outTradeNo,
+ double totalFee, String notifyUrl, String createIp,
+ TradeType tradeType, String openId, String authCode,
+ String productId, String attach, Date timeStart, Date timeExpire,
+ String goodsTag, String limitPay, String subOpenId) {
+ super(body, detial, outTradeNo, totalFee, notifyUrl, createIp, attach,
+ timeStart, timeExpire, goodsTag);
this.tradeType = tradeType.name();
this.openId = openId;
this.authCode = authCode;
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MerchantResult.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MerchantResult.java
index 1173e107..fa33c58e 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MerchantResult.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/MerchantResult.java
@@ -85,15 +85,6 @@ public class MerchantResult extends XmlResult {
super(returnCode, returnMsg);
}
- public MerchantResult(WeixinPayAccount weixinPayAccount) {
- this.appId = weixinPayAccount.getId();
- this.mchId = weixinPayAccount.getMchId();
- this.deviceInfo = weixinPayAccount.getDeviceInfo();
- this.subId = weixinPayAccount.getSubId();
- this.subMchId = weixinPayAccount.getSubMchId();
- this.nonceStr = RandomUtil.generateString(16);
- }
-
public String getAppId() {
return appId;
}
@@ -177,6 +168,22 @@ public class MerchantResult extends XmlResult {
return recall != null && recall.equalsIgnoreCase("y");
}
+ /**
+ * 赋值给对应字段
+ *
+ * @param weixinPayAccount
+ * 商户信息
+ */
+ @JSONField(deserialize = false)
+ public void declareWeixinPayAccount(WeixinPayAccount weixinPayAccount) {
+ this.appId = weixinPayAccount.getId();
+ this.mchId = weixinPayAccount.getMchId();
+ this.deviceInfo = weixinPayAccount.getDeviceInfo();
+ this.subId = weixinPayAccount.getSubId();
+ this.subMchId = weixinPayAccount.getSubMchId();
+ this.nonceStr = RandomUtil.generateString(16);
+ }
+
@Override
public String toString() {
return "appId=" + appId + ", mchId=" + mchId + ", subId=" + subId
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/Redpacket.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/Redpacket.java
index 4a1ab8c7..4f537771 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/Redpacket.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/Redpacket.java
@@ -103,8 +103,6 @@ public class Redpacket extends MerchantResult {
/**
* 红包
*
- * @param weixinPayAccount
- * 商户信息
* @param outTradeNo
* 商户侧一天内不可重复的订单号 接口根据商户订单号支持重入 如出现超时可再调用 必填
* @param sendName
@@ -127,17 +125,13 @@ public class Redpacket extends MerchantResult {
public Redpacket(WeixinPayAccount weixinPayAccount, String outTradeNo,
String sendName, String openid, double totalAmount, int totalNum,
String wishing, String clientIp, String actName, String remark) {
- this(weixinPayAccount, null, null, outTradeNo, sendName, openid,
- totalAmount, totalNum, wishing, clientIp, actName, remark);
+ this(null, null, outTradeNo, sendName, openid, totalAmount, totalNum,
+ wishing, clientIp, actName, remark);
}
/**
* 红包 完整参数
*
- * @param appId
- * 公众号唯一标识 必填
- * @param mchId
- * 微信支付商户号 必填
* @param subMchId
* 子商户商户号 非必填
* @param subMsgId
@@ -163,11 +157,9 @@ public class Redpacket extends MerchantResult {
* @param remark
* 备注 必填
*/
- public Redpacket(WeixinPayAccount weixinPayAccount, String subMsgId,
- String consumeMchId, String outTradeNo, String sendName,
- String openid, double totalAmount, int totalNum, String wishing,
- String clientIp, String actName, String remark) {
- super(weixinPayAccount);
+ public Redpacket(String subMsgId, String consumeMchId, String outTradeNo,
+ String sendName, String openid, double totalAmount, int totalNum,
+ String wishing, String clientIp, String actName, String remark) {
this.subMsgId = subMsgId;
this.consumeMchId = consumeMchId;
this.outTradeNo = outTradeNo;
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/weixin.properties b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/weixin.properties
index e9fd03ff..8b88c2d4 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/weixin.properties
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/weixin.properties
@@ -52,4 +52,8 @@ native_pay_uri=weixin://wxpay/bizpayurl?sign=%s&appid=%s&mch_id=%s&product_id=%s
# \u67e5\u8be2\u7ed3\u7b97\u8d44\u91d1
settlement_query_uri={mch_base_url}/pay/settlementquery
# \u67e5\u8be2\u6c47\u7387
-exchagerate_query_uri={mch_base_url}/pay/queryexchagerate
\ No newline at end of file
+exchagerate_query_uri={mch_base_url}/pay/queryexchagerate
+# \u8ba2\u5355\u9644\u52a0\u4fe1\u606f\u63d0\u4ea4
+customsorder_declare_uri={mch_base_url}/mch/customs/customdeclareorder
+# \u8ba2\u5355\u9644\u52a0\u4fe1\u606f\u67e5\u8be2
+customsorder_query_uri={mch_base_url}/mch/customs/customdeclarequery
\ No newline at end of file
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CredentialType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CredentialType.java
new file mode 100644
index 00000000..03e5c1b7
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CredentialType.java
@@ -0,0 +1,23 @@
+package com.foxinmy.weixin4j.type;
+
+/**
+ * 证件类型
+ *
+ * @className CredentialType
+ * @author jy
+ * @date 2016年3月27日
+ * @since JDK 1.6
+ * @see
+ */
+public enum CredentialType {
+ IDCARD("身份证");
+ CredentialType(String name) {
+ this.name = name;
+ }
+
+ private String name;
+
+ public String getName() {
+ return this.name;
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CustomsCity.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CustomsCity.java
new file mode 100644
index 00000000..506f5160
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CustomsCity.java
@@ -0,0 +1,26 @@
+package com.foxinmy.weixin4j.type;
+
+/**
+ * 海关
+ *
+ * @className CustomsCity
+ * @author jy
+ * @date 2016年3月27日
+ * @since JDK 1.6
+ * @see
+ */
+public enum CustomsCity {
+ NO("无需上报海关"), GUANGZHOU("广州"), HANGZHOU("杭州"), NINGBO("宁波"), ZHENGZHOU_BS(
+ "郑州(保税物流中心)"), CHONGQING("重庆"), XIAN("西安"), SHANGHAI("上海"), ZHENGZHOU_ZH(
+ "郑州(综保区)");
+
+ private String name;
+
+ CustomsCity(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CustomsSatus.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CustomsSatus.java
new file mode 100644
index 00000000..87429da1
--- /dev/null
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/CustomsSatus.java
@@ -0,0 +1,24 @@
+package com.foxinmy.weixin4j.type;
+
+/**
+ * 报关状态
+ *
+ * @className CustomsSatus
+ * @author jy
+ * @date 2016年3月27日
+ * @since JDK 1.6
+ * @see
+ */
+public enum CustomsSatus {
+ UNDECLARED("未申报"), SUBMITTED("申报已提交"), PROCESSING("申报中"), SUCCESS("申报成功"), FAIL(
+ "申报失败"), EXCEPT("海关接口异常");
+ private String sate;
+
+ CustomsSatus(String sate) {
+ this.sate = sate;
+ }
+
+ public String getSate() {
+ return this.sate;
+ }
+}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/IdType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/IdType.java
index 8f57be20..eccc086a 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/IdType.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/IdType.java
@@ -25,7 +25,15 @@ public enum IdType {
/**
* 商户退款号
*/
- REFUNDNO("out_refund_no");
+ REFUNDNO("out_refund_no"),
+ /**
+ * 商户子订单号
+ */
+ SUBORDERNO("sub_order_no"),
+ /**
+ * 微信子订单号
+ */
+ SUBORDERID("sub_order_id");
private String name;
IdType(String name) {
diff --git a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/CashTest.java b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/CashTest.java
index 970e67f4..417cfbd2 100644
--- a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/CashTest.java
+++ b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/CashTest.java
@@ -44,7 +44,7 @@ public class CashTest extends PayTest {
@Test
public void sendCorpPayment() throws WeixinException, IOException {
- CorpPayment payment = new CorpPayment(ACCOUNT, "MP001",
+ CorpPayment payment = new CorpPayment("MP001",
"ofW1gwok9vZIyle0YbA-eQe83Uk8",
MPPaymentCheckNameType.NO_CHECK, "企业付款测试", 1d, "127.0.0.1");
CorpPaymentResult result = PAY.sendCorpPayment(new FileInputStream(
diff --git a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java
index d40d02e2..cf7b42a5 100644
--- a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java
+++ b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java
@@ -107,9 +107,9 @@ public class PayTest {
@Test
public void nativePay() throws WeixinException {
- MchPayPackage payPackageV3 = new MchPayPackage(ACCOUNT, "native测试",
- "T0001", 0.1d, "notify_url", "127.0.0.1", TradeType.NATIVE,
- null, null, "productId", null);
+ MchPayPackage payPackageV3 = new MchPayPackage("native测试", "T0001",
+ 0.1d, "notify_url", "127.0.0.1", TradeType.NATIVE, null, null,
+ "productId", null);
PrePay prePay = null;
try {
prePay = PAY.createPrePay(payPackageV3);