2013-07-11 3 views
6

Stripe bietet nun Auszahlungen an, die durch Erstellen eines Kontonummers am Frontend funktionieren. Von dort wird das Token an den Server gesendet, auf dem Sie ein Empfänger Objekt mit diesem Bankkonto-Token erstellen. Von dort aus verwenden Sie dieses Empfängerobjekt in Transfers.Stripe.js - Sammeln von Empfängerinformationen

Während ich kenne Sie custom forms for payments mit stripe.js erstellen, wenn es ein Token zu schaffen für die Empfänger kommt, kann ich keine Unterlagen außer this zu finden scheinen.

Hier ist mein Problem, zuerst meine Form:

<form method="POST" id="inst-form">  

    <div class="form-row"> 
     <label> 
     <span>Bank Location</span> 
      <select data-stripe="country"> 
       <option value="US">United States</option> 
      </select> 
     </label> 
    </div> 

    <div class="form-row"> 
     <label> 
     <span>Routing Number</span> 
      <input type="text" size="9" data-stripe="routingNumber"/> 
     </label> 
    </div> 

    <div class="form-row"> 
     <label> 
     <span>Account Number</span> 
      <input type="text" size="17" data-stripe="accountNumber"/> 
     </label> 
    </div> 


    <button type="submit">Make Recipient!</button> 
</form> 

Bisher sind die drei Dinge, die ich von dieser Form brauchen sind Land, routingNumber und konto. Lässt an der Javascript aussehen, so kann ich die Felder mit Stripe.js verwenden:

// Create a handler to manage what Stripe returns. 
    var stripeResponseHandler = function(status, response) { 
    var $form = $('#inst-form'); 
    if (response.error) 
    { 
     alert("Error"); 
     // Not sure how to get these errors. 
     $form.find('button').prop('disabled', false); 
    } 
    else 
    { 
     var token = response.id; 
     $form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
     $form.get(0).submit(); 
    } 
    }; 

    // Now the handler is done, lets use it when the form is submitted. 
    // On form submission execute: 
    jQuery(function($) { 
    $('#inst-form').submit(function(event) { 
     // Get the form object. 
     var $form = $(this); 
     // Disable the submit button to prevent repeated clicks 
     $form.find('button').prop('disabled', true); 
     // Create a token with Stripe 
     Stripe.bankAccount.createToken({ 
     country: $('.country').val(), 
     routingNumber: $('.routingNumber').val(), 
     accountNumber: $('.accountNumber').val(), 
     }, stripeResponseHandler); 
     // Prevent the form from submitting with the default action 
     return false; 
    }); 
    }); 

Mein Problem ist, dass die alert() ausgelöst wird, was bedeutet, dass es Fehler gibt. Ich habe die API überprüft und bin mir nicht sicher, wie diese Fehler speziell für die Erstellung eines Empfängers angezeigt werden sollen. Für Zahlungen gibt es das folgende Beispiel:

$(".payment-errors").text(response.error.message); 

Hinweis - ich den Import von jQuery/Stripe.js ausgeschlossen - die sicherlich nicht das Problem ist. Danke für die Hilfe!

Antwort

3

Meine Erfahrung ist, dass response.error.message in der Tat der richtige Weg ist, um fortzufahren. Hier

ist eine Probe von meinem eigenen Code dafür:

Stripe.bankAccount.createToken({ 
    country: 'US', 
    routingNumber: bank_routing_number, 
    accountNumber: bank_account_number, 
}, function(status, response) { 
    if (response.error) 
    { 
     console.log(response); 
     alert(response.error.message); 
    } 
    else 
    { 
     var token = response.id; 
     /* send the token to the server along with the withdraw request */ 
    } 
}); 

Wenn Sie noch nicht die richtigen Fehler zu sehen, sollten Sie versuchen zu console.log (Antwort) und sehen Sie die Javascript-Konsole für Hinweise . Hier

ist ein Beispiel für einen einfachen Fehler zu reproduzieren:

Routing Nummer 9 Ziffern haben müssen

Sie sollten natürlich, Ihr Konto und Routing-Nummern mit den Routinen werden Validierung, dass Stripe.js bietet. Hier Beispiel für die Verwendung von ihrer Dokumentation entnommen:

// This will return true, indicating a potentially valid bank 
// routing number. 

Stripe.bankAccount.validateRoutingNumber('111000025') 
Stripe.bankAccount.validateRoutingNumber('110000000') 

// These invalid bank routing numbers will all return false. 

Stripe.bankAccount.validateRoutingNumber('990000000') 
// (Doesn't pass the checksum check.) 
Stripe.bankAccount.validateRoutingNumber('12345') 
Stripe.bankAccount.validateRoutingNumber('mistake') 

Die Dokumentation für diese sind hier: https://stripe.com/docs/stripe.js#collecting-bank-account-details

0

Sie Ihre Form, wie unten ändern. andere Dinge sind in Ordnung. Weil Sie Wert wie $ ('. Country') erhalten. Val() wo .country angeben, sollte es Klasse geben. Fügen Sie einfach die Klasse in Ihrer Form hinzu, wie unten beschrieben.

<form method="POST" id="inst-form">  

<div class="form-row"> 
    <label> 
    <span>Bank Location</span> 
     <select data-stripe="country" class="country"> 
      <option value="US">United States</option> 
     </select> 
    </label> 
</div> 

<div class="form-row"> 
    <label> 
    <span>Routing Number</span> 
     <input type="text" size="9" data-stripe="routingNumber" class="routingNumber"/> 
    </label> 
</div> 

<div class="form-row"> 
    <label> 
    <span>Account Number</span> 
     <input type="text" size="17" data-stripe="accountNumber" class="accountNumber"/> 
    </label> 
</div> 

<button type="submit">Make Recipient!</button>