使用 Laravel 接入支付宝支付,异步通知没有接收到,检查了下访问记录,发现支付宝在 post 我们设置的回调 URI 时报了 419 错误。

这是因为 Laravel 的 CSRF 保护功能拒绝了支付宝回调的 post 请求。

解决办法就是将接受异步通知的路由 URI 添加到 AppHttpMiddlewareVerifyCsrfToken 中间件的 $except 属性来排除路由:

<?php

namespace AppHttpMiddleware;

use IlluminateFoundationHttpMiddlewareVerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array<int, string>
     */
    protected $except = [
        //支付宝支付回调地址
        'payment/alipay/notify',
    ];
}