终于搞定回调通知了,这里总结下几个暗坑
1.回调通知一定是post接口,且可以直接访问
2.需要解析回调的HttpContext内容才能知道结果
3.收到信息一定要进行验证判断是否来自于微信渠道
4.回调信息要去重,防止重复接收
5.无论成功与否,都要给微信回复个标准模板,否则微信会一直给你发
因为封装entity很麻烦,所以直接用盛派的SDK,引用如下:
/// <summary>
/// 支付回调地址(在统一下单接口中设置notify_url)
/// https://localhost:44373/api/WxPay/PayNotifyUrl
/// 注意:回调必须是post
/// </summary>
/// <returns></returns>
[HttpPost("PayNotifyUrl")]
public ActionResult PayNotifyUrl()
{
try
{
var resHandler = new ResponseHandler(HttpContext);
var return_code = resHandler.GetParameter("return_code");
var return_msg = resHandler.GetParameter("return_msg");
var openid = resHandler.GetParameter("openid");
resHandler.SetKey(TenPayV3Info.ApiKey);
//验证请求是否从微信发过来(安全)
if (!resHandler.IsTenpaySign())
{
// 验证不通过,支付失败
throw new Exception($"支付验证不通过:[{return_code}][{return_msg}][{openid}]");
}
var notify = new PaidNotify