我正在使用条带api并且我一直遇到错误"必须提供来源或客户"。我认为问题是令牌没有被创建,因此没有传递给控制器,因为它没有出现在参数中。 这是代码:
<script type="text/javascript">
function stripeResponseHandler(status, response) {
var $form = $('#payment-form');
if (response.error) {
$form.find('.payment-errors').text(response.error.message);
$form.find('#paySubmit').prop('disabled', false);
} else {
var token = response.id;
$form.append($('<input type="hidden" name="stripeToken" />').val(token));
$form.get(0).submit();
};
};
jQuery(function($) {
$('#payment-form').submit(function(event) {
var $form = $(this);
$form.find('#paySubmit').prop('disabled', true);
Stripe.card.createToken($form, stripeResponseHandler);
return false;
});
});
</script>
<div class="checkout">
<h1>Order Barbell Balm</h1>
<form action="/charges" method=POST id="payment-form">
<span class="payment-errors"></span>
<ul>
<li class="form">
<label>
Quantity
<input type="text" size="3" name="amount" />
</label>
</li>
<li class="form">
<label>
Card Number
<input type="text" size="20" data-stripe="number" />
</label>
</li>
<li class="form">
<label>
CVC
<input type="text" size="4" data-stripe="cvc" />
</label>
</li>
<li class="form">
<label>
Expiration (MM/YYYY)
<input type="text" size="2" data-stripe="exp-month" />
<input type="text" size="4" date-stripe="exp-year" />
</label>
</li>
<li class="form">
<input type="submit" class="button" id="paySubmit" />
</li>
</ul>
</form>
</div>
这是控制器:
class ChargesController < ApplicationController
def new
end
def create
amount = order_params[:amount] * 10 * 100
token = order_params[:stripeToken]
charge = Stripe::Charge.create(
:amount => amount,
:currency => 'usd',
:source => token,
:description => 'Barbell Balm'
)
rescue Stripe::CardError => e
end
protected
def order_params
params.permit(:stripeToken, :amount)
end
end
答案 0 :(得分:0)
想出来。我没有正确设置我的可发布密钥!
答案 1 :(得分:0)
如果您没有创建令牌,请仔细检查您是否正确设置了可发布的密钥?