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

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

今回の更新では、従来のバージョン1.x.yと非互換の仕様変更が行われています。 アップデートを行う際には十分ご注意下さい。

仕様が変更となった箇所は次の通りです。

  • artifactId
  • リクエストに用いるクライアントのクラス名
  • 作成済みオブジェクトを操作する方法
  • Exceptionのクラス名

また、定期課金オブジェクト(Recursion)の操作が可能になっています。

artifactId

今回のバージョンより、artifactIdがwebpay-javaからwebpayに変更されているため インストール時にGradle環境なら

1
2
- compile 'jp.webpay:webpay-java:1.2.1'
+ compile 'jp.webpay:webpay:2.0.1'

Mavenなら

1
2
3
4
5
6
7
<dependency>
  <groupId>jp.webpay</groupId>
-  <artifactId>webpay-java</artifactId>
-  <version>1.2.1</version>
+  <artifactId>webpay</artifactId>
+  <version>2.0.1</version>
</dependency>

というような変更が必要となります。

リクエストに用いるクライアントのクラス

リクエストに用いるクライアントのクラスがWebPayClientからWebPayに変わりました。 また、それぞれのリクエストの組み立てに都度行っていたコンストラクトする必要がなくなり、 クライアントのインスタンスに対してbuilderパターンのようにドットで繋ぎ、 最後にexecute()を実行することでリクエストが行われる形へと記述方法が変わりました。

従来

1
2
3
WebPayClient client = new WebPayClient("test_secret_eHn4TTgsGguBcW764a2KA8Yd");
CustomerRequest customerRequest = new CustomerRequest().description("これまでの顧客");
client.customers.create(customerRequest);

バージョン2.0.1以降

1
2
WebPay webpay = new WebPay("test_secret_7u7fWx6xObdffBLbr8eJL11L");
webpay.customer.createRequest().description("これからの顧客").execute();

作成済みオブジェクトを操作する方法

各オブジェクトを操作する際に、都度retrieveによる呼び出しの上で、操作を行っていましたが、 行う操作をすぐに記述出来るようになりました。 以下は作成済みのChargeオブジェクトを払い戻す場合の例による比較です。

従来

1
2
3
4
WebPayClient client = new WebPayClient("test_secret_eHn4TTgsGguBcW764a2KA8Yd");

Charge charge = client.charges.retrieve("ch_3u32gEgiy2xjfEf");
charge.refund();

バージョン2.0.1

1
2
3
WebPay webpay = new WebPay("test_secret_7u7fWx6xObdffBLbr8eJL11L");

webpay.charge.refundRequest("ch_2Gvf8Me2V3Do5S1").execute();

各オブジェクトに対する新たな操作方法についての詳しくはAPIドキュメントをご覧ください。

Exceptionのクラス名

Exceptionのクラス名が変更となったため、以下のようにエラーハンドリングの処理の変更が必要となります。

従来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
try {
  client.account.retrieve();
} catch (CardException e) {
  // カードが拒否された場合
  System.out.printf("Status is: %d\n" +
      "Type is: %s\n" +
      "Code is: %s\n" +
      "Param is: %s\n" +
      "Message is: %s\n",
      e.getStatus(), e.getType(),
      e.getCode(), e.getParam(), e.getMessage());
} catch (InvalidRequestException e) {
  // リクエストで指定したパラメータが不正な場合
} catch (AuthenticationException e) {
  // 認証に失敗した場合
} catch (ApiConnectionException e) {
  // APIへの接続エラーが起きた場合
} catch (WebPayException e) {
  // WebPayのサーバでエラーが起きた場合
} catch (Exception e) {
  // WebPayとは関係ない例外の場合
}

バージョン2.0.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
try {
  // webpay-javaライブラリを利用したWebPayへのアクセス
} catch (jp.webpay.webpay.errorresponse.CardException e) {
  ErrorBody err = e.data.error;
  // カードが拒否された場合
  System.out.printf("Status is: %d\n" +
      "Type is: %s\n" +
      "Code is: %s\n" +
      "Param is: %s\n" +
      "Message is: %s\n",
      e.status, err.type,
      err.code, err.param, err.message);
} catch (jp.webpay.webpay.errorresponse.InvalidRequestException e) {
  // リクエストで指定したパラメータが不正な場合
} catch (jp.webpay.webpay.errorresponse.AuthenticationException e) {
  // 認証に失敗した場合
} catch (jp.webpay.webpay.errorresponse.ApiException e) {
  // WebPayのサーバでエラーが起きた場合
} catch (jp.webpay.webpay.ApiConnectonException e) {
  // APIへの接続エラーが起きた場合
} catch (jp.webpay.webpay.InvalidRequestException e) {
  // リクエストで指定したパラメータが不正で、リクエストがおこなえなかった場合
} catch (Exception e) {
  // WebPayとは関係ない例外の場合
}

定期課金

今回のバージョンから定期課金の操作がサポートされています。

1
2
3
4
5
6
7
8
9
import jp.webpay.webpay.WebPay;
WebPay webpay = new WebPay("test_secret_eHn4TTgsGguBcW764a2KA8Yd");
webpay.recursion.createRequest()
  .amount(400)
  .currency("jpy")
  .customer("cus_45d3MV5phaXJ4uv")
  .period("month")
  .description("WebPayマガジン購読料")
  .execute();

定期課金に関する詳しい操作方法については、定期課金のドキュメントをご覧ください。

webpay-javaのリポジトリの更新を停止します

webpay-javaとしてソースコードを公開しながら開発を進めておりましたが、 今回のアップデートにより、当リポジトリの更新を停止します。

不具合のご報告等受け付ける場所等に関しては、今後準備をして参りますが 現在のところは用意がないため、お問い合わせ窓口よりお願い致します。