2014-11-30 2 views
-2

Я пытаюсь создать форму, которая принимает данные банковского счета пользователей, используя Stripe.js и HTML. Проблема в том, что каждый раз, когда я пытаюсь представить детали, я получаю сообщение об ошибке независимо от того, правильно это или нет. Форма ввода ниже. Есть идеи?Принимая банковский счет с помощью Stripe.js

<head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 

    <!-- The required Stripe lib --> 
    <script type="text/javascript" src="https://js.stripe.com/v2/"></script> 

    <!-- jQuery is used only for this example; it isn't required to use Stripe --> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 

    <script type="text/javascript"> 
    // This identifies your website in the createToken call below 
    //blanking my test key out just for stackoverflow 
    Stripe.setPublishableKey('pk_test_XXXXXXXXXXXXX'); 
    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; 
     }); 
     }); 
    </script> 
</head> 
<body> 
    <h1>Give us your bank info</h1> 


<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> 
</body> 
+0

Что ошибка вы получаете –

+0

я просто получить оповещение всплывающее окно об ошибке каждый раз, когда я ударил представить – user1161310

ответ

6

Так вы используете data-stripe атрибутов Stripe, но в вашем Javascript вы выбираете значение через CSS селекторы. $('.country') - это вызов JQuery, который возвращает объекты JQuery, представляющие элементы DOM класса country. Ваш html для вашей формы не использует классы для полей, которые вы пытаетесь достичь, но только data-stripe атрибутов.

С атрибутами data-stripe вы можете передать всю форму до Stripe.bankAccount.createToken(), а Stripe автоматически захватит необходимые им поля. Ваш Javascript будет в конечном итоге выглядит так (обратите внимание, где я прохожу в $ форме Stripe.bankAccount.createToken:

Stripe.setPublishableKey('pk_test_i2txBI2jUjSQIMoqFz3Fo326'); 
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)); 
     console.log(response); 
    } 
    }; 

    // 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($form, stripeResponseHandler); 
     // Prevent the form from submitting with the default action 
     return false; 
    }); 
    }); 
Смежные вопросы