🆕 #3636【微信支付】增加微信签约、解约结果通知解析的方法

This commit is contained in:
ihao 2025-07-12 08:57:19 +00:00 committed by Binary Wang
parent 8c8139533d
commit 696ce8621e
2 changed files with 25 additions and 0 deletions

View File

@ -166,4 +166,22 @@ public interface WxEntrustPapService {
* @throws WxPayException the wx pay exception
*/
WxWithholdOrderQueryResult papOrderQuery(WxWithholdOrderQueryRequest wxWithholdOrderQueryRequest) throws WxPayException;
/**
* <pre>
* 签约解约结果通知解析
* 详见<a href="https://pay.weixin.qq.com/doc/v2/merchant/4011987586">签约解约结果通知</a>
* 注意
* 1同样的通知可能会多次发送给商户系统商户系统必须能够正确处理重复的通知 推荐的做法是当商户系统收到通知进行处理时先检查对应业务数据的状态并判断该通知是否已经处理如果未处理则再进行处理如果已处理则直接返回结果成功在对业务数据进行状态检查和处理之前要采用数据锁进行并发控制以避免函数重入造成的数据混乱
* 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单位)后没有收到微信侧回调,商户应调用查询订单接口确认订单状态
* 特别提醒
* 1商户系统对于签约解约结果通知的内容一定要做签名验证,并校验返回的商户协议号和用户openid信息是否一致防止数据泄露导致出现假通知造成损失
* 2当收到通知进行处理时首先检查对应业务数据的状态判断该通知是否已经处理过如果没有处理过再进行处理如果处理过直接返回结果成功在对业务数据进行状态检查和处理之前要采用数据锁进行并发控制以避免函数重入造成的数据混乱
* </pre>
*
* @param xmlData the wx withhold order query request
* @return wx sign result
* @throws WxPayException the wx pay exception
*/
WxSignQueryResult parseSignNotifyResult(String xmlData) throws WxPayException;
}

View File

@ -154,4 +154,11 @@ public class WxEntrustPapServiceImpl implements WxEntrustPapService {
wxWithholdOrderQueryResult.checkResult(payService, wxWithholdOrderQueryRequest.getSignType(), true);
return wxWithholdOrderQueryResult;
}
@Override
public WxSignQueryResult parseSignNotifyResult(String xmlData) throws WxPayException {
WxSignQueryResult result = BaseWxPayResult.fromXML(xmlData, WxSignQueryResult.class);
result.checkResult(payService, WxPayConstants.SignType.MD5, true);
return result;
}
}