【问题标题】:Laravel 7 - Failed to load resource: the server responded with a status of 400 (Bad Request)Laravel 7 - 加载资源失败:服务器响应状态为 400(错误请求)
【发布时间】:2020-09-21 22:57:27
【问题描述】:

谁能帮我解决这个问题,有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)后得到的payload

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
  ]
}

【问题讨论】:

  • 看来我犯了一个愚蠢的错误,一个错字,很抱歉打扰你们,感谢您的帮助,我已经更正并更新了我的代码,它现在可以正常工作了。 :)

标签: javascript php laravel api razorpay


【解决方案1】:

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

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 }}"

【讨论】:

  • 我正在尝试运行需要data-order_id 字段的javascript,我不知道如何动态实现这一点,我可以从控制器获取data-amount,但调用@我的 javascript 中的 987654327@ 在我的 javascript 代码中没有给出任何值。
  • 我试过你的答案,但我收到了这个错误Undefined variable: order_id
  • 我已经更新了答案。看看它是否有助于您的关注
  • 我更新了我的问题,让它变得更简单,我收到 API 错误 id does not existfailed to load resource
  • 我试过你的答案得到错误Undefined variable: amount
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
相关资源
最近更新 更多