Skip to content

Commit 08338b0

Browse files
committed
Merge pull request #142 from ukid/develop
修改js分享所需参数,去掉jsapiTicket,增加appid
2 parents c6d0f18 + f48a6f9 commit 08338b0

File tree

6 files changed

+561
-15
lines changed

6 files changed

+561
-15
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
* jspai signature
77
*/
88
public class WxJsapiSignature implements Serializable {
9-
9+
private String appid;
10+
1011
private String noncestr;
1112

12-
private String jsapiTicket;
13-
1413
private long timestamp;
1514

1615
private String url;
@@ -33,14 +32,6 @@ public void setNoncestr(String noncestr) {
3332
this.noncestr = noncestr;
3433
}
3534

36-
public String getJsapiTicket() {
37-
return jsapiTicket;
38-
}
39-
40-
public void setJsapiTicket(String jsapiTicket) {
41-
this.jsapiTicket = jsapiTicket;
42-
}
43-
4435
public long getTimestamp() {
4536
return timestamp;
4637
}
@@ -57,4 +48,12 @@ public void setUrl(String url) {
5748
this.url = url;
5849
}
5950

51+
public String getAppid() {
52+
return appid;
53+
}
54+
55+
public void setAppid(String appid) {
56+
this.appid = appid;
57+
}
58+
6059
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ public interface WxMpService {
543543
void setMaxRetryTimes(int maxRetryTimes);
544544

545545
/**
546-
* 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_1)
546+
* 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1)
547547
* 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"
548548
* @param openId 支付人openId
549549
* @param outTradeNo 商户端对应订单号
@@ -570,4 +570,19 @@ public interface WxMpService {
570570
*/
571571
Map<String, String> getJSSDKPayInfo(String openId, String outTradeNo, double amt, String body, String tradeType, String ip, String notifyUrl);
572572

573+
/**
574+
* 该接口提供所有微信支付订单的查询,当支付通知处理异常戒丢失的情冴,商户可以通过该接口查询订单支付状态。
575+
* 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2
576+
* @param transactionId
577+
* @param outTradeNo
578+
*/
579+
WxMpPayResult getJSSDKPayResult(String transactionId, String outTradeNo);
580+
581+
/**
582+
* 读取支付结果通知
583+
* 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
584+
* @param xmlData
585+
* @return
586+
*/
587+
WxMpPayCallback getJSSDKCallbackData(String xmlData);
573588
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ public WxJsapiSignature createJsapiSignature(String url) throws WxErrorException
162162
"url=" + url
163163
);
164164
WxJsapiSignature jsapiSignature = new WxJsapiSignature();
165+
jsapiSignature.setAppid(wxMpConfigStorage.getAppId());
165166
jsapiSignature.setTimestamp(timestamp);
166167
jsapiSignature.setNoncestr(noncestr);
167168
jsapiSignature.setUrl(url);
@@ -792,4 +793,61 @@ public Map<String, String> getJSSDKPayInfo(String openId, String outTradeNo, dou
792793
payInfo.put("sign", finalSign);
793794
return payInfo;
794795
}
796+
797+
@Override
798+
public WxMpPayResult getJSSDKPayResult(String transactionId, String outTradeNo) {
799+
String nonce_str = System.currentTimeMillis() + "";
800+
801+
SortedMap<String, String> packageParams = new TreeMap<String, String>();
802+
packageParams.put("appid", wxMpConfigStorage.getAppId());
803+
packageParams.put("mch_id", wxMpConfigStorage.getPartnerId());
804+
packageParams.put("transaction_id", transactionId);
805+
packageParams.put("out_trade_no", outTradeNo);
806+
packageParams.put("nonce_str", nonce_str);
807+
808+
String sign = WxCryptUtil.createSign(packageParams, wxMpConfigStorage.getPartnerKey());
809+
String xml = "<xml>" +
810+
"<appid>" + wxMpConfigStorage.getAppId() + "</appid>" +
811+
"<mch_id>" + wxMpConfigStorage.getPartnerId() + "</mch_id>" +
812+
"<transaction_id>" + transactionId + "</transaction_id>" +
813+
"<out_trade_no>" + outTradeNo + "</out_trade_no>" +
814+
"<nonce_str>" + nonce_str + "</nonce_str>" +
815+
"<sign>" + sign + "</sign>" +
816+
"</xml>";
817+
818+
HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/pay/orderquery");
819+
if (httpProxy != null) {
820+
RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build();
821+
httpPost.setConfig(config);
822+
}
823+
824+
StringEntity entity = new StringEntity(xml, Consts.UTF_8);
825+
httpPost.setEntity(entity);
826+
try {
827+
CloseableHttpResponse response = httpClient.execute(httpPost);
828+
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
829+
XStream xstream = XStreamInitializer.getInstance();
830+
xstream.alias("xml", WxMpPayResult.class);
831+
WxMpPayResult wxMpPayResult = (WxMpPayResult) xstream.fromXML(responseContent);
832+
return wxMpPayResult;
833+
} catch (IOException e) {
834+
e.printStackTrace();
835+
}
836+
return new WxMpPayResult();
837+
}
838+
839+
@Override
840+
public WxMpPayCallback getJSSDKCallbackData(String xmlData) {
841+
try {
842+
XStream xstream = XStreamInitializer.getInstance();
843+
xstream.alias("xml", WxMpPayResult.class);
844+
WxMpPayCallback wxMpCallback = (WxMpPayCallback) xstream.fromXML(xmlData);
845+
return wxMpCallback;
846+
} catch (Exception e){
847+
e.printStackTrace();
848+
}
849+
return new WxMpPayCallback();
850+
}
851+
852+
795853
}

0 commit comments

Comments
 (0)