From 0da10d4491ef0c3ed2340ce7eee5b167b53230ab Mon Sep 17 00:00:00 2001 From: jinyu Date: Thu, 21 Jan 2016 20:05:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=AB=E7=A0=81=E6=94=AF?= =?UTF-8?q?=E4=BB=98(Native)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../com/foxinmy/weixin4j/api/Pay3Api.java | 33 ++++++++++ .../foxinmy/weixin4j/payment/PayBaseInfo.java | 2 + .../foxinmy/weixin4j/payment/PayRequest.java | 4 +- .../weixin4j/payment/WeixinPayProxy.java | 31 +++++++++ .../payment/mch/NativePayResponse.java | 28 +------- .../com/foxinmy/weixin4j/mp/api/Pay2Api.java | 7 +- .../foxinmy/weixin4j/mp/api/weixin.properties | 3 +- .../mp/payment/v2/JsPayRequestV2.java | 2 +- .../mp/payment/v2/NativePayResponseV2.java | 64 ++++++++----------- 10 files changed, 104 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 48d419e1..20ef6129 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ weixin4j * [微信门店](http://mp.weixin.qq.com/wiki/11/081986f089826bf94393bef9bf287b8b.html) -* [微信摇一摇周边](http://mp.weixin.qq.com/wiki/19/9fe9fdbb50fee9f9660438c551142ccf.html) +* [微信摇一摇](http://mp.weixin.qq.com/wiki/19/9fe9fdbb50fee9f9660438c551142ccf.html) * [微信连WI-FI](http://mp.weixin.qq.com/wiki/9/fd2d692e28b938a8d618f57cf9c79fb1.html) diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java index b5d3988b..c320df0d 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java @@ -34,6 +34,7 @@ import com.foxinmy.weixin4j.payment.mch.JSAPIPayRequest; import com.foxinmy.weixin4j.payment.mch.MchPayPackage; import com.foxinmy.weixin4j.payment.mch.MchPayRequest; import com.foxinmy.weixin4j.payment.mch.NATIVEPayRequest; +import com.foxinmy.weixin4j.payment.mch.NativePayResponse; import com.foxinmy.weixin4j.payment.mch.Order; import com.foxinmy.weixin4j.payment.mch.PrePay; import com.foxinmy.weixin4j.payment.mch.RefundRecord; @@ -290,6 +291,38 @@ public class Pay3Api { timestamp, noncestr); } + /** + * 创建Native支付(扫码支付)回调对象【模式一】 + * + * @param productId + * 商品ID + * @param body + * 商品描述 + * @param outTradeNo + * 商户内部唯一订单号 + * @param totalFee + * 商品总额 单位元 + * @param notifyUrl + * 支付回调URL + * @param createIp + * 订单生成的机器 IP + * @return Native回调对象 + * @see com.foxinmy.weixin4j.payment.mch.NativePayResponse + * @see 扫码支付 + * @see 模式一 + * @throws WeixinPayException + */ + public NativePayResponse createNativePayResponse(String productId, + String body, String outTradeNo, double totalFee, String notifyUrl, + String createIp) throws WeixinPayException { + MchPayPackage payPackage = new MchPayPackage(weixinAccount, null, body, + outTradeNo, totalFee, notifyUrl, createIp, TradeType.NATIVE); + payPackage.setProductId(productId); + PrePay prePay = createPrePay(payPackage); + return new NativePayResponse(weixinAccount, prePay.getPrepayId()); + } + /** * 创建Native支付(扫码支付)链接【模式二】 * diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayBaseInfo.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayBaseInfo.java index 07756d3c..4da90e04 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayBaseInfo.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayBaseInfo.java @@ -6,6 +6,7 @@ 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 javax.xml.bind.annotation.XmlTransient; import com.alibaba.fastjson.annotation.JSONField; import com.foxinmy.weixin4j.type.SignType; @@ -92,6 +93,7 @@ public class PayBaseInfo implements Serializable { return signType; } + @XmlTransient @JSONField(serialize = false) public SignType getFormatSignType() { return signType != null ? SignType.valueOf(signType.toUpperCase()) diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayRequest.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayRequest.java index 91113ad3..cdd48b7a 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayRequest.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/PayRequest.java @@ -36,8 +36,8 @@ public class PayRequest extends PayBaseInfo { @JSONField(serialize = false) private String partnerId; - public PayRequest() { - super(null, DateUtil.timestamp2string(), RandomUtil.generateString(16)); + protected PayRequest() { + // jaxb required } public PayRequest(String appId, String packageInfo) { 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 cf9e04d8..360f8e4d 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 @@ -24,6 +24,7 @@ import com.foxinmy.weixin4j.payment.mch.MPPaymentRecord; import com.foxinmy.weixin4j.payment.mch.MPPaymentResult; import com.foxinmy.weixin4j.payment.mch.MchPayPackage; import com.foxinmy.weixin4j.payment.mch.MchPayRequest; +import com.foxinmy.weixin4j.payment.mch.NativePayResponse; import com.foxinmy.weixin4j.payment.mch.Order; import com.foxinmy.weixin4j.payment.mch.PrePay; import com.foxinmy.weixin4j.payment.mch.Redpacket; @@ -237,6 +238,36 @@ public class WeixinPayProxy { return pay3Api.createNativePayRequestURL(productId); } + /** + * 创建Native支付(扫码支付)回调对象【模式一】 + * + * @param productId + * 商品ID + * @param body + * 商品描述 + * @param outTradeNo + * 商户内部唯一订单号 + * @param totalFee + * 商品总额 单位元 + * @param notifyUrl + * 支付回调URL + * @param createIp + * 订单生成的机器 IP + * @return Native回调对象 + * @see com.foxinmy.weixin4j.api.Pay3Api + * @see com.foxinmy.weixin4j.payment.mch.NativePayResponse + * @see 扫码支付 + * @see 模式一 + * @throws WeixinPayException + */ + public NativePayResponse createNativePayResponse(String productId, + String body, String outTradeNo, double totalFee, String notifyUrl, + String createIp) throws WeixinPayException { + return pay3Api.createNativePayResponse(productId, body, outTradeNo, + totalFee, notifyUrl, createIp); + } + /** * 创建Native支付(扫码支付)链接【模式二】 * diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/NativePayResponse.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/NativePayResponse.java index 2f6ab034..20577d18 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/NativePayResponse.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/mch/NativePayResponse.java @@ -4,7 +4,6 @@ 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 javax.xml.bind.annotation.XmlTransient; import com.alibaba.fastjson.annotation.JSONField; import com.foxinmy.weixin4j.exception.WeixinPayException; @@ -12,7 +11,6 @@ import com.foxinmy.weixin4j.model.Consts; import com.foxinmy.weixin4j.model.WeixinPayAccount; import com.foxinmy.weixin4j.util.DigestUtil; import com.foxinmy.weixin4j.util.RandomUtil; -import com.foxinmy.weixin4j.xml.XmlStream; /** * Native支付时的回调响应 @@ -33,10 +31,6 @@ public class NativePayResponse extends ApiResult { @JSONField(name = "prepay_id") private String prepayId; - @XmlTransient - @JSONField(serialize = false) - private WeixinPayAccount weixinAccount; - protected NativePayResponse() { // jaxb required } @@ -44,21 +38,17 @@ public class NativePayResponse extends ApiResult { /** * 作为return_code 为 FAIL 的时候返回 * - * @param weixinAccount - * 商户信息 * @param returnMsg * 失败消息 * @param resultMsg * 结果消息 * @throws WeixinPayException */ - public NativePayResponse(WeixinPayAccount weixinAccount, String returnMsg, - String resultMsg) { + public NativePayResponse(String returnMsg, String resultMsg) { super.setReturnMsg(returnMsg); super.setReturnCode(Consts.FAIL); super.setErrCodeDes(resultMsg); super.setResultCode(Consts.FAIL); - this.weixinAccount = weixinAccount; } /** @@ -77,27 +67,13 @@ public class NativePayResponse extends ApiResult { this.setAppId(weixinAccount.getId()); this.setNonceStr(RandomUtil.generateString(16)); this.prepayId = prepayId; - this.weixinAccount = weixinAccount; + this.setSign(DigestUtil.paysignMd5(this, weixinAccount.getPaySignKey())); } public String getPrepayId() { return prepayId; } - /** - * 生成 回调字符串 - * - * @param paySignKey - * 支付签名密钥 - * @return native回调字符串 - */ - @XmlTransient - @JSONField(serialize = false) - public String asRequestXml() { - this.setSign(DigestUtil.paysignMd5(this, weixinAccount.getPaySignKey())); - return XmlStream.toXML(this); - } - @Override public String toString() { return "NativePayResponse [prepayId=" + prepayId + ", " diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java index e8120ab1..5345080c 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java @@ -171,10 +171,9 @@ public class Pay2Api extends MpApi { map.put("productid", productId); map.put("appkey", weixinAccount.getPaySignKey()); String sign = DigestUtil.paysignSha(map, null); - return String - .format("􏳈􏳈􏳈􏳈􏱗􏱗􏱗􏱗􏱕􏱕􏱕􏱕􏳉􏳉􏳉􏳉􏱕􏱕􏱕􏱕􏱩􏱩􏱩􏱩􏰛􏰛􏰛􏰛􏳊􏳊􏳊􏳊􏳊􏳊􏳊􏳊􏳈􏳈􏳈􏳈􏳉􏳉􏳉􏳉􏱶􏱶􏱶􏱶􏱓􏱓􏱓􏱓􏱭􏱭􏱭􏱭􏳊􏳊􏳊􏳊􏳋􏳋􏳋􏳋􏱕􏱕􏱕􏱕􏳌􏳌􏳌􏳌􏱶􏱶􏱶􏱶􏱓􏱓􏱓􏱓􏱭􏱭􏱭􏱭􏱰􏱰􏱰􏱰􏱨􏱨􏱨􏱨􏳍􏳍􏳍􏳍􏳎􏳎􏳎􏳎􏱱􏱱􏱱􏱱􏱕􏱕􏱕􏱕􏱦􏱦􏱦􏱦􏱩􏱩􏱩􏱩􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱓􏱓􏱓􏱓􏱶􏱶􏱶􏱶􏱶􏱶􏱶􏱶􏱕􏱕􏱕􏱕􏱪􏱪􏱪􏱪􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱶􏱶􏱶􏱶􏱨􏱨􏱨􏱨􏳟􏳟􏳟􏳟􏱪􏱪􏱪􏱪􏱰􏱰􏱰􏱰􏱷􏱷􏱷􏱷􏱔􏱔􏱔􏱔􏱕􏱕􏱕􏱕􏱪􏱪􏱪􏱪􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱔􏱔􏱔􏱔􏱕􏱕􏱕􏱕􏳈􏳈􏳈􏳈􏱗􏱗􏱗􏱗􏱕􏱕􏱕􏱕􏳉􏳉􏳉􏳉􏱕􏱕􏱕􏱕􏱩􏱩􏱩􏱩􏰛􏰛􏰛􏰛􏳊􏳊􏳊􏳊􏳊􏳊􏳊􏳊􏳈􏳈􏳈􏳈􏳉􏳉􏳉􏳉􏱶􏱶􏱶􏱶􏱓􏱓􏱓􏱓􏱭􏱭􏱭􏱭􏳊􏳊􏳊􏳊􏳋􏳋􏳋􏳋􏱕􏱕􏱕􏱕􏳌􏳌􏳌􏳌􏱶􏱶􏱶􏱶􏱓􏱓􏱓􏱓􏱭􏱭􏱭􏱭􏱰􏱰􏱰􏱰􏱨􏱨􏱨􏱨􏳍􏳍􏳍􏳍􏳎􏳎􏳎􏳎􏱱􏱱􏱱􏱱􏱕􏱕􏱕􏱕􏱦􏱦􏱦􏱦􏱩􏱩􏱩􏱩􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱓􏱓􏱓􏱓􏱶􏱶􏱶􏱶􏱶􏱶􏱶􏱶􏱕􏱕􏱕􏱕􏱪􏱪􏱪􏱪􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱶􏱶􏱶􏱶􏱨􏱨􏱨􏱨􏳟􏳟􏳟􏳟􏱪􏱪􏱪􏱪􏱰􏱰􏱰􏱰􏱷􏱷􏱷􏱷􏱔􏱔􏱔􏱔􏱕􏱕􏱕􏱕􏱪􏱪􏱪􏱪􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱔􏱔􏱔􏱔􏱕􏱕􏱕􏱕􏳠􏳠􏳠􏳠􏱗􏱗􏱗􏱗􏱱􏱱􏱱􏱱􏱔􏱔􏱔􏱔􏱓􏱓􏱓􏱓􏳠􏳠􏳠􏳠􏱶􏱶􏱶􏱶􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱩􏱩􏱩􏱩􏳟􏳟􏳟􏳟􏱩􏱩􏱩􏱩􏱷􏱷􏱷􏱷􏱗􏱗􏱗􏱗􏱱􏱱􏱱􏱱􏱔􏱔􏱔􏱔􏱨􏱨􏱨􏱨􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝weixin://wxpay/bizpayurl?sign=%s&appid=%s&productid=%s×tamp=%s&nocestr=%s􏳠􏳠􏳠􏳠􏱗􏱗􏱗􏱗􏱱􏱱􏱱􏱱􏱔􏱔􏱔􏱔􏱓􏱓􏱓􏱓􏳠􏳠􏳠􏳠􏱶􏱶􏱶􏱶􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳞􏳞􏳞􏳞􏱩􏱩􏱩􏱩􏳟􏳟􏳟􏳟􏱩􏱩􏱩􏱩􏱷􏱷􏱷􏱷􏱗􏱗􏱗􏱗􏱱􏱱􏱱􏱱􏱔􏱔􏱔􏱔􏱨􏱨􏱨􏱨􏳜􏳜􏳜􏳜􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝􏳝", - sign, weixinAccount.getId(), productId, timestamp, - noncestr); + String ordernative_v2_uri = getRequestUri("ordernative_v2_uri"); + return String.format(ordernative_v2_uri, sign, weixinAccount.getId(), + productId, timestamp, noncestr); } /** diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties index eae20688..68c1e573 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties @@ -1,4 +1,3 @@ -# ---------------------------------------------------------------------------- # \u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u6587\u6863\u8bf4\u660e # http://mp.weixin.qq.com/wiki/index.php # http://mp.weixin.qq.com/wiki/0/2e2239fa5f49388d5b5136ecc8e0e440.html @@ -130,6 +129,8 @@ getcallbackip_uri={api_cgi_url}/getcallbackip?access_token=%s # v2\u8ba2\u5355\u67e5\u8be2 orderquery_v2_uri={api_base_url}/pay/orderquery?access_token=%s +# v2native\u652f\u4ed8 +ordernative_v2_uri=weixin://wxpay/bizpayurl?sign=%s&appid=%s&productid=%s×tamp=%s&nocestr=%s\udbff\udce0\udbff\udce0\udbff\udce0\udbff\udce0\udbff\udc57\udbff\udc57\udbff\udc57\udbff\udc57\udbff\udc71\udbff\udc71\udbff\udc71\udbff\udc71\udbff\udc54\udbff\udc54\udbff\udc54\udbff\udc54\udbff\udc53\udbff\udc53\udbff\udc53\udbff\udc53\udbff\udce0\udbff\udce0\udbff\udce0\udbff\udce0\udbff\udc76\udbff\udc76\udbff\udc76\udbff\udc76\udbff\udcdc\udbff\udcdc\udbff\udcdc\udbff\udcdc\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcde\udbff\udcde\udbff\udcde\udbff\udcde\udbff\udc69\udbff\udc69\udbff\udc69\udbff\udc69\udbff\udcdf\udbff\udcdf\udbff\udcdf\udbff\udcdf\udbff\udc69\udbff\udc69\udbff\udc69\udbff\udc69\udbff\udc77\udbff\udc77\udbff\udc77\udbff\udc77\udbff\udc57\udbff\udc57\udbff\udc57\udbff\udc57\udbff\udc71\udbff\udc71\udbff\udc71\udbff\udc71\udbff\udc54\udbff\udc54\udbff\udc54\udbff\udc54\udbff\udc68\udbff\udc68\udbff\udc68\udbff\udc68\udbff\udcdc\udbff\udcdc\udbff\udcdc\udbff\udcdc\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd\udbff\udcdd # \u53d1\u8d27\u901a\u77e5 delivernotify_uri={api_base_url}/pay/delivernotify?access_token=%s # \u7ef4\u6743\u5904\u7406 diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/JsPayRequestV2.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/JsPayRequestV2.java index 5217adda..73effa32 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/JsPayRequestV2.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/JsPayRequestV2.java @@ -37,7 +37,7 @@ public class JsPayRequestV2 extends PayRequest { public JsPayRequestV2(WeixinPayAccount weixinAccount, PayPackageV2 payPackage) { - this.setAppId(weixinAccount.getId()); + super(weixinAccount.getId(), ""); this.setPackageInfo(package2string(payPackage, weixinAccount.getPartnerKey())); } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/NativePayResponseV2.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/NativePayResponseV2.java index e943597b..f4b8152c 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/NativePayResponseV2.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/payment/v2/NativePayResponseV2.java @@ -7,14 +7,10 @@ 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 javax.xml.bind.annotation.XmlTransient; import com.alibaba.fastjson.annotation.JSONField; import com.foxinmy.weixin4j.model.WeixinPayAccount; -import com.foxinmy.weixin4j.util.DateUtil; import com.foxinmy.weixin4j.util.DigestUtil; -import com.foxinmy.weixin4j.util.RandomUtil; -import com.foxinmy.weixin4j.xml.XmlStream; /** * V2 Native支付时的回调响应 @@ -43,58 +39,52 @@ public class NativePayResponseV2 extends JsPayRequestV2 { @XmlElement(name = "RetErrMsg") private String retMsg; - @XmlTransient - @JSONField(serialize = false) - private WeixinPayAccount weixinAccount; - protected NativePayResponseV2() { // jaxb required } + /** + * 响应错误信息 + * + * @param errorMsg + * 错误信息 + */ + public NativePayResponseV2(String errorMsg) { + this.retCode = "-1"; + this.retMsg = errorMsg; + } + + /** + * 正确响应 + * + * @param weixinAccount + * @param payPackage + * 订单信息 + */ public NativePayResponseV2(WeixinPayAccount weixinAccount, PayPackageV2 payPackage) { super(weixinAccount, payPackage); this.retCode = "0"; this.retMsg = "OK"; - this.weixinAccount = weixinAccount; + Map map = new HashMap(); + map.put("appid", weixinAccount.getId()); + map.put("appkey", weixinAccount.getPaySignKey()); + map.put("timestamp", getTimeStamp()); + map.put("noncestr", getNonceStr()); + map.put("package", getPackageInfo()); + map.put("retcode", getRetCode()); + map.put("reterrmsg", getRetMsg()); + this.setPaySign(DigestUtil.paysignSha(map, null)); } public String getRetCode() { return retCode; } - public void setRetCode(String retCode) { - this.retCode = retCode; - } - public String getRetMsg() { return retMsg; } - public void setRetMsg(String retMsg) { - this.retMsg = retMsg; - } - - /** - * 生成 回调字符串 - * - * @return native回调字符串 - */ - @XmlTransient - @JSONField(serialize = false) - public String asReqeustXml() { - Map map = new HashMap(); - map.put("appid", weixinAccount.getId()); - map.put("appkey", weixinAccount.getPaySignKey()); - map.put("timestamp", DateUtil.timestamp2string()); - map.put("noncestr", RandomUtil.generateString(16)); - map.put("package", getPackageInfo()); - map.put("retcode", getRetCode()); - map.put("reterrmsg", getRetMsg()); - this.setPaySign(DigestUtil.paysignSha(map, null)); - return XmlStream.toXML(this); - } - @Override public String toString() { return "NativePayResponseV2 [retCode=" + retCode + ", retMsg=" + retMsg