xyk blog

最近は iOS 開発の記事が多めです。

IIJmio のクーポンスイッチAPIを試す

公式ドキュメントはこちら

IIJmioクーポンスイッチAPI仕様
https://www.iijmio.jp/guide/outline/hdd/mioponapi.jsp

今回はとりあえず自分のデータをAPIで取得するまでの手順を書いた。

1. デベロッパIDの取得

まずはデベロッパIDを発行してもらう必要がある。
デベロッパコンソール画面からmioIDとmioパスワードでログインする。
https://api.iijmio.jp/

f:id:xyk:20140108195901p:plain f:id:xyk:20140108195859p:plain

ログインすると

の許可を求められるので「許可する」をクリックする。

f:id:xyk:20140108195858p:plain

これで自分のデベロッパIDが発行された。
また、この画面でアプリ名とコールバック先のリダイレクトURIを入力し「適用」をクリックして登録しておく。

f:id:xyk:20140115144249p:plain

ちなみにヘルプ画面から「デベロッパIDの再発行」ができる。

f:id:xyk:20140108195854p:plain

ここまでが OAuth2.0 認証を行うための事前作業になる。

2. アクセストークンの取得

続いてAPIを使用するために必要なアクセストークンを取得するまでの手順。
認可エンドポイントURLにアクセスする。

URL
https://api.iijmio.jp/mobile/d/v1/authorization/

必須のクエリパラメータ

  • response_type
    プロトコルフローはインプリシットグラントなのでtokenを指定。

  • client_id
    上記で取得したデベロッパIDを指定。

  • redirect_uri
    デベロッパコンソールで設定したリダイレクトURIを指定。

  • state
    CSRF対策用の任意の文字列を指定。

サンプル

https://api.iijmio.jp/mobile/d/v1/authorization/?response_type=token&client_id=xxxxxx&state=ABC123456&redirect_uri=http%3A%2F%2Fmy-site-domain.com

認可エンドポイントURLに上記パラメータを付与してアクセスするとログイン画面が表示されるので、 自分のmioIDとmioパスワードを入力してログインする。

f:id:xyk:20140115150334p:plain

ログインするとAPIで取得する

  • クーポン残量の取得
  • クーポンのON/OFF状態の取得
  • クーポンのON/OFFの切り替え
  • データ利用量の取得

の許可を求められるので「許可する」をクリックする。

f:id:xyk:20140115150331p:plain

すると認証サーバで認可処理が行われ、設定したリダイレクトURIにリダイレクトされる。
リダイレクト後のブラウザのURLを見るとハッシュフラグメントにアクセストークンなどのパラメータが付与されていることが確認できる。

サンプル

http://my-site-domain.com/#access_token=xxxxxx&state=ABC123456&token_type=Bearer&expiresIn=7776000

これでアクセストークンが取得できたので各種APIにアクセスできるようになった。
ちなみに expiresIn が7776000秒となっているのでこのアクセストークンの有効期間は90日間。

3. APIの実行

いよいよIIJmioクーポンスイッチAPIを実行する。
curlコマンドを使って試す。HTTPヘッダにデベロッパIDとアクセストークンを設定する。

クーポン残量照会・クーポンのON/OFF状態照会
curl -X GET https://api.iijmio.jp/mobile/d/v1/coupon/ \
 -H 'X-IIJmio-Developer: xxxxxx' \
 -H 'X-IIJmio-Authorization: xxxxxx'

レスポンス

{
   "returnCode":"OK",
   "couponInfo":[
      {
         "hddServiceCode":"hddxxxxxxxx",
         "coupon":[
            {
               "volume":10,
               "expire":"201401",
               "type":"bundle"
            },
            {
               "volume":500,
               "expire":"201402",
               "type":"bundle"
            },
            {
               "volume":0,
               "expire":"201401",
               "type":"topup"
            },
            {
               "volume":0,
               "expire":"201402",
               "type":"topup"
            },
            {
               "volume":0,
               "expire":"201403",
               "type":"topup"
            },
            {
               "volume":0,
               "expire":"201404",
               "type":"topup"
            }
         ],
         "hdoInfo":[
            {
               "couponUse":false,
               "coupon":[
                  {
                     "volume":null,
                     "expire":null,
                     "type":"sim"
                  }
               ],
               "hdoServiceCode":"hdoxxxxxxxx",
               "sms":false,
               "number":"08012345678",
               "regulation":false,
               "iccid":"xxxxxxxxxxxxxxx"
            }
         ]
      }
   ]
}

SIM内クーポンの返却機能は現在開発中です。開発完了までの期間は、volume が null として返ります。とのこと。

クーポンのON/OFF

クーポンのON/OFFを切り替える。

  • ON -> OFF
curl -X PUT https://api.iijmio.jp/mobile/d/v1/coupon/ \
 -H 'X-IIJmio-Developer: xxxxxx' \
 -H 'X-IIJmio-Authorization: xxxxxx' \
 -H 'Content-Type: application/json' \
 -d '{"couponInfo":[{"hdoInfo":[{"hdoServiceCode":"hdoxxxxxxxx","couponUse":true}]}]}'

レスポンス

{"returnCode": "OK"}
  • OFF -> ON
curl -X PUT https://api.iijmio.jp/mobile/d/v1/coupon/ \
 -H 'X-IIJmio-Developer: xxxxxx' \
 -H 'X-IIJmio-Authorization: xxxxxx' \
 -H 'Content-Type: application/json' \
 -d '{"couponInfo":[{"hdoInfo":[{"hdoServiceCode":"hdoxxxxxxxx","couponUse":false}]}]}'

レスポンス

{"returnCode": "OK"}
データ利用量照会

過去30日分と当日のデータ利用量(MB単位)を日付順に返す。

curl -X GET https://api.iijmio.jp/mobile/d/v1/log/packet/ \
 -H 'X-IIJmio-Developer: xxxxxx' \
 -H 'X-IIJmio-Authorization: xxxxxx'

レスポンス

{
   "packetLogInfo":[
      {
         "hddServiceCode":"hddxxxxxxxx",
         "hdoInfo":[
            {
               "hdoServiceCode":"hdoxxxxxxxx",
               "packetLog":[
                  {
                     "date":"20140101",
                     "withCoupon":0,
                     "withoutCoupon":12
                  },
                  {
                     "date":"20140102",
                     "withCoupon":30,
                     "withoutCoupon":1
                  },
                  {
                     "date":"20140103",
                     "withCoupon":2,
                     "withoutCoupon":21
                  },
                  ...省略...
               ]
            }
         ]
      }
   ],
   "returnCode":"OK"
}

ちなみにレスポンスヘッダは以下のようになっていた。

curl -I https://api.iijmio.jp/mobile/d/v1/coupon/ \
 -H 'X-IIJmio-Developer: xxxxxx' \
 -H 'X-IIJmio-Authorization: xxxxxx'

HTTP/1.1 200 OK
Date: Wed, 15 Jan 2014 02:37:57 GMT
Server: Apache
Content-Length: 641
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-IIJmio-Developer,X-IIJmio-Authorization,X-IIJmio-Application,Content-Type
Access-Control-Allow-Methods: GET,PUT
Vary: Accept-Encoding
Connection: close
Content-Type: application/json