Создать Checkout Session.php 404 не найден

    <?php

require 'vendor/autoload.php';
\Stripe\Stripe::setApiKey('sk_test_51HhrRSFFkuyUh5wxaaS0l0yn5S..........R0nzVUJ23jePY6iXme2bOwxtuImLrWv9QilqW4umYvRCIo00vHKf5mKW');

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

$YOUR_DOMAIN = 'http://localhost:4242';

$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' => ["https://i.imgur.com/EHyR2nP.png"],
      ],
    ],
    'quantity' => 1,
  ]],
  'mode' => 'payment',
  'success_url' => $YOUR_DOMAIN . '/success.html',
  'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);

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

<!DOCTYPE html>
<html>
  <head>
    <title>Buy cool new product</title>
    <link rel = "stylesheet" href = "style.css">
    <script src = "https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=fetch"></script>
    <script src = "https://js.stripe.com/v3/"></script>
  </head>
  <body>
    <section>
      <div class = "product">
        <img
          src = "https://i.imgur.com/EHyR2nP.png"
          alt = "The cover of Stubborn Attachments"
        />
        <div class = "description">
          <h3>Stubborn Attachments</h3>
          <h5>$20.00</h5>
        </div>
      </div>
      <button id = "checkout-button">Checkout</button>
    </section>
  </body>
  <script type = "text/javascript">
    // Create an instance of the Stripe object with your publishable API key
    var stripe = Stripe("pk_test_51HhrRSFFkuyUh5wxONDavkFRWnPlNcJ.............rOT7xce3CyW1fTnClCUsVJ2kctOtuJ0hFdf5004x4Gs2YC");
    var checkoutButton = document.getElementById("checkout-button");

    checkoutButton.addEventListener("click", function () {
      fetch("/create-checkout-session.php", {
        method: "POST",
      })
        .then(function (response) {
          return response.json();
        })
        .then(function (session) {
          //return stripe.redirectToCheckout({ sessionId: session.id });
          return stripe.redirectToCheckout({ sessionId: session.sessionId });
        })
        .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>
</html>

Я скачал приведенный выше код отсюда https://stripe.com/docs/checkout/integration-builder и поместил файл в свою папку Xampp под htdocs, поэтому всякий раз, когда я запускаю http://localhost/my- Projects/stripe-payments-prebuilt/checkout.html, поэтому он показывает мне страницу оформления заказа, но когда я нажимаю кнопку оформления заказа, он показывает «checkout.html: 30 POST http://localhost/create-checkout-session». .php 404 (Not Found)" Я имею в виду, что я сделал неправильно, я могу запускать другие проекты, значит, проблем с сервером нет, так в чем может быть проблема?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
865
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, возникает ошибка 404, потому что файла никогда не было. На локальном хосте или на всех серверах, если вы поместите / перед именем файла, оно автоматически станет после хоста, поэтому /config.php станет http://localhost/config.php. Чтобы предотвратить эту ошибку, вы должны использовать ./

И неожиданный токен < означает, что сервер возвращает документ 404.

Короче говоря, поставьте точку перед именем файла, так как я предполагаю, что этот проект находится не в корневом каталоге. (Означает, что проект в http://localhost/projectName)

   <?php

require 'vendor/autoload.php';
\Stripe\Stripe::setApiKey('sk_test_51HhrRSFFkuyUh5wxaaS0l0yn5S..........R0nzVUJ23jePY6iXme2bOwxtuImLrWv9QilqW4umYvRCIo00vHKf5mKW');

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

$YOUR_DOMAIN = 'http://localhost';

$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' => ["https://i.imgur.com/EHyR2nP.png"],
      ],
    ],
    'quantity' => 1,
  ]],
  'mode' => 'payment',
  'success_url' => $YOUR_DOMAIN . '/success.html',
  'cancel_url' => $YOUR_DOMAIN . '/cancel.html',
]);

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

<!DOCTYPE html>
<html>
  <head>
    <title>Buy cool new product</title>
    <link rel = "stylesheet" href = "style.css">
    <script src = "https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=fetch"></script>
    <script src = "https://js.stripe.com/v3/"></script>
  </head>
  <body>
    <section>
      <div class = "product">
        <img
          src = "https://i.imgur.com/EHyR2nP.png"
          alt = "The cover of Stubborn Attachments"
        />
        <div class = "description">
          <h3>Stubborn Attachments</h3>
          <h5>$20.00</h5>
        </div>
      </div>
      <button id = "checkout-button">Checkout</button>
    </section>
  </body>
  <script type = "text/javascript">
    // Create an instance of the Stripe object with your publishable API key
    var stripe = Stripe("pk_test_51HhrRSFFkuyUh5wxONDavkFRWnPlNcJ.............rOT7xce3CyW1fTnClCUsVJ2kctOtuJ0hFdf5004x4Gs2YC");
    var checkoutButton = document.getElementById("checkout-button");

    checkoutButton.addEventListener("click", function () {
      fetch("./create-checkout-session.php", {
        method: "POST",
      })
        .then(function (response) {
          return response.json();
        })
        .then(function (session) {
          //return stripe.redirectToCheckout({ sessionId: session.id });
          return stripe.redirectToCheckout({ sessionId: session.sessionId });
        })
        .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>
</html>

Обязательно помните, что всегда

yxlow07 26.12.2020 09:56

Не могли бы вы сказать мне, почему я сталкиваюсь с этой ошибкой в ​​ответе SyntaxError: Unexpected token < in JSON at position 0

H John 26.12.2020 10:02

Я упоминал об этом выше. Вы уверены, что создали файл create-checkout-session.php?

yxlow07 26.12.2020 10:04

Да, это в моей папке

H John 26.12.2020 10:06

Приведенный выше php-файл — это тот же файл create-checkout-session.php, а HTML-файл — checkout.html.

H John 26.12.2020 10:10

Другие вопросы по теме