我正在電子商務/市場應用上處理卡支付。用戶填寫訂單,包括送貨地址,賬單信息等,然後提交。如果填寫的表單沒有錯誤,則表單按預期工作,即保存訂單並收取卡。Rails 4 - 出現表單錯誤時處理卡支付
問題:表單發生錯誤時(例如:zip爲空),表單頁面會返回錯誤消息。但是如果信用卡信息是正確的,用戶就會被收取費用。只有在沒有表單錯誤的情況下,我才需要卡才能充電。
這是我的訂單控制器中的create
方法。我想過在respond_to塊中移動條帶電荷塊,但這不起作用,因爲只有在付款批准後才能保存訂單。
由於這是一個市場,我還有一個付款轉賬區塊,也就是說付款的一部分被轉移給物品的賣家。此代碼只應在處理付款並保存訂單後運行。
def create
@order = Order.new(order_params)
Stripe.api_key = ENV["STRIPE_API_KEY"]
token = params[:stripeToken]
begin
charge = Stripe::Charge.create(
:amount => (@listing.price * 100).floor,
:currency => "usd",
:card => token,
:description => "Charge from ABC"
)
respond_to do |format|
if @order.save
format.html { redirect_to thankyou_path(:id => @order.id) }
format.json { render action: 'show', status: :created, location: @order }
AutoNotifier.orderconf_email(current_user, @order).deliver
AutoNotifier.sellerconf_email(current_user, @seller, @order).deliver
else
format.html { render action: 'new' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end #end respond_to
if [email protected]?
transfer = Stripe::Transfer.create(
:amount => (((@listing.price * 97.1) - 30) * 0.8).floor, #converting to cents per stripe requirement. 80 percent in cents goes to seller.
:currency => "usd",
:recipient => @seller.recipient
)
end #end transfer
rescue Stripe::CardError => e
flash[:danger] = e.message
end #end rescue
end #end begin
end #end create
您是否找到解決方案? – Tobias 2015-12-17 14:31:33
是的,我使用了Deep發佈的解決方案的變體。回覆較晚,抱歉。我不在這裏。 – Moosa 2016-01-13 18:07:56