メインコンテンツへスキップ
Dodo Paymentsは、支払いデータを自分のデータベースと自動的に同期する組み込みのデータベース同期機能を提供します。支払い顧客サブスクリプション、およびライセンスを同期して、分析、報告、または他のシステムとの統合のためにデータのローカルコピーを維持できます。
実装: npmパッケージを介して利用可能 | ソースコード: GitHub

何を同期できますか?

私たちのデータベース同期機能は、次のDodo Paymentsエンティティをデータベースに同期することをサポートしています:

支払い

一回限りの支払い、返金、支払いステータスの更新を含むすべての支払いトランザクションを同期します。

顧客

顧客プロファイル、連絡先情報、メタデータを含む顧客データを同期します。

サブスクリプション

アクティブなサブスクリプション、請求サイクル、サブスクリプションステータスの変更を含むサブスクリプションデータを同期します。

ライセンス

ライセンスキー、アクティベーション、ライセンスステータスの更新を含むライセンス情報を同期します。
これらのエンティティの任意の組み合わせを、scopesパラメータで指定することにより同期できます。すべての同期操作は増分であり、最適なパフォーマンスのために新しいまたは更新されたレコードのみを転送します。

データベースサポート

現在、MongoDBPostgreSQLMySQL、およびClickHouseをサポートしています。 私たちは現在、次のサポートの拡張に取り組んでいます:
  • データベース: Snowflakeなど。
  • パイプライン: ETLパイプライン、リアルタイム同期。
私たちはデータベースサポートを継続的に拡張しています。新しいデータベース統合に貢献したい場合は、私たちのGitHubリポジトリにプルリクエストを送信してください。

始め方

CLIを介して、またはコード内でプログラム的にデータベース同期機能を使用できます。どちらの方法も同じ機能を提供しますので、ワークフローに最適な方法を選択してください。

CLIの使用

CLIツールは、データベース同期を設定して実行するための迅速な方法を提供します。どこからでも使用できるように、グローバルにインストールしてください:
npm install -g dodo-sync

CLIの実行

CLIは2つのモードをサポートしています:インタラクティブモード(ガイド付きセットアップ用)とマニュアルモード(直接設定用)。 インタラクティブモード: 引数なしでコマンドを実行するだけで、インタラクティブなセットアップウィザードが開始されます。
dodo-sync
マニュアルモード: ウィザードをスキップするために引数を直接渡します。
dodo-sync -i [interval] -d [database] -u [database_uri] --scopes [scopes] --api-key [api_key] --env [environment]
例:
# MongoDB
dodo-sync -i 600 -d mongodb -u mongodb://mymongodb.url --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

# PostgreSQL
dodo-sync -i 600 -d postgres -u postgresql://user:password@localhost:5432/mydb --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

# MySQL
dodo-sync -i 600 -d mysql -u mysql://user:password@localhost:3306/mydb --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

# ClickHouse
dodo-sync -i 600 -d clickhouse -u http://localhost:8123 --scopes "licences,payments,customers,subscriptions" --api-key YOUR_API_KEY --env test_mode

CLI引数

--interval
number
同期間隔(秒)。同期操作がどれくらいの頻度で実行されるかを決定します。指定しない場合、同期は1回実行されて終了します。
--database
string
required
使用するデータベースの種類。サポートされている値: "mongodb""postgres""mysql"、または"clickhouse"
--database-uri
string
required
データベースの接続URI:
  • MongoDB: mongodb://localhost:27017またはmongodb+srv://user:[email protected]/
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
--scopes
string
required
同期するデータエンティティのカンマ区切りリスト。利用可能なスコープ: licencespaymentscustomerssubscriptions。例: "payments,customers"
--api-key
string
required
あなたのDodo Payments APIキー。ライブモードの場合はdp_live_で始まり、テストモードの場合はdp_test_で始まる必要があります。
--env
string
required
ターゲット環境。"live_mode"または"test_mode"のいずれかでなければなりません。これにより、どのDodo Payments環境から同期するかが決まります。
--rate-limit
number
リクエストのレート制限(秒あたり)。Dodo Payments APIを圧倒しないように、同期エンジンがAPIリクエストを行う速度を制御します。

コード内での使用

プログラム的な制御のために、同期機能をアプリケーションに直接統合します。プロジェクトに依存関係としてインストールします:
npm install dodo-sync

自動同期(間隔ベース)

自動同期を使用すると、同期を定期的に継続的に実行できます:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60, // Sync every 60 seconds
  database: 'mongodb',
  databaseURI: process.env.MONGODB_URI, // e.g., 'mongodb://localhost:27017'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode' // or 'live_mode'
  }
});

// Initialize connection
await syncDodoPayments.init();

// Start the sync loop
syncDodoPayments.start();
intervalオプションは、自動同期のために.start()を使用する場合に必要です。プロセスが停止されるまで、指定された間隔で同期が継続的に実行されます。

手動同期

手動同期を使用すると、オンデマンドで同期操作をトリガーできます(例:cronジョブやAPIエンドポイントから):
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  database: 'mongodb',
  databaseURI: process.env.MONGODB_URI,
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

// Initialize connection
await syncDodoPayments.init();

// Trigger a single sync operation
await syncDodoPayments.run();
手動同期を使用する場合、intervalオプションは必要ありません。同期操作を実行する必要があるときに.run()を呼び出すことができます。

PostgreSQLの例

PostgreSQLでdodo-syncを使用する方法は次のとおりです:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60,
  database: 'postgres',
  databaseURI: process.env.POSTGRES_URI, // e.g., 'postgresql://user:password@localhost:5432/mydb'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

await syncDodoPayments.init();
syncDodoPayments.start();

MySQLの例

MySQLでdodo-syncを使用する方法は次のとおりです:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60,
  database: 'mysql',
  databaseURI: process.env.MYSQL_URI, // e.g., 'mysql://user:password@localhost:3306/mydb'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

await syncDodoPayments.init();
syncDodoPayments.start();

ClickHouseの例

ClickHouseでdodo-syncを使用する方法は次のとおりです:
import { DodoSync } from 'dodo-sync';

const syncDodoPayments = new DodoSync({
  interval: 60,
  database: 'clickhouse',
  databaseURI: process.env.CLICKHOUSE_URI, // e.g., 'http://localhost:8123'
  scopes: ['licences', 'payments', 'customers', 'subscriptions'],
  dodoPaymentsOptions: {
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
    environment: 'test_mode'
  }
});

await syncDodoPayments.init();
syncDodoPayments.start();

コンストラクタオプション

database
string
required
使用するデータベースの名前。サポートされている値: "mongodb""postgres""mysql"、または"clickhouse"
databaseURI
string
required
データベースの接続文字列:
  • MongoDB: mongodb://localhost:27017またはmongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
scopes
string[]
required
同期するエンティティの配列。利用可能なオプション: "licences""payments""customers""subscriptions"。これらの任意の組み合わせを含めることができます。
dodoPaymentsOptions
object
required
認証と環境選択のためのDodo Payments API設定。完全なオプションについては、TypeScript SDKタイプを参照してください。必須プロパティ:
  • bearerToken: あなたのDodo Payments APIキー
  • environment: "test_mode"または"live_mode"
interval
number
自動同期の間の時間(秒)。自動同期のために.start()を使用する場合に必要です。手動同期のために.run()を使用する場合はオプションです。
rateLimit
number
秒あたりのリクエスト数。Dodo Payments APIを圧倒しないように、同期エンジンがAPIリクエストを行う速度を制御します。

重要な情報

MongoDB: dodopayments_syncという名前のデータベースが自動的にデータベースサーバー上に作成されます。すべての同期データはそこに保存されます。このデータベース名は現在固定されており、変更することはできません。PostgreSQL: テーブル(SubscriptionsPaymentsLicensesCustomers)は、接続URIで指定されたデータベースに作成されます。データはJSONBとして保存されます。MySQL: テーブル(SubscriptionsPaymentsLicensesCustomers)は、接続URIで指定されたデータベースに作成されます。データはJSONとして保存されます。ClickHouse: テーブル(SubscriptionsPaymentsLicensesCustomers)は、ReplacingMergeTreeエンジンを使用して作成されます。クエリを実行する際は、重複のない結果を確保するためにFINALキーワードを使用してください。
同期エンジンは変更を追跡し、新しいまたは更新されたレコードのみを同期するため、後続の同期は大規模なデータセットでも効率的です。

追加リソース