Skip to content
This repository has been archived by the owner on Jan 16, 2018. It is now read-only.

修改js分享所需参数,去掉jsapiTicket,增加appid #142

Merged
merged 10 commits into from
Jul 27, 2015
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@
* jspai signature
*/
public class WxJsapiSignature implements Serializable {

private String appid;

private String noncestr;

private String jsapiTicket;

private long timestamp;

private String url;
Expand All @@ -33,14 +32,6 @@ public void setNoncestr(String noncestr) {
this.noncestr = noncestr;
}

public String getJsapiTicket() {
return jsapiTicket;
}

public void setJsapiTicket(String jsapiTicket) {
this.jsapiTicket = jsapiTicket;
}

public long getTimestamp() {
return timestamp;
}
Expand All @@ -57,4 +48,12 @@ public void setUrl(String url) {
this.url = url;
}

public String getAppid() {
return appid;
}

public void setAppid(String appid) {
this.appid = appid;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ public interface WxMpService {
void setMaxRetryTimes(int maxRetryTimes);

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

/**
* 该接口提供所有微信支付订单的查询,当支付通知处理异常戒丢失的情冴,商户可以通过该接口查询订单支付状态。
* 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2
* @param transactionId
* @param outTradeNo
*/
WxMpPayResult getJSSDKPayResult(String transactionId, String outTradeNo);

/**
* 读取支付结果通知
* 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
* @param xmlData
* @return
*/
WxMpPayCallback getJSSDKCallbackData(String xmlData);
}
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ public WxJsapiSignature createJsapiSignature(String url) throws WxErrorException
"url=" + url
);
WxJsapiSignature jsapiSignature = new WxJsapiSignature();
jsapiSignature.setAppid(wxMpConfigStorage.getAppId());
jsapiSignature.setTimestamp(timestamp);
jsapiSignature.setNoncestr(noncestr);
jsapiSignature.setUrl(url);
Expand Down Expand Up @@ -705,4 +706,61 @@ public Map<String, String> getJSSDKPayInfo(String openId, String outTradeNo, dou
payInfo.put("sign", finalSign);
return payInfo;
}

@Override
public WxMpPayResult getJSSDKPayResult(String transactionId, String outTradeNo) {
String nonce_str = System.currentTimeMillis() + "";

SortedMap<String, String> packageParams = new TreeMap<String, String>();
packageParams.put("appid", wxMpConfigStorage.getAppId());
packageParams.put("mch_id", wxMpConfigStorage.getPartnerId());
packageParams.put("transaction_id", transactionId);
packageParams.put("out_trade_no", outTradeNo);
packageParams.put("nonce_str", nonce_str);

String sign = WxCryptUtil.createSign(packageParams, wxMpConfigStorage.getPartnerKey());
String xml = "<xml>" +
"<appid>" + wxMpConfigStorage.getAppId() + "</appid>" +
"<mch_id>" + wxMpConfigStorage.getPartnerId() + "</mch_id>" +
"<transaction_id>" + transactionId + "</transaction_id>" +
"<out_trade_no>" + outTradeNo + "</out_trade_no>" +
"<nonce_str>" + nonce_str + "</nonce_str>" +
"<sign>" + sign + "</sign>" +
"</xml>";

HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/pay/orderquery");
if (httpProxy != null) {
RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build();
httpPost.setConfig(config);
}

StringEntity entity = new StringEntity(xml, Consts.UTF_8);
httpPost.setEntity(entity);
try {
CloseableHttpResponse response = httpClient.execute(httpPost);
String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
XStream xstream = XStreamInitializer.getInstance();
xstream.alias("xml", WxMpPayResult.class);
WxMpPayResult wxMpPayResult = (WxMpPayResult) xstream.fromXML(responseContent);
return wxMpPayResult;
} catch (IOException e) {
e.printStackTrace();
}
return new WxMpPayResult();
}

@Override
public WxMpPayCallback getJSSDKCallbackData(String xmlData) {
try {
XStream xstream = XStreamInitializer.getInstance();
xstream.alias("xml", WxMpPayResult.class);
WxMpPayCallback wxMpCallback = (WxMpPayCallback) xstream.fromXML(xmlData);
return wxMpCallback;
} catch (Exception e){
e.printStackTrace();
}
return new WxMpPayCallback();
}


}
Loading