Bối cảnh:Kiểm tra cho một khoản phí thành công sử dụng sọc cho đường ray
Tôi đang sử dụng sọc thanh toán chấp nhận thanh toán một lần ở đường ray. Tôi có bộ điều khiển phí như hình dưới đây. Ban đầu tôi đã sử dụng webhook sọc để nghe charge.succeeded, nhưng gặp phải một số vấn đề do tính chất không đồng bộ của webhook. Tôi đã chuyển logic nghiệp vụ sang bộ điều khiển. Nếu phí của khách hàng là thành công, sau đó tôi lưu khách hàng và một số chi tiết khác vào db.
Câu hỏi của tôi:
là việc kiểm tra này đủ để đảm bảo rằng một lần sạc là thành công?
if charge["paid"] == true
Các tài liệu Stripe cho Stripe :: Charge.create tiểu bang, " Trả về một đối tượng chịu trách nhiệm nếu phí thành công. Tăng lỗi nếu họ gặp khó khăn. Một nguồn tin chung của lỗi là thẻ không hợp lệ hoặc đã hết hạn, hoặc một thẻ hợp lệ với số dư không đủ khả dụng. "
My 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
Vì vậy, về mặt kỹ thuật, anh ấy không cần phải làm gì nếu tính phí ["trả tiền"] 'đúng? Bởi vì nếu phí không thành công, ngoại lệ sẽ được nâng lên và phần của mã sẽ không được thực thi? – okysabeni
không cần sử dụng webhook? –
Chúng ta có thể dựa vào trạng thái = "đã thành công" không? –