2

Rails newb在這裏,所以添加儘可能多的細節給你的答案,並隨時告訴我,我做錯了。Rails + Stripe:在哪裏存儲用戶的訂閱類型?

上下文:我正在構建一個SaaS rails應用程序,並計劃儘快添加stripe(支付)集成。我想在集成條帶之前構建區分各種帳戶類型(訂閱計劃)的功能。

根據帳戶類型(例如,免費,級別1,級別2),我通過應用程序使用很多if/else語句來向用戶顯示/隱藏適當的功能。我的基本語句是這樣的:

<% 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時,我應該記住哪些其他最佳實踐?

回答

9

雖然你說得對,Stripe會存儲最新的數據,但我會建議你維護一個本地緩存,你會經常使用任何東西(比如訂閱狀態)。

有可能使用,以確保您的數據庫具有最新的狀態兩種主要方法:

  • 在你的代碼,使API調用條鏽,確保你也更新本地副本,或

  • 使用我們的webhooks來收聽與您的客戶相關的事件(例如,customer.subscription.updated)。通過這樣做,您可以確保本地數據庫始終與Stripe匹配 - 即使您通過儀表板更改了客戶的計劃,webhook端點也會收到更新。

主要優點在本地存儲這些數據的速度:你最有可能不想讓你的客戶在等待的API調用訪問這個數據的每個要求,特別是因爲它似乎你需要在你的網站。

您需要確保將customer ID存儲在您的數據庫中,以便您可以將Stripe客戶與本地用戶進行匹配。