File tree Expand file tree Collapse file tree 2 files changed +25
-0
lines changed
weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -166,4 +166,22 @@ public interface WxEntrustPapService {
166166 * @throws WxPayException the wx pay exception
167167 */
168168 WxWithholdOrderQueryResult papOrderQuery (WxWithholdOrderQueryRequest wxWithholdOrderQueryRequest ) throws WxPayException ;
169+
170+ /**
171+ * <pre>
172+ * 签约、解约结果通知解析
173+ * 详见:<a href="https://pay.weixin.qq.com/doc/v2/merchant/4011987586">签约、解约结果通知</a>
174+ * 注意:
175+ * 1、同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 推荐的做法是:当商户系统收到通知进行处理时,先检查对应业务数据的状态,并判断该通知是否已经处理。如果未处理,则再进行处理;如果已处理,则直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
176+ * 2、如果在所有通知频率(0/10/10/10/30/30/30/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300(单位:秒))后没有收到微信侧回调,商户应调用查询订单接口确认订单状态。
177+ * 特别提醒:
178+ * 1、商户系统对于签约、解约结果通知的内容一定要做签名验证,并校验返回的商户协议号和用户openid信息是否一致,防止数据泄露导致出现“假通知”,造成损失。
179+ * 2、当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
180+ * </pre>
181+ *
182+ * @param xmlData the wx withhold order query request
183+ * @return wx sign result
184+ * @throws WxPayException the wx pay exception
185+ */
186+ WxSignQueryResult parseSignNotifyResult (String xmlData ) throws WxPayException ;
169187}
Original file line number Diff line number Diff line change @@ -154,4 +154,11 @@ public WxWithholdOrderQueryResult papOrderQuery(WxWithholdOrderQueryRequest wxWi
154154 wxWithholdOrderQueryResult .checkResult (payService , wxWithholdOrderQueryRequest .getSignType (), true );
155155 return wxWithholdOrderQueryResult ;
156156 }
157+
158+ @ Override
159+ public WxSignQueryResult parseSignNotifyResult (String xmlData ) throws WxPayException {
160+ WxSignQueryResult result = BaseWxPayResult .fromXML (xmlData , WxSignQueryResult .class );
161+ result .checkResult (payService , WxPayConstants .SignType .MD5 , true );
162+ return result ;
163+ }
157164}
You can’t perform that action at this time.
0 commit comments