簡體   English   中英

通過 Stripe Checkout 付款后如何更改 Rails object 字段?

[英]How to change Rails object fields after it's been paid via Stripe Checkout?

在我的應用程序中,用戶可以創建 object 的草稿,然后在“最終確定”視圖中,他們可以檢查他們是否只想要標准價格或兩個額外功能之一(例如,他們的條目在平台上出現) - 這些存儲為三個單獨的產品,每個產品都有自己的價格,因為我希望將來能夠單獨跟蹤它們。

我正在使用 Checkout 進行付款,我的后端是 Rails。

我正在聽 webhook,但我不知道如何實際修改有問題的 object,因為我看不到任何包含我需要的信息的 webhook 請求正文。

我想我需要的是這樣的:“已經成功收取了與您的 object 相關的$x費用,id 為123 ,費用包括產品prod_asdfprod_sdfg ”,然后我可以更新例如paidfeatured我的 object 的 boolean 字段。

這似乎很簡單,因為產品和價格實際上是由 Stripe 處理的,並且它們被傳遞給結帳 session,我不明白為什么我不能從 webhook 訪問它們?

編輯:我想知道是否將必要的元數據傳遞給 Session object,然后使用相同的元數據收聽checkout.session.completed事件是一個好主意。

You can link a Checkout Session back to your Listing object by including the related object ID in the metadata ( https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-metadata ) when you create the Checkout Session. 當您收聽checkout.session.completed事件時,該事件將附帶 Checkout Session object。 您可以通過檢查元數據輕松地將 Checkout Session 鏈接回您的列表 object,它還有一個amount_total字段,以便告訴您總付款金額。

您可以從line_items ( https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-line_items ) 獲取 session 中包含的產品。 不幸的是, line_items默認情況下不包含在 webhook 事件中,因為它是可擴展的( https://stripe.com/docs/expand )。 收到checkout.session.completed事件后,您可以使用該 ID 檢索 Checkout Session,其中line_items擴展如下:

session = Stripe::Checkout::Session.retrieve(
  id: 'cs_test_xxx',
  expand: ['line_items'],
)
line_items = session.line_items

或者,您可以像這樣檢索結帳會話的行項目( https://stripe.com/docs/api/checkout/sessions/line_items ):

line_items = Stripe::Checkout::Session.list_line_items('cs_test_D3OF4MY1VGflR8idkewd795t8MLd4PwA3wxdLCHikdRFTIkBecH6FKij', {limit: 5})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM