sev*_*ens 2 architecture ruby-on-rails ruby-on-rails-3 stripe-payments
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 %>
Run Code Online (Sandbox Code Playgroud)
这假设我记录了用户在用户模型(或其他一些模型)中的"帐户级别".这是适当的地方吗?从技术上讲,Stripe拥有最新数据(即如果卡取消了帐户级别会有所不同).我应该直接使用Stripe api来确定帐户级别吗?好像我应该在我的数据中的某处记录.
知道我将来会集成Stripe,在开发过程中是否还应该记住其他最佳实践?
小智 9
虽然Stripe将存储最新数据你是对的,但我建议你保留一个你经常使用的任何东西的本地缓存(比如订阅状态).
您可以使用两种主要方法来确保数据库具有最新状态:
在对Stripe进行API调用的代码中,请确保您还要更新本地副本,或者
使用我们的webhook来监听与您的客户相关的事件(例如,customer.subscription.updated).通过这样做,您可以确保您的本地数据库始终与Stripe匹配 - 即使您通过仪表板更改了客户的计划,您的webhook端点也将收到更新.
在本地存储这些数据的主要好处是速度:您很可能不希望您的客户等待每次访问此数据的请求的API调用,特别是因为您似乎需要在整个网站中使用它.
您需要确保将客户ID存储在数据库中,以便将Stripe客户与本地用户进行匹配.
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |