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 usSign up for our developer newsletter: Coming Soon
You can unsubscribe at any time. Read our
privacy policy and terms and conditions.
privacy policy and terms and conditions.