2017-10-27 1 views
0

Ich bin ein Anfänger mit Stripe und ich kämpfe mit dem doc, ich habe mehrere Tutorials ausprobiert, aber keiner von ihnen konnte mein Formular funktionieren.Streifenform erstellt keine Kreditkarte

Das Problem ist, dass das Formular ein Token und einen Kunden erstellt (ich kann es in meinem Stripe Dashboard sehen), aber es erstellt keine Kreditkarte für diesen Kunden und wenn ich versuche, diesen Kunden zu einem Plan zu abonnieren, Ich bekomme einen Fehler.

hier ist der Code ist meine Form:

<body> 

    <div id="listblock"> 

     <div class="lines" id="logo"> 
      <h2>Pay from here! </h2> 
     </div> 

     <form action="payment.php" method="post" id="payment-form"> 
      <input class="card-number" type="text" required placeholder="1234 5678 8765 4321"> 
      <input class="card-expiry-month" type="number" required placeholder="MM"> 
      <input class="card-expiry-year" type="number" required placeholder="YY"> 
      <input class="card-cvc" type="number" required placeholder="CVC"> 
      <input type="radio" name="plan" value="1" checked>Basic annual subscription (99€/year) 
      <input type="radio" name="plan" value="2" checked>Basic monthly subscription (9,99€/month) 

      <button class="button" type="submit">Submit Payment</button> 
     </form> 

    </div> 

</body> 

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


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 

<script> 
    Stripe.setPublishableKey('my key is here'); 

    var $form = $('#payment-form'); // On récupère le formulaire 

    $form.submit(function (e) { 

     e.preventDefault(); 
     $form.find('button').prop('disabled', true); // On désactive le bouton submit 

     Stripe.card.createToken({ 

      number:  $('.card-number').val(), 
      cvc:  $('.card-cvc').val(), 
      exp_month: $('.card-expiry-month').val(), 
      exp_year: $('.card-expiry-year').val() 

     }, function (status, response) { 

      if (response.error) { // Ah une erreur ! 

       // On affiche les erreurs 
       $form.find('.payment-errors').text(response.error.message); 
       $form.find('button').prop('disabled', false); // On réactive le bouton 

      } else { // Le token a bien été créé 

       var token = response.id; // On récupère le token 
       // On crée un champs cachée qui contiendra notre token 
       $form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
       $form.get(0).submit(); // On soumet le formulaire 

      } 
     }); 
    }); 


</script> 

der Fehler durch Streifen API gegeben ist:

{ 
    "error": { 
    "type": "invalid_request_error", 
    "message": "This customer has no attached payment source" 
    } 
} 

Vielen Dank für Ihre Hilfe!

+0

Beginnen Sie mit nur V2 oder V3, nicht beide. – cyberwombat

Antwort

1

Wie es scheint, Sie entwickeln gerade Ihre Anwendung, sollten Sie auf jeden Fall die aktualisierte Version von Stripe verwenden, die v3 ist.

Nun, wenn Sie Ihren Kunden in einem wiederkehrenden Zahlungsplan abonnieren möchten, sollten Sie zunächst einen Abo-Plan erstellen (entweder die API oder von Dashboard), erstellen Sie dann Kunden. So erstellen Sie einen Kunden, den Sie wie folgt codieren müssen:

stripe.customers.create({ 
    email: "[email protected]", 
}, function(err, customer) { 
    // asynchronously called 
}); 

Und dann der Kunde abonniert Plan haben Sie bereits erstellt. Alles ist in der official doc sehr schön beschrieben, lesen Sie es nur sorgfältig.

Auch, wenn Sie nicht ein wiederkehrendes Abonnement implementieren müssen, nur die Kundeninformationen für die spätere Zahlung speichern möchten, können Sie einfach folgen quick start guide, speziell this part.