Php Braintree沙盒支付尝试出现错误404

Php Braintree沙盒支付尝试出现错误404,php,laravel,routes,http-status-code-404,braintree,Php,Laravel,Routes,Http Status Code 404,Braintree,我正试图在一个基于Laravel7的项目上实现一个Braintree沙盒支付小部件。我试过很多指南,但结果总是一样的。 当我试图付款时,我在post请求中出现了404错误。以下是刀片代码: <form method="post" id="payment-form" action="{{ url('/checkout') }}"> @csrf @method('POST') <section>

我正试图在一个基于Laravel7的项目上实现一个Braintree沙盒支付小部件。我试过很多指南,但结果总是一样的。 当我试图付款时,我在post请求中出现了404错误。以下是刀片代码:

<form method="post" id="payment-form" action="{{ url('/checkout') }}">
    @csrf
    @method('POST')
    <section>
        <label for="amount">
            <span class="input-label">Amount</span>
            <div class="input-wrapper amount-wrapper">
                <input id="amount" name="amount" type="tel" min="1" placeholder="Amount" value="10">
            </div>
        </label>

        <div class="bt-drop-in-wrapper">
            <div id="bt-dropin"></div>
        </div>
    </section>

    <input id="nonce" name="payment_method_nonce" type="hidden" />
    <button class="button" type="submit"><span>Test Transaction</span></button>
</form>
目前,我们正在通过php artisan Service在本地主机上运行该项目

很抱歉在代码中插入意大利语注释


希望有人能提供帮助。

尝试在路线代码的开头添加一个
dd(“”)
,看看它是否正在运行。如果不是,这可能是一个路由问题,而不是Braintree问题。我曾尝试将其放入post函数中,但它实际上没有运行dd,我不明白为什么它实际上需要数量、nonce和令牌(在同一个函数中定义),但不运行任何其他功能…你把它放在哪里,在
/checkout
路由的处理程序的最顶部?如果是这样,则意味着您的应用程序没有正确地路由
/checkout
,因此这不是大脑树问题。如果没有,请尝试添加
dd($amount,$nonce)$request
获取这些输入。
<script src="https://js.braintreegateway.com/web/dropin/1.13.0/js/dropin.min.js"></script>
<script>
    var form = document.querySelector('#payment-form');
    var client_token = "{{ $token }}";
    braintree.dropin.create({
        authorization: client_token,
        selector: '#bt-dropin',
    }, function (createErr, instance) {
    if (createErr) {
        console.log('Create Error', createErr);
        return;
    }
      form.addEventListener('submit', function (event) {
        event.preventDefault();
        instance.requestPaymentMethod(function (err, payload) {
          if (err) {
            console.log('Request Payment Method Error', err);
            return;
          }
          // Add the nonce to the form and submit
          document.querySelector('#nonce').value = payload.nonce;
          form.submit();
        });
      });
    });
</script>
Route::get('settings/houses/sponsor/create', function(Request $request){
    //prende dati validazione da services
    $gateway= new Braintree\Gateway([
        'environment' => config('services.braintree.environment'),
        'merchantId' => config('services.braintree.merchantId'),
        'publicKey'=> config('services.braintree.publicKey'),
        'privateKey'=>config('services.braintree.privateKey')
    ]);
    //genera il client token
    $token = $gateway->ClientToken()->generate();
    return view('user.sponsor.create',['token'=>$token]);
});
    //parte back
Route::post('/checkout', function(Request $request){
    $gateway= new Braintree\Gateway([
        'environment' => config('services.braintree.environment'),
        'merchantId' => config('services.braintree.merchantId'),
        'publicKey'=> config('services.braintree.publicKey'),
        'privateKey'=>config('services.braintree.privateKey')
    ]);
    //definisco ammontare e metodo di pagamento
    $amount= $request->amount;
    $nonce= $request->payment_method_nonce;
    
    //crea un oggetto le cui proprietà sono i dati del pagamento
        $result= $gateway->transaction()->sale([
            'amount' => $amount,
            'paymentMethodNonce' => $nonce,
            'options' => [
            'submitForSettlement' => true
            ]
        ]);
    //se la transazione avviene con sucecsso allora ritorna messaggio di conferma, altrimenti torna indietro con errore.
    if ($result->success) {
        $transaction = $result->transaction;
        return back()->with('success_message', 'Transaction successful. The ID is:'. $transaction->id);
    } else {
        $errorString = "";
        foreach ($result->errors->deepAll() as $error) {
            $errorString .= 'Error: ' . $error->code . ": " . $error->message . "\n";
    }
    return back()->withErrors('An error occurred with the message: '.$result->message);
    }
});