Node.js向けのライブラリを更新しました 1.0.2 -> 2.0.1

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

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

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

  • 認証情報を設定する方法
  • 各クラスを呼ぶ前のclientという記述の削除
  • Exceptionの取扱い方法

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

認証情報を設定する方法

従来、ライブラリのオブジェクトのapiKeyプロパティへAPIキーを渡していましたが、 webpay.WebPayクラスのインスタンスを作成する場合には文字列でAPIキーを与える形へ変更されました。

従来

1
2
var webpay = require('webpay');
webpay.apiKey = 'test_secret_eHn4TTgsGguBcW764a2KA8Yd';

バージョン2.0.0以降

1
2
var WebPay = require('webpay');
webpay = new WebPay('test_secret_eHn4TTgsGguBcW764a2KA8Yd');

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

各オブジェクトを操作する際に、記述していた.clientが必要無くなりました。

従来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var webpay = require('webpay');
webpay.apiKey = 'test_secret_eHn4TTgsGguBcW764a2KA8Yd';

webpay.client.charge.create({
  amount: 400,
  currency: "jpy",
  card: {
    number: "4242-4242-4242-4242",
    exp_month: "11",
    exp_year: "2014",
    cvc: "123",
    name: "KEI KUBO"
  },
  description: null
}, function(err, res) { ... });

バージョン2.0.0以降

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var WebPay = require('webpay');
webpay = new WebPay('test_secret_eHn4TTgsGguBcW764a2KA8Yd');

webpay.charge.create({
  amount: 400,
  currency: "jpy",
  card: {
    number: "4242-4242-4242-4242",
    exp_month: 11,
    exp_year: 2014,
    cvc: 123,
    name: "KEI KUBO"
  },
  description: null
}, function(err, res) { ... });

各オブジェクトに対する新たな操作方法についての詳しくは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
23
24
25
26
27
28
29
30
31
webpay.client.account.retrieve(function(err, res) {
    if (err) {
      switch (err.name) {
        case 'CardError':
          // カードが拒否された場合
          console.log("Status is: " + err.status + "\n" +
            "Type is: " + err.type + "\n" +
            "Code is: " + err.code + "\n" +
            "Param is: " + err.param + "\n" +
            "Message is: " + err.message);
          break;
        case 'InvalidRequestError':
          // リクエストで指定したパラメータが不正な場合
          break;
        case 'AuthenticationError':
          // 認証に失敗した場合
          break;
        case 'ApiConnectionError':
          // APIへの接続エラーが起きた場合
          break;
        case 'ApiError':
          // WebPayのサーバでエラーが起きた場合
          break;
        case 'WebPayError':
          // その他のWebPay起因のエラー
          break;
      }
      return;
    }
    // 正常時の処理
});

バージョン2.0.0以降

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
26
27
webpay.account.retrieve(function(err, res) {
    if (err) {
      if (err instanceof WebPay.errorResponse.CardError) {
        data = err.data.error;
        // カードが拒否された場合
        console.log("Status is: " + err.status + "\n" +
          "Type is: " + data.type + "\n" +
          "Code is: " + data.code + "\n" +
          "Param is: " + data.param + "\n" +
          "Message is: " + data.message);
      } else if (err instanceof WebPay.errorResponse.InvalidRequestError) {
        // リクエストで指定したパラメータが不正な場合
      } else if (err instanceof WebPay.errorResponse.AuthenticationError) {
        // リクエストで指定したパラメータが不正な場合
      } else if (err instanceof WebPay.errorResponse.ApiError) {
        // WebPayのサーバでエラーが起きた場合
      } else if (err instanceof WebPay.ApiConnectionError) {
        // APIへの接続エラーが起きた場合
      } else if (err instanceof WebPay.InvalidRequestError) {
        // リクエストで指定したパラメータが不正で、リクエストがおこなえなかった場合
      } else {
        // WebPayとは関係ない例外の場合
      }
      return;
    }
    // 正常時の処理
});

定期課金

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

1
2
3
4
5
6
7
8
9
10
var WebPay = require('webpay');
webpay = new WebPay('test_secret_eHn4TTgsGguBcW764a2KA8Yd');

webpay.recursion.create({
  amount: 400,
  currency: "jpy",
  customer: "cus_45d3MV5phaXJ4uv",
  period: "month",
  description: "WebPayマガジン購読料"
}, function(err, res) { ... });

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

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

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

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