【发布时间】:2015-09-01 22:04:29
【问题描述】:
我正在尝试创建一个带有条纹的自定义表单,虽然它似乎都在提交,但当我在 Stripe 中检查我的仪表板时,虽然我确实看到了交易记录 - 我没有看到金额或任何参考到通过的cc。话虽如此,我不太确定我应该在仪表板中看到什么。但我很确定我做错了什么。这是我的表单的代码:
<div class="container">
<div class="row Row one">
<div class="col-sm-12 col-md-10">
<%= form_for @project, url: project_charges_path, :html => {:id => "payment-form"}, method: 'post' do |f| %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :@project_id, :value => @project.id %>
<div class= "field">
<%= label_tag :card_number, "Credit Card Number" %><br>
<%= text_field_tag :card_number, nil, name: nil %><br>
</div>
<div class= "field">
<%= label_tag :card_code, "Security Code (cvc)" %><br>
<%= text_field_tag :card_code, nil, name: nil %><br>
</div>
<div class= "field">
<%= label_tag :card_month, "Expiration" %>
<%= select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month"} %>
<%= select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year"}%>
</div>
<div class= "actions">
<%= f.submit("Submit") %>
</div>
<div id="stipe-error">
<%= flash[:error] %>
</div>
<% end %>
</div>
</div>
<!-- <div class="row"></div> -->
这是我的收费控制器:
class ChargesController < ApplicationController
def new
@project = Project.find(params[:project_id])
end
def create
@project = Project.find(params[:project_id])
binding.pry
# Amount in cents, this is being read and recorded in stripe dashboard
@amount = 500
customer = Stripe::Customer.create(
:email => 'helloWorld@stripe.com',
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Rails Stripe customer',
:currency => 'usd'
)
@payment = Payment.create({
user_id: current_user.id,
project_id: @project,
amount: @amount
})
@payment.save
rescue Stripe::CardError => e
flash[:error] = e.message
end
# private
# def charges_params
# params.require(:payment).permit(:comments, :user_id, :project_id)
# end
结束
根据教程,我还在 application.js 中包含了一些 javascript:
$('#payment-form').submit(function(event) {
var $form = $(this);
alert('you clicked submit');
// 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();
}
}
在我看到的条纹仪表板内部:
邮件通过了,但没有涉及金额或卡。我不希望看到卡号写成,但有一些参考,可能只是类型,或者最后四位数字?同样在仪表板的首页(给出图表的区域,我想我应该看到付款的总和,甚至是测试付款,尽管已经支付了十多次每次 5 美元的测试付款,但总和仍然是 0 美元。
我在这里错过了什么?
此外,我遇到的大多数教程要么很老,要么是我不熟悉的 PHP。如果有人可以推荐一个很棒的资源,那也真的很有帮助。我计划将条带用于多个项目,并且真的很想了解它...
【问题讨论】:
标签: ruby-on-rails stripe-payments