Интеграция подписки на кредитную карту в моем приложении laravel, но запрос $ не содержит метода оплаты - PullRequest
0 голосов
/ 15 апреля 2020

Уже два дня я пытаюсь осуществить полосовую оплату кредитной картой с подпиской на мое приложение laravel. Я работал с документацией laravel, но не смог получить "paymentMethod" в моей переменной $ request. Так что проблема в том, что html, который я добавляю через мой js, не отправляется. Чтобы вы лучше поняли мою проблему, я опубликую свой код.

HTML

<script src="https://js.stripe.com/v3/"></script>

 const stripe = Stripe('{{ env("STRIPE_KEY") }}');
const elements = stripe.elements();
const cardElement = elements.create('card');
cardElement.mount('#card-element');
const cardHolderName = document.getElementById('name');
const cardButton = document.getElementById('card-button');
const clientSecret = cardButton.dataset.secret;
const cardError = document.getElementById('card-errors');

cardElement.addEventListener('change', function(event) {
  if (event.error) {
      cardError.textContent = event.error.message;
  } else {
      cardError.textContent = '';
  }
});
  var form = document.getElementById('subscription-form');
  form.addEventListener('submit', async (e) => {
  e.preventDefault();
  const { setupIntent, error } = await stripe.handleCardSetup(
      clientSecret, cardElement, {
          payment_method_data: {
              billing_details: { name: cardHolderName.value }
          }
      }
  );



  if (error) {
      // Display "error.message" to the user...
      console.log(error.message);
  } else {
      // The card has been verified successfully...
      var hiddenInput = document.createElement('input');
      hiddenInput.setAttribute('type', 'hidden');
      hiddenInput.setAttribute('name', 'payment_method');
      hiddenInput.setAttribute('value', setupIntent.payment_method);
      form.appendChild(hiddenInput);
      // Submit the form
      form.submit();
  }
  });
<div class="container">
  <div class="row">
    @include('partials.settings-nav')
    <div class="col-lg-9 mt-1 mb-4">
      <form id="payment-form" action="{{ url('settings/card') }}" method="post" >
        @csrf

        <input id="card-holder-name" class="form-control" type="text">

        <!-- Stripe Elements Placeholder -->
        <div id="card-element" class="creditcard"></div>

        <button type="submit" id="card-button" data-secret="{{ $intent->client_secret }}">
            Kreditkarte hinzufügen
        </button>
      </form>
    </div>
  </div>
</div>

Мой контроллер

$paymentMethod = $request->paymentMethod;

auth()->user()->newSubscription('default', 'small')->create($paymentMethod);

return back();

Я надеюсь, что кто-то может помочь мне здесь.

Лучший

...