[英]Rails + Stripe: where to store what type of subscription a user has?
Rails newb在這里,所以在你想要的時候添加盡可能多的細節,並隨時告訴我,我做錯了。
背景:我正在構建一個SaaS rails應用程序,並計划盡快添加條帶(支付)集成。 在整合條帶之前,我想構建區分各種帳戶類型(訂閱計划)的功能。
我在應用程序中使用了很多if / else語句,具體取決於帳戶類型(例如,免費,級別1,級別2),以向用戶顯示/隱藏適當的功能。 我的基本陳述如下:
<% if current_user.account_level == "1" %>
your account level is 1
<% elsif current_user.account_level == "2" %>
your account level is 2
<% else %>
<% end %>
這假設我記錄了用戶在用戶模型(或其他模型)中的“帳戶級別”。 這是適當的地方嗎? 從技術上講,Stripe擁有最新數據(即如果卡取消了帳戶級別會有所不同)。 我應該直接使用Stripe api來確定帳戶級別嗎? 好像我應該在我的數據中的某處記錄。
知道我將來會集成Stripe,在開發過程中是否還應該記住其他最佳實踐?
雖然Stripe將存儲最新數據你是對的,但我建議維護一個你經常使用的任何東西的本地緩存(比如訂閱狀態)。
您可以使用兩種主要方法來確保數據庫具有最新狀態:
在對Stripe進行API調用的代碼中,請確保您還要更新本地副本,或者
使用我們的webhook來監聽與您的客戶相關的事件(例如, customer.subscription.updated
)。 通過這樣做,您可以確保您的本地數據庫始終與Stripe匹配 - 即使您通過儀表板更改了客戶的計划,您的webhook端點也將收到更新。
在本地存儲這些數據的主要好處是速度:您很可能不希望您的客戶等待每次訪問此數據的請求的API調用,特別是因為您似乎需要在整個網站中使用它。
您需要確保將客戶ID存儲在數據庫中,以便可以將Stripe客戶與本地用戶進行匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.