javascript - Stripe 表单返回丢失的参数

标签 javascript jquery stripe-payments

我的 Stripe 代码不会生成发送到服务器端代码来向用户收费的 token ,而是返回:

Missing required param: number.

我已经阅读了无数次我的代码,阅读了 Stripe 文档等。控制台中返回的唯一错误是 Stripe 的 400 请求错误,因为“缺少参数”,即使它存在并使用 data- Stripe 。

表单片段:

<input type="text" data-stripe="number" class="form-control" placeholder="Card Number">

JavaScript 代码:

<script type="text/javascript" src="https://js.stripe.com/v2/">  </script>
<script type="text/javascript">
Stripe.setPublishableKey('pk_test_6G4sPCuttf9bYhMhs0xM3JEo');
</script>

<script type="text/javascript">
$(function() {
var $form = $('#payment-form');
$form.submit(function(event) {
// Disable the submit button to prevent repeated clicks:
$form.find('.submit').prop('disabled', true);

// Request a token from Stripe:
Stripe.card.createToken($form, stripeResponseHandler);

// Prevent the form from being submitted:
return false;
});
});

function stripeResponseHandler(status, response) {
// Grab the form:
var $form = $('#payment-form');

if (response.error) { // Problem!

// Show the errors on the form:
$form.find('.payment-errors').text(response.error.message);
$form.find('.submit').prop('disabled', false); // Re-enable submission

 } else { // Token was created!

// Get the token ID:
var token = response.id;

// Insert the token ID into the form so it gets submitted to the server:
$form.append($('<input type="hidden" name="stripeToken">').val(token));

// Submit the form:
$form.get(0).submit();
}
};

最佳答案

您不能仅根据卡号生成 token 。您还需要传递以下数据。

  1. 卡号
  2. cvc

  3. exp_month

  4. exp_year

您的表单应捕获用户的所有这些详细信息。

<form action="/your-charge-code" method="POST" id="payment-form">
  <span class="payment-errors"></span>

  <div class="form-row">
    <label>
      <span>Card Number</span>
      <input type="text" size="20" data-stripe="number">
    </label>
  </div>

  <div class="form-row">
    <label>
      <span>Expiration (MM/YY)</span>
      <input type="text" size="2" data-stripe="exp_month">
    </label>
    <span> / </span>
    <input type="text" size="2" data-stripe="exp_year">
  </div>

  <div class="form-row">
    <label>
      <span>CVC</span>
      <input type="text" size="4" data-stripe="cvc">
    </label>
  </div>
  <input type="submit" class="submit" value="Submit Payment">
</form>

关于javascript - Stripe 表单返回丢失的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39739046/

相关文章:

javascript - 查询 fullCalendar dayClick - 将(日期)转换为 HH.MM

javascript - Nodejs 异步更新插入问题

javascript - 在 Stripe 按钮上设置数据属性

javascript - 这个JS动画是怎么制作出来的呢?

php - 在 PHP 中执行 Curl 以进行 Stripe 订阅

JavaScript:使用 Object.create 时获得的最大优势是什么

javascript - 使用javascript为div设置border-left和border-right

javascript - React Context API,从子组件设置上下文状态而不是将函数作为 Prop 传递

javascript - 如何验证动态添加的输入字段

jquery - 为什么 Tipsy jQuery 插件对我不起作用?