メインコンテンツまでスキップ

異常系の扱い

決済の状態と、利用者の画面操作、自社注文の状態を分けて確認します。

ブラウザを閉じた・戻ってこない​

ブラウザが戻らなくても決済は進みえます。署名前の created や予約前の signed には操作期限があり、予約後には別の着金期限があります。Webhook と状態照会で判定し、経過時間だけで支払い失敗を決めないでください。

作成要求がタイムアウトした​

決済が作成されたかどうか不明なため、同じ orderId で再試行します。新しい orderId を使うと別の決済になりえます。

状態を取得できない​

通信エラーや未知の応答を failed に変換しないでください。注文を確認中にし、間隔を空けて再照会します。404 の場合は ID・接続先・環境のデータ保持を確認します。

発行体で予約を取り消した​

予約後の取消は JPYC EX の画面で利用者が行います。STBLpay が取消完了を観測できないケースでは、決済は issue_pending のまま監視を続けます。この状態で期限内の一致着金が観測されれば通常の決済フローへ進みます。

これは STBLpay で canceled が確定した決済の復活ではありません。API が canceled を返した決済は終端であり、後から着金しても settled にはしません。資金は利用者のウォレットに残ります。

自社注文を閉じた後で成立した​

自社の在庫保持期限と STBLpay の決済期限は別です。STBLpay がまだ終端でなければ成立する可能性があります。提供できない注文への着金は検出して保留し、運用担当者へ連携してください。返金は加盟店コンソールの「取引の詳細」画面から owner が承認する経路だけで、加盟店サーバーから自動で返金することはできません(返金の提供範囲)。

加盟店の利用停止​

利用停止は、運営者が規約違反の通報などを受けて、その加盟店へのサービスの提供を止める操作です。すでに署名された支払いを取り消す操作でも、利用者の資金を止める操作でもありません。API キーは失効しないので、再開すれば、そのまま使えます。

  • 停止中に決済を作成する:403 merchant/suspended になる
  • 停止の前に作られ、まだ送信していない決済:failed で終わる。failed_reason は merchant_suspended。payment.failed の Webhook も届く
  • 送信を開始済みの決済:結果の確認を続ける。停止だけを理由に、成立か失敗かを決めない
  • 再開後に同じ orderId で作成する:既存の決済が停止で中止済み、または停止前に作られてまだ送信していなければ、409 payment/order_terminated になる
  • 停止中に加盟店コンソールを使う:ログインはできるが、新しい返金の手続き、引き出し、取引の履歴の確認、設定の変更はできない(403 merchant/suspended)

停止中も、状態照会(API 認証は不要)と、すでに作られた決済の Webhook の配信は続きます。受信側は動かし続けてください。ただし、加盟店コンソールで取引の履歴を確かめられるわけではありません。停止中の決済の結果は、状態照会と Webhook で確かめてください。

返金は加盟店が行うものです。すてぶるペイが資金を預かって、返金を代行することはありません。停止中に返金が必要になった注文は、控えておいてください。停止の解除や停止中の対応については、問い合わせ先に「利用停止の解除・対応についての相談」として連絡してください。

送信を開始済みの決済は、停止のあとに payment.settled が届くことがあります。届いたら、通常どおり成立として扱ってください。 停止中であることを理由に、成立通知を無視したり、注文を閉じたりしないでください。

409 payment/order_terminated が返ったら、新しい orderId で作り直します(冪等性)。停止で中止した決済は、再開しても復活しません。入金済みの JPYC は、利用者本人のウォレットに残ります。

通知の重複・欠落​

重複は署名検証済みボディの id と注文の条件付き更新で防ぎます。障害からの復旧後や再送打ち切り後は未確定注文を API で突合します。通知がないだけで未払いとは判断できません。

送金の結果が確定できない(nonce_conflict)​

nonce_conflict は終端ですが、送金の結果を確定できないまま確認の上限に達した状態です。送金が行われたかどうか、成功したか失敗したかは分かりません。番号(nonce)を読む通信の失敗が上限まで続いた場合も含みます(技術的な詳細)。Webhook はありません。ステータス API で検出し、自動出荷や再請求を止めて、決済 ID を添えて問い合わせ先へ調査を依頼します。

この状態は調査のあとも nonce_conflict のまま変わらないため、状態照会を待っても解決しません。調査の結果は、問い合わせへの返答として伝えます。返答を受けるまで、注文は保留のままにし、新しい orderId での作り直しもしないでください。

  • 送金が行われていたと返答を受けたとき:状態が nonce_conflict のままでも、支払いは済んでいます。成立として扱い、一度だけ商品を提供します。作り直すと利用者が二重に支払うことになりかねないため、作り直しません。
  • 送金が行われていなかったと返答を受けたとき:支払いは済んでいません。注文の扱いを確かめてから、新しい orderId で作り直します。