Java向けのライブラリを更新しました 2.1.2 -> 2.2.1

Java向けのライブラリをバージョン2.2.1にアップデートしました。

今回の更新では次のような変更が行われました。

  • 返金(charge.refund)APIにuuidパラメータを追加しました
  • エラーレスポンスの処理が容易なようにクラス階層を変更しました

uuidパラメータについてはAPIドキュメントをご覧ください。

エラーレスポンスについて、 従来はエラーレスポンスの例外クラスの共通の親クラスが、 WebPayライブラリが発生するエラーのルートクラスであるjp.webpay.webpay.ApiExceptionであったため、 エラーレスポンスと接続不良などの例外で分類するのが煩雑でした。

今回の更新ではエラーレスポンスのルートクラスであるjp.webpay.webpay.errorresponse.ErrorResponseExceptionが追加され、エラーレスポンスだけを処理するのが容易になりました。 エラーレスポンスはすべて類似の構造なので、caused_byフィールドを使うことでわかりやすいエラー処理が可能です。 各エラーをどう処理すべきかについて、APIエラーに関するドキュメントをあわせてご覧ください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
try {
    // API リクエスト
} catch (jp.webpay.webpay.errorresponse.ErrorResponseException e) {
    ErrorBody error = e.data.error;
    String causedBy = error.causedBy;
    if (causedBy == null) {
        // 通常発生しない
        // 発生した場合、お問い合わせください
    } else if (causedBy.equals("buyer")) {
        // カードエラーなど、購入者に原因がある
        // エラーメッセージをそのまま表示するのがわかりやすい
    } else if (causedBy.equals("insufficient")) {
        // 実装ミスに起因する
    } else if (causedBy.equals("missing")) {
        // リクエスト対象のオブジェクトが存在しない
    } else if (causedBy.equals("service") {
        // WebPayに起因するエラー
    } else {
        // 新しく追加された原因に対応していない
    }
} catch (jp.webpay.webpay.ApiException e) {
    // APIからのレスポンスが受け取れない場合。接続エラーなど
}