Home
>
Docs
>
>

Off-session決済

既存のcustomerをバックグラウンドで課金 — 定期的なサブスクリプション請求を含む。

customerが有効な契約を持つと、そのcus- IDで請求できます — リダイレクトもbuyerの操作も不要です。非同期(async)の請求を使用してください。これは即座にcharge IDを返し、支払いはバックグラウンドで処理されます。

const result = await jamm.payment.offSessionPaymentAsync({
  customer: "cus-...",
  charge: { price: 1000, description: "Monthly plan — June" },
  idempotencyKey: "order-2026-001",  // 任意。省略すると自動生成されます
});

呼び出しは即座にcharge IDを返します。最終結果はCHARGE_SUCCESS / CHARGE_FAIL Webhookで確認してください(またはgetCharge(chargeId)をポーリングします)。

重要: 非同期の請求を使用してください。同期版のoffSessionPaymentは非推奨になります。offSessionPaymentAsyncはリトライにも安全です。idempotencyKeyを省略すると自動生成され、独自のキーを渡すとリトライ時に元のchargeを再利用し、重複した請求を作成しません。

Off-sessionはサブスクリプションの請求にも利用できます。Jammはバッチ処理等の決済スケジュールの実行をしません。各期間の請求は、加盟店自身のスケジューラー(cron、ジョブキューなど)からトリガーしてください — いつ請求するかは加盟店次第になります。


前提条件

Off-session決済を実行するには、以下を確認してください:

  • customerがoneTime: falseのon-sessionで作成されていること([On-session Payments]を参照)
  • そのcustomerについてCONTRACT_ACTIVATEDを受信していること
  • そのcustomerについてUSER_ACCOUNT_DELETEDを受信していないこと

customerがoff-session決済が可能かどうかは、customerを取得してactivatedフィールドを確認することで判定できます — これは請求可能かどうかの信頼できる情報源であり、契約とKYCの両方の状態を返却します:

// Node
const customer = await jamm.customer.get("cus-...");

if (customer?.activated) {
  // off-session請求の準備完了
}
Was this page helpful?
Need help? Coming Soon
Support Center Slack community Contact us
Sign up for our developer newsletter: Coming Soon
You can unsubscribe at any time. Read our
privacy policy and terms and conditions.
jaen