2015-08-10 4 views
8

Ich benutze Stripe mit Laravel 5.1 und ich habe alles funktioniert außer, dass wenn ich eine Testkartennummer eingeben, die abgelehnt werden sollte, erhalte ich keine Fehler; Das heißt, Resonanzen existieren niemals, selbst wenn es nötig ist.Streifen zieht keine Karten im Testmodus

Ich erhalte ein Token zurück, als ob alles durch ganz gut (Beispiel: tok_16Y3wFAMxhd2ngVpHnky8VWX) ging

Die stripeResponseHandler() Funktion Fehler in der Antwort ist nicht egal, welche die Rückkehr Testkarte die ich benutze. Hier ist der Code in Frage:

var PublishableKey = 'pk_test_Ed0bCarBWsgCXGBtjEnFeBVJ'; // Replace with your API publishable key 
Stripe.setPublishableKey(PublishableKey); 

/* Create token */ 
var expiry = $form.find('[name=cardExpiry]').payment('cardExpiryVal'); 
var ccData = { 
    number: $form.find('[name=cardNumber]').val().replace(/\s/g, ''), 
    cvc: $form.find('[name=cardCVC]').val(), 
    exp_month: expiry.month, 
    exp_year: expiry.year 
}; 

Stripe.card.createToken(ccData, function stripeResponseHandler(status, response) { 
    console.log(status); 
    if (response.error) { 
     /* Visual feedback */ 
     $form.find('[type=submit]').html('Please Try Again'); 
     /* Show Stripe errors on the form */ 
     $form.find('.payment-errors').text(response.error.message); 
     $form.find('.payment-errors').closest('.row').show(); 
    } else { 
     /* Visual feedback */ 
     $form.find('[type=submit]').html('Processing <i class="fa fa-spinner fa-pulse"></i>'); 
     /* Hide Stripe errors on the form */ 
     $form.find('.payment-errors').closest('.row').hide(); 
     $form.find('.payment-errors').text(""); 
     // response contains id and card, which contains additional card details 
     console.log(response.id); 
     console.log(response.card); 
     var token = response.id; 
     var email = $form.find('[name=email]').val(); 
     var formToken = $form.find('[name=_token]').val(); 
     console.log(email); 
     // AJAX - you would send 'token' to your server here. 
     console.log(token); 
     $.post('/testing', { 
      _token: formToken, 
      token: token, 
      email: email 
     }, function (data) { 
      console.log(data); 
     }) 
      // Assign handlers immediately after making the request, 
      .done(function (data, textStatus, jqXHR) { 
       //console.log(data); 
       $form.find('[type=submit]').html('Subscription Successful <i class="fa fa-check"></i>').prop('disabled', true); 
      }) 
      .fail(function (jqXHR, textStatus, errorThrown) { 
       $form.find('[type=submit]').html('There was a problem').removeClass('success').addClass('error'); 
       /* Show Stripe errors on the form */ 
       $form.find('.payment-errors').text('Try refreshing the page and trying again.'); 
       $form.find('.payment-errors').closest('.row').show(); 
      }); 
    } 
}); 

Die if (response.error) nie ausgelöst, auch wenn die Karte abgelehnt werden soll. Ich kann nicht verstehen, was ich hier falsch mache, was dieses Problem verursacht.

Ich habe versucht, alle Testkartennummern, die von den Stripe-Dokumenten abgelehnt werden sollten, aber keiner von ihnen gibt eine Antwort mit Fehlern zurück.

Bitte helfen Sie mir. Vielen Dank für Ihre Zeit.

+0

Also, was ist Streifen zurücksenden? Wie können wir etwas tun, wenn die Antwort keine Fehler enthält? – charlietfl

Antwort

5

Wenn Sie Stripe.js verwenden, überprüft Stripe nur, ob die Kartendetails korrekt angezeigt werden und kontaktiert die Bank zu diesem Zeitpunkt nicht. Dies bedeutet, dass sie sicherstellen, dass die Kartennummer die Luhn Check überschreitet, dass das Ablaufdatum ein gültiges Datum in der Zukunft ist und dass der CVC eine 3-stellige (oder 4-stellige für Amex) Nummer ist.

Es ist der Fall, das Token tok_XXX ist erfolgreich erstellt und Sie können es an Ihren Server senden. Die Karte würde dann serverseitig abgelehnt werden, wenn Sie versuchen, es aufzuladen. Es wird auch abgelehnt, wenn Sie einen Kunden erstellen, da Stripe eine Autorisierung von $ 0 oder $ 1 auf der Karte ausführt, um sicherzustellen, dass sie gültig ist und von der Bank akzeptiert wird.

+1

Das war ein Missverständnis meinerseits. Natürlich wurden die Karten nicht abgelehnt, da Stripe.js nur sicherstellt, dass die Nummer und der Ablauf und das Datum echt aussehen. Es ist die eigentliche Post, um die Rückzüge zu streifen. Danke für Ihre Antwort. –

Verwandte Themen