使用/简单条纹结帐创建客户

时间:2014-09-23 19:33:30

标签: ruby-on-rails stripe-payments

我的目标是验证用户卡信息并将该信息存储在客户对象中。

我运行付费送货服务并正在建立一个黑客以防止虚假订单(如果他们发出虚假订单或者不显示,我们可以通过条形仪表板向人们收费)。

完整的条带集成是长期目标,但我需要一些尽快的东西。我已阅读(重新阅读)文档,但遇到了麻烦。

简单的条纹结账效果很好,但我对如何从那里创建客户一无所知。

脚本:

    <form action="/charge" method="POST">
      <script
        src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="TEST KEY"
        data-image="/square-image.png"
        data-name="Food Bazooka"
        data-description="Customer Verification. No charges :)"
        data-panel-label="Confirm and Verify"
        data-label="Confirm">
      </script>


    </form>

非常感谢任何反馈或想法。

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用嵌入式表单,您需要使用自定义表单和一些服务器端代码。

您需要先创建一个代表表单中客户卡的使用令牌 (假设您的表格包含信用卡号,有效期等...)

取自文档:

表单标记:

<form action="/customer" 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>CVC</span>
      <input type="text" size="4" data-stripe="cvc"/>
    </label>
  </div>

  <div class="form-row">
    <label>
      <span>Expiration (MM/YYYY)</span>
      <input type="text" size="2" data-stripe="exp-month"/>
    </label>
    <span> / </span>
    <input type="text" size="4" data-stripe="exp-year"/>
  </div>

  <button type="submit">Submit Payment</button>
</form>

<强>使用Javascript:

jQuery(function($) {
  $('#payment-form').submit(function(event) {
    var $form = $(this);

    // Disable the submit button to prevent repeated clicks
    $form.find('button').prop('disabled', true);

    Stripe.card.createToken($form, stripeResponseHandler);

    // Prevent the form from submitting with the default action
    return false;
  });
});

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

  if (response.error) {
    // Show the errors on the form
    $form.find('.payment-errors').text(response.error.message);
    $form.find('button').prop('disabled', false);
  } else {
    // response contains id and card, which contains additional card details
    var token = response.id;
    // Insert the token into the form so it gets submitted to the server
    $form.append($('<input type="hidden" name="stripeToken" />').val(token));
    // and submit
    $form.get(0).submit();
  }
};

这基本上采用了您的形式,并在提交

之前添加了一个名为stripeToken的隐藏字段

请注意,表单操作是/ customer

我看到你正在使用标签上的Ruby On Rails - 所以你需要用控制器来处理客户POST

这是你需要做的:
https://stripe.com/docs/tutorials/charges#saving-credit-card-details-for-later

# Set your secret key: remember to change this to your live secret key in production
# See your keys here https://dashboard.stripe.com/account
Stripe.api_key = "sk_test_X9S2nHIxFy399uoNvakwJYSn"

# Get the credit card details submitted by the form
# notice stripeToken - this is the hidden field 
token = params[:stripeToken]

# Create a Customer
customer = Stripe::Customer.create(
  :card => token,
  :description => "payinguser@example.com"
)

# Charge the Customer instead of the card
# ** I have commented this block out, as you say you do not want to charge the customer
# Stripe::Charge.create(
    # :amount => 1000, # incents 
    # :currency => "gbp",
    # :customer => customer.id
# )

# Save the customer ID in your database so you can use it later
save_stripe_customer_id(user, customer.id)