Stripe Checkout с PHP/JS отправляет, но не отображается в учетной записи Stripe

Я пытаюсь заставить Stripe оформить заказ с индивидуальной суммой оплаты. Откроется всплывающая форма Stripe, но в моем аккаунте Stripe ничего не отображается.

В моем фактическом коде у меня есть введенные ключи API. Я также не использую композитора.

<form action="charge.php" method="POST" id="payment-form">
  <input style="width: 100px; float: right;" class="form-control" type="number" id="custom-donation-amount" placeholder="$50.00" min="0" step="5.00"/>
  <input class="donate-desc" style="width: 100%; float: right;" class="form-control" type="text" placeholder="What is this donation for?"/>
  <button style="float: left; margin-right: 10px;" id="customButton" class="simpay-payment-btn stripe-button-el"><span>Make a Donation</span></button>
  <script src="https://checkout.stripe.com/checkout.js"></script>
  <script>
    var handler = StripeCheckout.configure({
      key: 'test publishable key',
      image: 'image.png',
      token: function(token) {
        var stripeToken = token.id;
      }
    });

    document.getElementById('customButton').addEventListener('click', function(e) {
      // This line is the only real modification...
      var amount = jQuery("#custom-donation-amount").val() * 100;
      var desc = jQuery('.donate-desc').val();
      handler.open({
        name: 'name',
        description: desc,
        amount: Math.round(amount)
      });
      e.preventDefault();
    });
  </script>

Вот обвинение

<?php
    require '/stripe/Stripe.php';

    $stripe = array(
        "secret_key"      => "test secret key",
        "publishable_key" => "test publishable key"
    );

    \Stripe\Stripe::setApiKey($stripe['secret_key']);

    $token  = $_POST['stripeToken'];

    $charge = \Stripe\Charge::create(array(
        'amount'   => $_POST['amount'],
        'descrition' => $_POST['description'],
        'currency' => 'usd',
        'source' => $token
    ));

?>

1 ответ

В вашем коде вы просто устанавливаете переменную stripeToken к token.Id, Вам все еще нужно передать эту переменную в бэкэнд для обработки.

Другими словами, после того, как вы получите token.id значение, вы должны сделать новый запрос (AJAX или иным образом) к некоторой конечной точке на вашем бэкэнде для обработки. То, как ваша форма структурирована вокруг вашего скрипта, не будет работать.

Вам нужно что-то вроде этого: https://jsfiddle.net/osrLsc8m/

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