2014-07-13 88 views
1

我即將實施與Stripe的訂閱賬單,以及訂閱如何實現的方式。Rails - 使用Stripe執行訂閱

我知道我可以在Stripe的儀表板中爲訂閱指定所有可能的計劃。在我的應用程序中,當我發送條帶請求時,條帶會根據計劃的參數「id」識別訂閱計劃的類型。這很清楚。

但是 - 有什麼辦法可以將Stripe的儀表板中的所有創建的訂閱計劃加載到我的Rails應用程序中,還是需要先在Stripe的儀表板中創建所有訂閱計劃,然後在我的Rails表中創建數據庫表存儲關於訂閱計劃的所有信息(所以這將是 - 善良 - 數據複製的東西)?

回答

1

根據我對Stripe的經驗,我喜歡限制我在Rails端存儲的東西的數量。很多時候,我認爲只要在每個用戶的數據庫中記錄一個Stripe客戶ID,就可以逃脫。然後通過API直接從Stripe獲取所需的任何信息。

這肯定會讓一些客戶端請求花費更長時間,但可以在您更好地理解應用需要做什麼以獲得最佳用戶體驗的時候阻止您。

然後,你應該看看緩存策略,搶先從Stripe獲取你需要的信息。

+0

但是這讓我想到了經常性支付 - 我設置了一個月的訂閱頻率。這意味着每個月Stripe系統都會自動向客戶的信用卡收費 - 但Stripe會在這種情況發生時通知我嗎?我需要將關於每月費用的信息保存到我的Rails應用程序的數據庫中,因此我可以在付費時向客戶展示一些擴展功能。 – user984621

+0

當事件通過[events API](https://stripe.com/docs/api?lang=ruby#event_types)發生時,您可以讓Stripe通知您的應用程序。因此,當您從Stripe收到通知時,您可以在本地保存收費信息。 –

0

一些重複可能會使典型的查詢和操作更容易。有一些東西你從來沒有想要在Rails方面(例如信用卡號碼)。另一方面,訂閱信息(例如計劃名稱&可能的試用期)在本地很方便,因爲您可能經常會顯示/檢查這些信息(「Hi Martin,您的企業計劃試用期還剩5天」)。

如果/當你開始做一些重複時,我仍建議你將Stripe作爲「主」保存在關係中,即將信息發送到條帶,如果成功則將其存儲在本地。這應該避免最大的重複問題 - 兩個系統之間不同步。