【问题标题】:Stripe.js - Collecting recipient informationStripe.js - 收集收件人信息
【发布时间】:2013-07-09 06:00:16
【问题描述】:

Stripe 现在提供支付功能,通过在前端创建一个银行帐户令牌来工作。从那里,令牌被发送到您使用该银行帐户令牌创建 recipient 对象的服务器。从那里您可以在传输中使用此接收者对象。

虽然我很熟悉您可以使用 stripe.js 创建 custom forms for payments,但在为收件人创建令牌时,我似乎找不到除 this 之外的任何文档。

这是我的问题,首先是我的表单:

<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>

到目前为止,我需要此表单中的三项内容是 country、routingNumber 和 accountNumber。让我们看看 Javascript,以便我可以将这些字段与 Stripe.js 一起使用:

  // 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;
    });
  });

我的问题是 alert() 被触发,这意味着有错误。我查看了 API,但不确定如何专门为创建收件人显示这些错误。对于付款,它给出了以下示例:

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

注意 - 我排除了 jQuery/Stripe.js 的导入 - 这肯定不是问题。 感谢您的帮助!

【问题讨论】:

    标签: javascript jquery html stripe-payments


    【解决方案1】:

    我的经验是 response.error.message 确实是正确的方法。

    这是我自己的代码示例:

    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 */
        }
    });
    

    如果您仍然没有看到正确的错误,您应该尝试 console.log(response) 并查看 javascript 控制台以获取线索。

    这是一个容易重现的错误示例:

    路由号码必须有 9 位数字

    当然,您应该使用 Stripe.js 提供的例程来验证您的帐户和路由号码。这里的示例用法取自他们的文档:

    // 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')
    

    这方面的文档在这里:https://stripe.com/docs/stripe.js#collecting-bank-account-details

    【讨论】:

      【解决方案2】:

      只需如下更改您的表单。其他的都很好。 因为您正在获取 $('.country').val() 的值,其中 .country 表示应该有类。所以只需在您的表单中添加类,如下所示。

      <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>
      

      【讨论】:

        猜你喜欢
        • 2011-09-23
        • 2014-02-12
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 2023-03-20
        • 2013-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多