ポーリング可能なトランザクション
UnivaPay API のトランザクションは作成直後に処理中(pending
)のステータスになります。この状態は、クレジットカード会社などの決済事業者によって処理された結果が反映されていない為、決済直後に課金情報を取得しても、その時点でのステータスは参考になる情報ではありません。
決済を行った後、ユーザーに対して現在の決済の状態をなるべく早く反映させたい場合は、ポーリングを利用することを推奨します。
ウェブフックを使わない場合、対象のトランザクションに対して、ステータスの変化を検出するまで GET リクエストを行うことで、トランザクションのステータスが変更されたタイミングで通知を受けることが可能です。
しかし、この方法はAPIのリクエスト制限を受けないように適切なエラー処理を行ったポーリングの仕組みを加盟店側で実装しなくてはなりません。
そこで、 UnivaPay API は以下のリソースに対して1回のAPIリクエストでトランザクションのステータスを効率的にポーリングする手段を提供しています:
これらのリソースに GET リクエストを送信する時、polling
リクエストパラメータを true
と指定すると、APIは対象のリソースが最終的な状態 ※(例: 成功、失敗、継続中 など)に遷移するまでAPIの内部でポーリングします。
3秒 以内にこのような状態に到達した場合、APIは更新されたレスポンスを返します。ポーリング実行から3秒以内にステータス変更がない場合、状態が何であっても3秒後時点の状態を返します。
※GETリクエストのレスポンスが502,503,504のエラーだった場合、一時的な通信環境の悪化が原因の可能性があるため、数秒後に再度リクエストを行ってください。結果が成功になる場合があります。
これらのエラーの場合が返却されてすぐには決済が失敗したと判断されないようお願いいたします。
※最終的な状態について
ポーリングする対象のリソースによって、最終的な状態を表すステータスは異なります。
- 課金 :
Canceled, Error, Failed, Successful
(最初の状態がpending
の場合は、何かしらステータスが変化したタイミングで最終的な状態としてポーリングは終了いたします) - 返金 :
Error, Failed, Successful
- キャンセル :
Error, Failed, Successful
- 定期課金 : 最終状態なし(最初の状態が
Unverified
の場合は、何かしらステータスが変化したタイミングで最終的な状態としてポーリングは終了いたします)