課金スケジュール API
課金スケジュール APIを使用すると、定期課金スケジュールを一括で作成・管理できます。このAPIは大量操作向けに設計されており、CSVファイルをアップロードして複数のスケジュールを一度に作成し、既存のスケジュールを一括で一時停止、再開、削除できます。
利用可能なエンドポイント
- スケジュールの一括作成 - POST /schedules/upload
- 一括作成の進捗監視 - GET /recurring_exports/:recurring_id
- 一括ステータスのダウンロード - GET /recurring_exports/:recurring_id/download
- スケジュールの一括一時停止 - PATCH /schedules/bulk_pause
- スケジュールの一括再開 - PATCH /schedules/bulk_resume
- スケジュールの一括削除 - DELETE /schedules/bulk_delete
関連エンドポイント
- スケジュール API - 個別スケジュール管理
- スケジュール一覧 - GET /schedules
- スケジュール作成 - POST /schedules
- 顧客 API - 顧客管理
概要
課金スケジュール APIは、定期課金を管理するための一括操作を提供します:
- CSV アップロード - 単一のCSVファイルから数百から数千の課金スケジュールを作成
- 進捗監視 - 一括作成ジョブのステータスをリアルタイムで追跡
- ステータスレポート - 各スケジ ュールの成功/失敗ステータスを含む詳細レポートをダウンロード
- 一括一時停止 - 複数のアクティブなスケジュールを同時に一時停止
- 一括再開 - 複数の一時停止中のスケジュールを一度に再開
- 一括削除 - 複数のスケジュールを単一の操作で完全に削除
一般的なユースケース
- 別のプラットフォームからのサブスクリプション顧客の移行
- 大規模な顧客ベースに対する定期支払いの設定
- 季節的なスケジュール管理(休日のための一時停止/再開)
- 解約した顧客のスケジュールの一括キャンセル
- 企業顧客向けの定期課金の初期設定
一括作成の仕組み
- 顧客とスケジュールの詳細を含むCSVファイルを準備
- CSVファイルをアップロードして一括作成ジョブを作成
- recurring_idを使用してジョブの進捗を監視
- ステータスレポートをダウンロードして結果を確認し、エラーを処理
- 成功したスケジュールは自動的に実行を開始
CSVファイル形式
スケジュールを一括作成する際、CSVファイルには以下のカラムを含める必要があります:
| カラム | 必須 | 説明 |
|---|---|---|
customer_key | はい | 顧客行の一意の識別子(追跡用) |
customer | はい | カードが紐付けられた顧客ID (cust_*) |
card | いいえ | 課金する特定のカードID(指定しない場合はデフォルトを使用) |
amount | はい | 最小通貨単位での課金額 |
description | いいえ | 各課金の説明 |
every | はい | 頻度の乗数(例:毎月の場合は1) |
period | はい | 時間単位:day、week、またはmonth |
days_of_month | 条件付き | 課金日(monthの期間で必須) |
start_date | いいえ | スケジュール開始日 (YYYY-MM-DD) |
end_date | いいえ | スケジュール終了日 (YYYY-MM-DD) |
CSVの例
customer_key,customer,card,amount,description,every,period,days_of_month,start_date,end_date
sub_001,cust_test_abc123,,100000,Monthly premium plan,1,month,1,2025-02-01,2026-01-31
sub_002,cust_test_def456,card_test_xyz789,50000,Basic subscription,1,month,15,2025-02-01,
sub_003,cust_test_ghi012,,200000,Enterprise plan,1,month,1;15,2025-02-01,2025-12-31
認証
すべての課金スケジュール APIエンドポイントは、シークレットキーを使用した認証が必要です。
一括操作の制限
| 操作 | 制限 |
|---|---|
| CSVファイルサイズ | 最大10MB |
| CSV当たりのスケジュール数 | 最大10,000行 |
| 一括一時停止/再開/削除当たりのスケジュールID数 | 最大100 ID |
| 同時一括作成ジョブ数 | アカウント当たり5件 |
ジョブステータスのライフサイクル
一括作成ジョブは以下のステータスを経て進行します:
pending- ジョブはキューに入り、開始を待っていますprocessing- ジョブはアクティブにスケジュールを作成中completed- ジョブ完了(個別の結果についてはレポートを確認)failed- ジョブで致命的なエラーが発生
エラー処理
一括作成エラー
一括作成ジョブは回復力を持つよう設計されています。個別の行が失敗した場合:
- ジョブは残りの行の処理を続行
- 失敗した行はステータスレポートに記録
- レポートをダウンロードして行ごとの具体的なエラーメッセージを確認
一般的なCSVエラー
| エラー | 説明 | 解決方法 |
|---|---|---|
invalid_customer | 顧客IDが見つかりません | 顧客が存在し、カードが紐付けられていることを確認 |
invalid_card | カードが見つからないか期限切れ | 有効なカードIDを使用するか、削除してデフォルトを使用 |
invalid_amount | 金額がゼロまたは負の値 | 正の整数の金額を指定 |
invalid_period | 無効な期間の値 | day、week、またはmonthを使用 |
missing_days_of_month | 月次期間に必須 | 日を指定(例:1または1;15) |
一括一時停止/再開/削除エラー
| エラー | 説明 | 解決方法 |
|---|---|---|
schedule_not_found | 1つ以上のスケジュールIDが無効 | すべてのスケジュールIDが存在することを確認 |
invalid_status | スケジュールが操作に不適切な状態 | 現在のスケジュールステータスを確認 |
too_many_ids | リクエスト当たりの最大ID数を超過 | 複数のリクエストに分割(最大100) |
ベストプラクティス
1. アップロード前にCSVを検証
CSVファイルで以下を確 認:
- 正しいカラムヘッダー
- 有効な顧客ID
- 適切な日付形式(YYYY-MM-DD)
- 整数としての金額値(小数ではなく)
2. ジョブの進捗を監視
監視エンドポイントを定期的にポーリング:
// 完了まで5秒ごとに確認
const checkStatus = async (recurringId) => {
const status = await getJobStatus(recurringId);
if (status.state === 'completed') {
return await downloadReport(recurringId);
}
setTimeout(() => checkStatus(recurringId), 5000);
};