先附上官方文档:微信支付-开发者文档
一.微信商家券回调参数样式
1.微信回调的参数分两部分,这里两部分参数都要用的!
A.Body
{
"id":"8b33f79f-8869-5ae5-b41b-3c0b59f957d0",
"create_time":"2019-12-12T16:54:38+08:00",
"resource_type":"encrypt-resource",
"event_type":"COUPON.SEND",
"summary":"商家券领券通知",
"resource":{
"original_type":"coupon",
"algorithm":"AEAD_AES_256_GCM",
"ciphertext":"xxx",
"associated_data":"coupon",
"nonce":"j9g1wAzF9Xn1"
}
}
B.请求头
这里只取用的请求头
Wechatpay-Nonce: c5ac7061fccab6bc5ac7061fccab6bc
Wechatpay-Signature: CtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/OLYqFuzbjt3yOBzJSKQqJsvCtcbzwtQjN8rnOXItEBJ5aQFSnIXESeV28Pr2YEmf9wsDQ8Nx25ytW6FXBCAFdrr0mgqngX3AD9gNzjnNHzSGTPBSsaEkIfhPF4b8YRRTpny88tNLyprXA0GU5ID3DkZHpjFkX1hAp/D0fva2GKjGRLtvYbtUk/O==
Wechatpay-Timestamp: 1555555555
Wechatpay-Serial: 5157F09EFDC096DE155157F09EFDC096DE15EB11
2.接受回调参数,建议采用注解,不同公司封装不同的不一定接收到参数
@RequestBody String body,
@RequestHeader("Wechatpay-Serial") String wechatpaySerial,
@RequestHeader("Wechatpay-Signature") String wechatpaySignature,
@RequestHeader("Wechatpay-Timestamp") String wechatpayTimestamp,
@RequestHeader("Wechatpay-Nonce") String wechatpayNonce)
官方文档用的是CloseableHttpResponse response接收参数的,body= response.getBody
二.上代码,采用的是实时刷新在线证书临时缓存证书的方式,不需要读取本地证书
1.接收参数
@ApiOperation("微信商家券领券事件回调通知API")
@RequestMapping(value="/callback")
Map<String, String> stockCouponsReceiveCallback(@RequestBody String params,
@RequestHeader("Wechatpay-Serial") String wechatpaySerial,
@RequestHeader("Wechatpay-Signature") String wechatpaySignature,
@RequestHeader("Wechatpay-Timestamp") String wechatpayTimestamp,
@RequestHeader("Wechatpay-Nonce") String wechatpayNonce);
2.方法实现
@Override
public Map<String, String> stockCouponsReceiveCallback(String postData,
String wechatpaySerial,
String wechatpaySignature,