3

Rails newb here.

コンテキスト: 私は SaaS レール アプリを構築しており、ストライプ (支払い) 統合をすぐに追加する予定です。ストライプを統合する前に、さまざまなアカウントの種類 (サブスクリプション プラン) を区別する機能を構築したいと考えています。

ユーザーに適切な機能を表示/非表示にするために、アカウントの種類 (無料、レベル 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 を統合することを知って開発する際に留意すべきベスト プラクティスは他にありますか?

4

1 に答える 1

10

Stripeが最新のデータを保存することは間違いありませんが、頻繁に使用するもの(サブスクリプションの状態など)のローカルキャッシュを維持することをお勧めします。

データベースが最新の状態であることを確認するために使用できる主なアプローチは2つあります。

  • StripeへのAPI呼び出しを行うコードでは、ローカルコピーも更新していることを確認してください。

  • Webhookを使用して、顧客に関連するイベントをリッスンします(例:) customer.subscription.updated。これにより、ローカルデータベースが常にStripeと一致するようになります。ダッシュボードを介して顧客の計画を変更した場合でも、Webhookエンドポイントが更新を受信します。

このデータをローカルに保存する主な利点は速度です。特に、Webサイト全体で必要と思われるため、このデータにアクセスする各リクエストのAPI呼び出しを顧客が待たないようにする必要があります。

Stripeの顧客をローカルユーザーと照合できるように、顧客IDをデータベースに保存していることを確認する必要があります。

于 2013-01-01T19:39:22.390 に答える