Stripe payments 条带预构建的托管签出在localhost中运行良好,但在live server中不起作用(400错误请求))

Stripe payments 条带预构建的托管签出在localhost中运行良好,但在live server中不起作用(400错误请求)),stripe-payments,Stripe Payments,我已经在localhost中使用测试密钥和实时密钥进行了测试,一切正常。但是,当我上传到服务器时,它不工作,错误消息如下: 错误消息 以下是直接从Stripe官方文件复制的2个文件 https://stripe.com/docs/checkout/integration-builder index.php <button id="checkout-button">Checkout</button> <script typ

我已经在localhost中使用测试密钥和实时密钥进行了测试,一切正常。但是,当我上传到服务器时,它不工作,错误消息如下:

错误消息

以下是直接从Stripe官方文件复制的2个文件

https://stripe.com/docs/checkout/integration-builder
index.php

  <button id="checkout-button">Checkout</button>
      
  <script type="text/javascript">
    // Create an instance of the Stripe object with your publishable API key
    var stripe = Stripe("pk_test_51HmrX2IxP40eGXqz3tWsmlkfw11otNk5U6DDiaDvejfYd33oFZCE13zvp2nRbPUweGMbkVEmfUQYzPho9uI8odHk009iU4cFjG");
    var checkoutButton = document.getElementById("checkout-button");

    checkoutButton.addEventListener("click", function () {
      fetch("create-session.php", {
        method: "POST",
      })
        .then(function (response) {
          return response.json();
        })
        .then(function (session) {
          return stripe.redirectToCheckout({ sessionId: session.id });
        })
        .then(function (result) {
          // If redirectToCheckout fails due to a browser or network
          // error, you should display the localized error message to your
          // customer using error.message.
          if (result.error) {
            alert(result.error.message);
          }
        })
        .catch(function (error) {
          console.error("Error:", error);
        });
    });
  </script>
    require 'vendor/init.php';
    \Stripe\Stripe::setApiKey('sk_test_51HmrX2IxP40eGXqzRwJ6ObqPSvqZcXYRtJDxAsFqru1a2kFzas9tBfZH9UkEYHHwdFRVIRgS2bmsmqiwtDDmMbD70zy0SFFarz');

    $response = array( 
        'status' => 0, 
        'error' => array( 
            'message' => 'Invalid Request!'    
        ) 
    ); 
     
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
        $input = file_get_contents('php://input'); 
        $request = json_decode($input);     
    } 
     
    if (json_last_error() !== JSON_ERROR_NONE) { 
        http_response_code(400); 
        echo json_encode($response); 
        exit; 
    } 

    header('Content-Type: application/json');

    $YOUR_DOMAIN = 'mydomain.com';
    $checkout_session = \Stripe\Checkout\Session::create([
      'payment_method_types' => ['card'],
      'line_items' => [[
        'price_data' => [
          'currency' => 'usd',
          'unit_amount' => 2000,
          'product_data' => [
            'name' => 'Stubborn Attachments',
            'images' => ["http://i.imgur.com/EHyR2nP.png"],
          ],
        ],
        'quantity' => 1,
      ]],
      'mode' => 'payment',
      'success_url' => $YOUR_DOMAIN . '/success.php?session_id={CHECKOUT_SESSION_ID}',
      'cancel_url' => $YOUR_DOMAIN . '/cancel.php',
    ]);

    echo json_encode(['id' => $checkout_session->id]);

我已经上传文件到2个不同的网站进行测试,但仍然满足错误400(错误请求)。。。有人能提供帮助和建议吗?谢谢

您应该查看服务器端日志,因为您很可能没有返回您认为是的JSON。你也可以
console.log()
session的值来确认/反驳它实际上是你所期望的。

我删除了这部分编码,如果(json\u last\u error()!==json\u error\u NONE){http\u response\u code(400);echo json\u encode($response);exit;}那么现在它可以工作了吗?或者这只是阻止JSON解析错误导致400错误吗?错误仍然存在。。。。只是我删除了那部分代码,这样程序现在就可以运行了。。。
    require 'vendor/init.php';
    \Stripe\Stripe::setApiKey('sk_test_51HmrX2IxP40eGXqzRwJ6ObqPSvqZcXYRtJDxAsFqru1a2kFzas9tBfZH9UkEYHHwdFRVIRgS2bmsmqiwtDDmMbD70zy0SFFarz');

    $response = array( 
        'status' => 0, 
        'error' => array( 
            'message' => 'Invalid Request!'    
        ) 
    ); 
     
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
        $input = file_get_contents('php://input'); 
        $request = json_decode($input);     
    } 
     
    if (json_last_error() !== JSON_ERROR_NONE) { 
        http_response_code(400); 
        echo json_encode($response); 
        exit; 
    } 

    header('Content-Type: application/json');

    $YOUR_DOMAIN = 'mydomain.com';
    $checkout_session = \Stripe\Checkout\Session::create([
      'payment_method_types' => ['card'],
      'line_items' => [[
        'price_data' => [
          'currency' => 'usd',
          'unit_amount' => 2000,
          'product_data' => [
            'name' => 'Stubborn Attachments',
            'images' => ["http://i.imgur.com/EHyR2nP.png"],
          ],
        ],
        'quantity' => 1,
      ]],
      'mode' => 'payment',
      'success_url' => $YOUR_DOMAIN . '/success.php?session_id={CHECKOUT_SESSION_ID}',
      'cancel_url' => $YOUR_DOMAIN . '/cancel.php',
    ]);

    echo json_encode(['id' => $checkout_session->id]);