From cb1249fbd7d95a20ef13e93049a3c19dda7a0bb5 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Wed, 26 Oct 2016 11:54:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A2=AB=E8=AF=AF=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E7=9A=84getJSSDKCallbackData=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/mp/api/WxMpPayService.java | 8 ++++++++ .../weixin/mp/api/impl/WxMpPayServiceImpl.java | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java index 411c2abf..8d624e95 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpPayService.java @@ -1,6 +1,7 @@ package me.chanjar.weixin.mp.api; import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.mp.bean.pay.WxPayJsSDKCallback; import me.chanjar.weixin.mp.bean.pay.request.WxEntPayRequest; import me.chanjar.weixin.mp.bean.pay.request.WxPayRefundRequest; import me.chanjar.weixin.mp.bean.pay.request.WxPaySendRedpackRequest; @@ -63,6 +64,13 @@ public interface WxMpPayService { */ WxPayRefundResult refund(WxPayRefundRequest request, File keyFile) throws WxErrorException; + /** + * 读取支付结果通知 + * 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 + * + */ + WxPayJsSDKCallback getJSSDKCallbackData(String xmlData) throws WxErrorException; + /** *
    * 计算Map键值对是否和签名相符,
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java
index 3b3b7510..2fc8e798 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java
@@ -7,6 +7,7 @@ import me.chanjar.weixin.common.util.BeanUtils;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 import me.chanjar.weixin.mp.api.WxMpPayService;
 import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.bean.pay.WxPayJsSDKCallback;
 import me.chanjar.weixin.mp.bean.pay.request.*;
 import me.chanjar.weixin.mp.bean.pay.result.*;
 import org.apache.commons.codec.digest.DigestUtils;
@@ -96,6 +97,18 @@ public class WxMpPayServiceImpl implements WxMpPayService {
     }
   }
 
+  @Override
+  public WxPayJsSDKCallback getJSSDKCallbackData(String xmlData) throws WxErrorException {
+    try {
+      XStream xstream = XStreamInitializer.getInstance();
+      xstream.alias("xml", WxPayJsSDKCallback.class);
+      return (WxPayJsSDKCallback) xstream.fromXML(xmlData);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw new WxErrorException(WxError.newBuilder().setErrorMsg("发生异常" + e.getMessage()).build());
+    }
+  }
+
   @Override
   public boolean checkJSSDKCallbackDataSignature(Map kvm,
       String signature) {