Bağlam Stripe kullanarak başarılı bir ücret karşılığında denetleniyor: Ben raylar içinde tek seferlik bir ödeme kabul etmek Stripe ödeme kullanıyorumraylar için
. Aşağıda gösterildiği gibi bir şarj kontrol cihazım var. Başlangıçta, şarjı dinlemek için şerit webhook'u kullanıyordum, ancak web kitaplarının asenkron doğası nedeniyle bazı sorunlara yol açıyordum. Benim iş mantığını denetleyiciye taşıdım. Müşteri ücreti bir başarıysa, müşteriyi ve diğer ayrıntıları db'ye kaydediyorum.
Sorum:
bir ücret başarılı olmasını sağlamak için yeterli bu onay mı? bir şeyler ters giderse şarj başarılı olursa bir ücret nesnesi döndürür
if charge["paid"] == true
Çizgili :: Charge.create devletler için Stripe dokümantasyon, ". bir hata Artırdı. hatasının yaygın kaynağı geçersiz veya süresi dolmuş karttır, veya yetersiz kullanılabilir bakiye ile geçerli bir kart. "
Benim ChargesController:
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 100
temp_job_id = cookies[:temp_job_id]
customer_email = TempJobPost.find_by(id: temp_job_id).company[:email]
customer = Stripe::Customer.create(
:email => customer_email,
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Rails Stripe customer',
:currency => 'usd',
:metadata => {"job_id"=> temp_job_id}
)
# TODO: charge.paid or charge["paid"]
if charge["paid"] == true
#Save customer to the db
end
# need to test this and refactor this using begin-->rescue--->end
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to charges_path
end
end
Yani, teknik olarak, eğer ücret ["ödenmiş"] doğruysa yapması gerekmiyor? Çünkü ücret başarısız olursa, istisna kaldırılacak ve kodun bu bölümü yürütülmeyecek mi? – okysabeni
Webhooks kullanmaya gerek yok mu? –
Durum = "başarılı" ya da güvenebilir miyiz? –