sunabar -GMO あおぞらネット銀行 API 実験場で遊んでみた

童心にかえって、sunabarで遊んでみました。

# どんなもの

GMOあおぞらネット銀行のGUIとAPIの両方が簡単に試せる環境です。

> sunabar とは、仮想インターネットバンキングで、入出金や振込などを自由にお試しいただける「API 実験場」です。当社口座を保有しているお客さまは、審査なしでご利用が可能なため、個人のお客さま、法人のお客さまでも、当社の銀行 API の開発に取り組むことができます。




# 必要なもの

- GMOあおぞらネット銀行の口座（sunabarの利用に必要）
- 開発者ポータルへの登録 (API仕様の閲覧に必要）

口座開設が面倒という方は、開発者ポータルの登録だけでもAPI仕様が確認できるので**ご刮目**されるのも良いかなと思います。

# ざっくり全体像

- sunabarポータル
    - sunabarサービスサイトで利用するアカウントの作成・管理や仮想銀行口座に対する入出金
    - 初期は個人・法人の2アカウント（10アカウントまで）
- sunabarサービスサイト
    - sunabarポータルで管理しているアカウントで利用できるWEBサイトのテスト環境
- 開発者ポータル
    - https://api.gmo-aozora.com/ganb/developer/api-docs/
    - APIの仕様が確認できる

# 1. sunabarポータルで仮想銀行口座に入金

ポータルサイトのログイン画面

<img width="400" alt="1_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/4c071c90-8b7a-aede-570d-e798dab7c7c7.png">

ログイン後のメニュー画面

<img width="600" alt="1_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/66741814-c3ef-fb4b-73e9-7ba85b43a812.png">

ATM入金画面

<img width="600" alt="1_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/7fceda8b-b894-fe27-1516-436011265b99.png">


# 2. sunabarサービスサイトで個人の口座から法人の口座へ振込

入金が反映されたsunabarサービスサイトのTOPページ
一瞬お金持ちの気分になれるかも

<img width="800" alt="1_5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/443b9eaf-3351-e2ff-0eeb-84f4505a9f6c.png">

法人の口座へ振り込み

<img width="400" alt="2_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/274d1e41-ab88-36e7-95b4-d8ad16d4720e.png">

メール認証はsunabarポータルで取得できるトークンを入力

<img width="400" alt="2_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/838de30d-abe8-84b8-4a12-a6d2c9584ab7.png">

振込後のTOPページ


<img width="800" alt="2_5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192584/02eebbe4-a1a7-6d8f-4a52-74188845c7a0.png">


# 3. APIで口座を確認

アカウントIDを取得
(トークンはsunabarサービスサイトから取得)

```
$ TOKEN=*****
$ ACCOUNT_ID=`curl -X GET \
https://api.sunabar.gmo-aozora.com/personal/v1/accounts \
-H 'accept: application/json;charset=UTF-8' \
-H "x-access-token: ${TOKEN}" \
| jq -r '.accounts[] | select(.primaryAccountCode == "1") | .accountId'`
```

残高照会

```
$ curl -X GET \
> "https://api.sunabar.gmo-aozora.com/personal/v1/accounts/balances?accountId=${ACCOUNT_ID}" \
> -H 'accept: application/json;charset=UTF-8' \
> -H "x-access-token: ${TOKEN}" \
> | jq '.'
{
  "balances": [
    {
      "accountId": "************",
      "accountTypeCode": "01",
      "accountTypeName": "普通預金（有利息）",
      "balance": "800000",
      "baseDate": "2020-05-03",
      "baseTime": "18:21:22+09:00",
      "withdrawableAmount": "800000",
      "previousDayBalance": "0",
      "previousMonthBalance": "0",
      "currencyCode": "JPY",
      "currencyName": "日本円"
    }
  ],
  "spAccountBalances": []
}
```

入出金明細照会

```
$ curl -X GET \
> "https://api.sunabar.gmo-aozora.com/personal/v1/accounts/transactions?accountId=${ACCOUNT_ID}&dateFrom=2020-05-03&dateTo=2020-05-03" \
> -H 'accept: application/json;charset=UTF-8' \
> -H "x-access-token: ${TOKEN}" \
> | jq '.'
{
  "accountId": "************",
  "currencyCode": "JPY",
  "currencyName": "日本円",
  "dateFrom": "2020-05-03",
  "dateTo": "2020-05-03",
  "baseDate": "2020-05-03",
  "baseTime": "20:09:44+09:00",
  "hasNext": "false",
  "count": "2",
  "transactions": [
    {
      "transactionDate": "2020-05-03",
      "valueDate": "2020-05-03",
      "transactionType": "1",
      "amount": "1000000",
      "remarks": "ATM セブン",
      "balance": "1000000",
      "itemKey": "285"
    },
    {
      "transactionDate": "2020-05-03",
      "valueDate": "2020-05-03",
      "transactionType": "2",
      "amount": "200000",
      "remarks": "振込 ********（カ",
      "balance": "800000",
      "itemKey": "286"
    }
  ]
}
```

# 感想他
*sunabar はじめてガイドより*
> 現在世の中に存在するコミュニティは座学やセミナー形式のものが多く、実際に動かして確認できる開発環境は限定的です。No.1 テクノロジーバンクを目指す当社は、国内銀行初の試みとして、本格的な銀行 API 実験環境を「sunabar -GMO あおぞらネット銀行 API 実験場-」と名付け、個人・個人事業主・法人のお客さまに開放いたします。

- この考えには全く賛同です。こういった文化がどんどん広まっていくといいなーと思いました。
- APIはOpenID ConnectとOAuth2.0に対応していますが、sunabarではでaccess tokenを取得した状態からの利用となります。ちょっと試すにはこの方が便利かな。