【问题标题】:Method not allowed on payment callback in LaravelLaravel 中的支付回调方法不允许
【发布时间】:2020-01-22 12:48:37
【问题描述】:

我编写了一些代码来处理来自我的支付服务的回调请求。但我得到MethodNotAllowedHttpException。没有消息。

这是我的控制器:

    if(isset($_POST['State']) && $_POST['State'] == "OK") {

        $soapclient = new soapclient('https://verify.sep.ir/Payments/ReferencePayment.asmx?WSDL');
        $res        = $soapclient->VerifyTransaction($_POST['RefNum'], $MerchantCode);

        if( $res <= 0 )
        {
            // Transaction Failed
            echo "Transaction Failed";
        } else {
            // Transaction Successful
            echo "Transaction Successful";
            echo "Ref : {$_POST['RefNum']}<br />";
            echo "Res : {$res}<br />";
        }
    } else {
        // Transaction Failed
        echo "Transaction Failed";
    }

我的代码有什么问题?

【问题讨论】:

  • 嗨,请向我们展示控制器的所有代码以及如何为回调 url 声明路由。
  • @KFoobar 这是完整的代码,我为我的回调定义了 Get route in routes
  • 我不能成为完整的代码,因为缺少类和方法声明。如果没有完整的代码,很难为您提供帮助,因为我们所能做的就是猜测问题所在。

标签: php laravel exception


【解决方案1】:

您可能对路由使用了 GET 方法,将其更新为 POST 并且会正常工作,因为 API 似乎期望这样做。

【讨论】:

  • 我尝试更改为发布方法,但获取页面已过期消息(我认为是因为我没有 csrf 字段)
  • 您可以将您的路由添加到VerifyCsrfToken 中间件的排除列表中。它在App\Http\Middleware\VerifyCsrfToken 下可用。阅读更多关于laravel.com/docs/5.8/csrf#csrf-excluding-uris
  • 不幸的是,我无法添加排除项,因为我的 url 模式如下:http://site/cart/abcdefghijk/verifypayment 你有什么建议?
  • cart之后做一个通配符。
猜你喜欢
  • 2017-02-27
  • 1970-01-01
  • 2017-12-10
  • 2020-03-10
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2018-12-14
  • 2018-09-09
相关资源
最近更新 更多