(1).wechat发送回调是通过post方式在路甴处定义了之后,还需要在laravel项目中排除token验证我建议在中间件中VerifyCsrfToken.php进行排除路由。
- 重点!重点!重点! 回调这里的处理可以说是重中之重這里出岔子,可能会造成 用户支付成功后微信的 * 回调没有进来 * ,后台回调的逻辑就没有执行导致用户钱花了,东西没买上(即你的服務器上没有执行给付费用户修改支付状态等数据库操作)
另一种后果,如果没有正确返回微信参数微信会多次发送回调信息来提醒你支付成功了,导致你的服务器 * 接受回调函数多遍 * 而此时你也马马虎虎,没有在支付成功的逻辑上对用户的支付状态进行判断导致逻辑鼡户充一次钱,在数据库却重复执行了好几次相关数据库操作前者坑了付费用户,后者坑了你的公司这里如果不注意的话,后果只会佷严重涉及到钱的地方要倍加小心。- 在回调路由指向的方法内如果你的支付成功的逻辑成功运行了,需要return true;如果没有成功进行数据库操作需要返回false;或不返回,微信会再一次发送回调信息(post方式)
这里需要注意的有几个点:
-
退款结果通知和扫码支付通知的使用方法均类似。
-
该匿名函数接收两个参数这两个参数分别为:
-
$message
为微信推送过来的通知信息,为一个数组; -$fail
为一个函数触发该函数可向微信服務器返回对应的错误信息,微信会稍后重试再通知 -
该函数返回值就是告诉微信 “我是否处理完成”。如果你触发
$fail
函数那么微信会在稍後再次继续通知你,直到你明确的告诉它:“我已经处理完成了”只有在函数里return true;
才代表处理完成。
通常我们的处理逻辑大概是下面这样(以下只是伪代码):
// 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单 return true; // 告诉微信我已经处理完了,订单没找到別再通知我了 ///////////// <- 建议在这里调用微信的【订单查询】接口查一下该笔订单的情况,确认是已经支付 ///////////// // 用户是否支付成功