Создание токена не работает на полосе - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь создать и затем отправить на свой серверный код, но когда я нажимаю на кнопку отправки, $_POST['stripeToken'] не существует, и я понятия не имею, почему.

Вот мой код:

<div class="ui main container">
  <form action="paiement.php" class="ui form" id="payment_form" method="post">
    <div class="field">
      <input type="text" name="clientNom" required placeholder="Votre nom" value="John Kennedy">
    </div>
    <div class="field">
      <input type="email" name="clientEmail" required placeholder="votre@email.fr" value="john.kennedy@gmail.com">
    </div>
    <input type="hidden" name="commandeTotal" value="<?php echo $somme ?>">
    <div class="field">
      <input type="tel" name="clientTelephone" required placeholder="votre@email.fr" value="0102030405">
    </div>
    <div class="field">
      <input type="text" placeholder="Votre code de carte bleu" data-stripe="number" value="4242 4242 4242 4242">
    </div>
    <div class="field">
      <input type="text" placeholder="MM" data-stripe="exp_month" value="10">
    </div>
    <div class="field">
      <input type="text" placeholder="YY" data-stripe="exp_year" value="18">
    </div>
    <div class="field">
      <input type="text" placeholder="CVC" data-stripe="cvc" value="123">
    </div>
    <p>
      <button class="ui button" type="submit">Acheter</button>
    </p>
  </form>
</div>
Stripe.setPublishableKey('pk_test_my publishable key')
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
  event.preventDefault();

  stripe.createToken(card).then(function(result) {
    if (result.error) {
      // Inform the customer that there was an error.
      var errorElement = document.getElementById('card-errors');
      errorElement.textContent = result.error.message;
    } else {
      // Send the token to your server.
      stripeTokenHandler(result.token);
    }
  });
});

function stripeTokenHandler(token) {
  // Insert the token ID into the form so it gets submitted to the server
  var form = document.getElementById('payment-form');
  var hiddenInput = document.createElement('input');
  hiddenInput.setAttribute('type', 'hidden');
  hiddenInput.setAttribute('name', 'stripeToken');
  hiddenInput.setAttribute('value', token.id);
  form.appendChild(hiddenInput);

  // Submit the form
  form.submit();
}

Код на стороне сервера - это просто эхо значений моей формы. Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 15 мая 2018

Причина этого в том, что в вашем JavaScript вы ссылаетесь на форму с идентификатором payment-form, но в HTML-форме у вас есть идентификатор payment_form (подчеркивание _ вместо дефиса -).

Кстати, нет необходимости в var form = document.getElementById('payment-form'); внутри функции stripeTokenHandler, потому что у вас уже есть назначенный ранее.

...