Laravel 7-无法加载资源:服务器的状态为400(错误请求)

时间:2020-06-03 09:32:34

标签: javascript php laravel api razorpay

任何人都可以为我提供帮助,Razorpay的任何经验,我试图将控制器中的值传递给javascript中的视图,它没有填充data-order_id,并且出现了以上错误,这意味着我得到了空值

Razorpay参考-Sample CodeStandard Checkout Script

这是我的观点-welcome.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Razorpay</title>

    <style>
        .razorpay-payment-button {
            background: #6c5ce7;
            color: whitesmoke;
            font-size: 0.8rem;
            text-transform: uppercase;
            letter-spacing: 1;
            display: block;
            width: 15vw;
            height: 8vh;
            border: none;
            padding: 0.3rem 0.3rem;
            margin: 50px 50px;
        }
    </style>
</head>

<body>
    <!-- Razorpay Checkout Script -->
    <form action="/success" method="POST">

        <script src="https://checkout.razorpay.com/v1/checkout.js" 
        data-key="{{ env('RAZORPAY_KEY') }}" 
        data-amount="$order('amount')"
        data-currency="INR" 
        data-id="$order('id')"
        data-buttontext="Pay Now" 
        data-name="Test Corp" 
        data-description="Test Transaction"
        data-image="img/brand.png" 
        data-prefill.name="Test Example" 
        data-prefill.email="test@example.com" 
        data-prefill.contact="9999999999" 
        data-theme.color="#F37254"></script>

        <input type="hidden" custom="Hidden Element" name="hidden">
    </form>
</body>

</html>

我的控制器-PaymentController.php

<?php

namespace App\Http\Controllers;

use Razorpay\Api\Api;

class PaymentController extends Controller
{
    public function gen_order_id()
    {
        $api = new Api(env('RAZORPAY_KEY'), env('RAZORPAY_SECRET'));

        $order  = $api->order->create([
            'receipt'         => 'rcptid' . '_' . mt_rand(),
            'amount'          => 50000,
            'currency'        => 'INR',
            'payment_capture' =>  '1',
        ]);
    }
}

我的API路由-api.php

<?php

use Illuminate\Support\Facades\Route;

Route::get('orders', 'PaymentController@gen_order_id');

这是我执行dd($order)

后得到的有效负载
Razorpay\Api\Order {#275
  #attributes: array:12 [
    "id" => "order_xxxxxxxxxxxxxx"
    "entity" => "order"
    "amount" => 50000
    "amount_paid" => 0
    "amount_due" => 50000
    "currency" => "INR"
    "receipt" => "rcptid_xxxxxxxxxxxx"
    "offer_id" => null
    "status" => "created"
    "attempts" => 0
    "notes" => Razorpay\Api\Order {#273
      #attributes: []
    }
    "created_at" => 1591257352
  ]
}

1 个答案:

答案 0 :(得分:0)

我不确定您要完成什么,但是刀片文件中肯定存在问题:

data-amount="request()->route()->orders($amount)"
...
data-order_id="request()->route()->orders($order_id)"

应该是:

data-amount="{{ request()->route()->orders($amount) }}"
...
data-order_id="{{ request()->route()->orders($order_id) }}"

希望这会有所帮助:)


要将变量从控制器传递到刀片视图,请使用以下方法:

namespace App\Http\Controllers;

use Razorpay\Api\Api;

class PaymentController extends Controller
{
    ...

    return view('path.to.blade', [
        'order_id' => $order_id,
        'amount' => $amount,
    ]);
}

要从刀片文件访问传递的var,请使用小写的小写法,其中包含变量名:

data-amount="{{ $amount }}"
...
data-order_id="{{ $order_id }}"