Skip to main content
分析、レポート作成、インテグレーションのために、Dodo Payments のデータを自社データベースに同期します。同期エンジンは、決済、顧客、サブスクリプション、ライセンスを MongoDB、PostgreSQL、MySQL、または ClickHouse に自動的にレプリケートします。
パッケージ: npm の dodo-sync | ソース: GitHub

同期できるデータ

次のエンティティから任意の組み合わせを選択します:

Payments

1回限りの決済、返金、ステータス更新を含む、すべての決済トランザクション。

Customers

顧客プロフィール、連絡先情報、メタデータ。

Subscriptions

サブスクリプションデータ、請求サイクル、ステータス変更。

Licenses

ライセンスキー、アクティベーション、ステータス更新。
scopes パラメータを使用して、同期するエンティティを指定します。各実行では、選択したスコープ内のすべてのレコードを取得し、IDで書き込むため、既存の行は重複せず、その場で更新されます。レコードの各ページは、単一のバッチでデータベースに書き込まれます。

Database Support

Dodo Sync は MongoDB、PostgreSQL、8.0.20 以降の MySQL、および ClickHouse をサポートしています。Snowflake やその他のデータベース、ETL パイプライン、リアルタイム同期のサポートは開発中です。 新しいデータベースインテグレーションに貢献するには、GitHub リポジトリにプルリクエストを送信してください。

はじめに

すばやくセットアップするには CLI で Dodo Sync を使用し、アプリケーションに統合するにはコードからプログラムで使用します。どちらの方法でも同じ機能を利用できます。

CLI の使用

どこからでも実行できるように CLI をグローバルにインストールします:

CLI の実行

CLI は 2 つのモードをサポートしています。ガイド付きセットアップを行う 対話モード と、直接設定する 手動モード です。 対話モード: 引数なしで実行すると、セットアップウィザードが開始します。
手動モード: 引数を直接渡してウィザードをスキップします。
例:

CLI 引数

number
必須
秒単位の同期間隔。CLI はこの間隔で継続的に実行されます。1 回だけ同期する場合は、コード内の .run() を使用します。
string
必須
データベースの種類: "mongodb"、"postgres"、"mysql"、または "clickhouse"。
string
必須
データベースの接続 URI:
  • MongoDB: mongodb://localhost:27017 または mongodb+srv://user:pass@cluster.mongodb.net/
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
string
必須
同期するエンティティをカンマ区切りで指定します: licences、payments、customers、subscriptions。例: "payments,customers"。
string
必須
Developer → API Keys にある Dodo Payments API キー。同じモードのキーを --env として使用してください。
string
必須
環境: "live_mode" または "test_mode"。
number
1 秒あたりのリクエスト数による Rate limit。同期エンジンが API リクエストを実行する速度を制御します。デフォルトは 10 です。100 以上の値を指定すると、スロットリングが無効になります。

コードでの使用

同期機能をアプリケーションに直接統合します。依存関係としてインストールします:

自動同期(インターバルベース)

一定の間隔で同期を継続的に実行します:
.start() を使用する場合、interval オプションが必須です。プロセスが停止するまで、指定した間隔で同期が継続的に実行されます。

手動同期

cron ジョブ、API エンドポイント、サーバーレス関数などから、必要に応じて同期操作をトリガーします。
手動同期では interval オプションは必要ありません。同期が必要なときに .run() を呼び出してください。.run() は、すべてのデータベースへの書き込みが完了した後にのみ解決されます。.close() は .disconnect() のエイリアスです。

Serverless での実行

Vercel、AWS Lambda、または同様のプラットフォームの場合:
  • 上記の例のように、.disconnect() を finally ブロック内で呼び出し、呼び出し間で接続が開いたままにならないようにします。
  • Node.js ランタイムを使用してください。Edge ランタイムではデータベース接続を開けません。
  • 関数のタイムアウトを延長してください。大規模な同期には、デフォルトの制限時間を超える場合があります。Vercel では、export const maxDuration = 60; を設定します。
  • 1回の呼び出しで同期するスコープを減らします。たとえば scopes: ['payments'] のようにして、各実行を短時間に保ちます。

PostgreSQL の例

MySQL の例

ClickHouse の例

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

string
必須
データベースの種類:"mongodb"、"postgres"、"mysql"、または "clickhouse"。
string
必須
データベースの接続文字列:
  • MongoDB:mongodb://localhost:27017 または mongodb+srv://...
  • PostgreSQL:postgresql://user:password@localhost:5432/mydb
  • MySQL:mysql://user:password@localhost:3306/mydb
  • ClickHouse:http://localhost:8123
string[]
必須
同期するエンティティの配列:"licences"、"payments"、"customers"、"subscriptions"。任意の組み合わせを指定できます。
object
必須
Dodo Payments API の設定。すべてのオプションについては、TypeScript SDK types を参照してください。必須プロパティ:
  • bearerToken:Dodo Payments API キー
  • environment:"test_mode" または "live_mode"
number
自動同期の間隔(秒)。.start() では必須、.run() では任意です。
number
1秒あたりのリクエスト数のレート制限。デフォルトは 10 です。100 以上の値を指定すると、スロットリングが無効になります。

重要な情報

MongoDB:コレクション(subscriptions、payments、licences、customers)は、mongodb://localhost:27017/my_database など、接続 URI で指定されたデータベースに作成されます。URI にデータベースが指定されていない場合、Dodo Sync は dodopayments_sync を使用します。PostgreSQL:テーブル(Subscriptions、Payments、Licenses、Customers)は、接続 URI で指定されたデータベースに作成されます。データは JSONB として保存されます。MySQL:MySQL 8.0.20 以降が必要です。テーブル(Subscriptions、Payments、Licenses、Customers)は、接続 URI で指定されたデータベースに作成されます。データは JSON として保存されます。ClickHouse:テーブル(Subscriptions、Payments、Licenses、Customers)は ReplacingMergeTree エンジンを使用して作成されます。クエリ時に FINAL キーワードを使用して、重複排除された結果を確実に取得してください。

0.x からのアップグレード

バージョン 1.0 では、MongoDB データの保存方法が変更され、MySQL の要件が引き上げられています。アップグレードする前に、次の点を確認してください。
  • MongoDB:既存の licences コレクションを削除します。ライセンスドキュメントは、現在は subscription_id ではなくライセンスの id によって保存され、次回の同期でコレクションに再作成されます。
  • MongoDB:接続 URI を確認します。データは常に dodopayments_sync に書き込まれるのではなく、URI で指定されたデータベースに書き込まれるようになりました。既存のデータを引き続き使用するには、URI に dodopayments_sync を含めるか、データベースの指定を省略してください。
  • MySQL:MySQL 8.0.20 以降にアップグレードします。

追加リソース

GitHub Repository

ソースコードの閲覧、問題の報告、改善への貢献

npm Package

パッケージの詳細とインストール手順の確認
最終更新日 2026年9月26日