復帰と結果の受け取り
returnUrl は利用者が加盟店サイトへ戻るための URL です。復帰 URL のクエリ、ブラウザから送られた状態、画面遷移の成功は、決済成立の根拠になりません。
復帰ページ
自社ログインで注文へのアクセスを認可し、自社サーバーが保持する注文状態を表示します。戻ってきた時点で自社の注文が未更新なら、サーバーから 状態照会を行って確かめます。
戻り先の URL には、決済 ID が stbl_pay_intent クエリとして付きます(例:?stbl_pay_intent=pi_0123456789abcdef0123456789abcdef)。どの決済から戻ったかを知る手がかりとして使えますが、利用者が書き換えられる値です。自社の注文に結び付いた決済 ID と一致するかを確かめてから照会してください。
| 区分 | 対応する値 | 表示の例 |
|---|---|---|
| 成立 | settled | お支払いを確認しました |
| 途中 | created・signed・issue_pending・deposit_confirmed・deploying・executing | お支払いを確認しています |
| 成立しなかった | canceled・expired・failed | お支払いは完了していません |
| 要確認 | nonce_conflict | 確認が必要です。サポートへお問い合わせください |
| 照会できない | 通信の失敗やタイムアウト(決済の状態ではない) | 現在確認できません。注文履歴からご確認ください |
照会に失敗しても決済の失敗ではありません。再決済をすぐ促すと二重請求につながります。
成立しなかった決済では、加盟店へ JPYC は送られていません。利用者が用意した JPYC は、通常は利用者のウォレットに残っています。ただし failed のうち failedReason が deposit_recipient_mismatch の場合は、着金先が利用者のウォレットと一致しなかったため、利用者のウォレットに残っているとは限りません。この場合は利用者をサポートへ案内してください。もう一度支払ってもらうときは、新しい orderId で決済を作り直してください。 同じ orderId で作成しても、終わった決済がそのまま返ります(冪等性)。
ブラウザが戻らない場合
着金の検知、残高の確認、送金の実行は、ブラウザとは独立して進みます。ただし、振込が必要な場合は、利用者が決済ページから JPYC EX の手続きへ進むまで(issue_pending になるまで)は決済ページが要ります。その前にタブを閉じると、利用者が戻って手続きを続けない限り決済は進まず、操作期限で expired になります。署名しただけで成立が保証されるわけでもありません。結果は、Webhook(使う場合)と、未確定注文の定期照会で取得してください。
商品提供の判断はサーバーで行います。