SquareのHello world

# はじめに
クレジットカード決済の仕組みを調べることがあって、気になったのでAPIの操作について少し勉強したのでメモとして残します。
# 内容
Squareというクレジットカード決済の仕組みのAPIについて記載します。API ExplorerというツールからAPIを操作して、サンドボックス環境でクレジットカード決済の画面を作って試してみます。またダッシュボードから結果を確認することができます。

## Squareアカウントの作成とアプリケーションの作成
* [こちら](https://developer.squareup.com/apps)からSquareのアカウントを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/c7a42c1b-8bb0-a5dc-222b-a0fd7ef66c26.png)

* 必要事項を入力して続行ボタンを押します。実質的に登録に必要となったのはメールアドレスのみでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/70a86fd4-23e8-a216-3e2c-2bac61b070c5.png)

* [こちら](https://developer.squareup.com/apps)からログインして「Create your first application」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/933157f3-1283-fe0e-0705-187157accb50.png)

* Application Nameを入力してSaveボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/84f847bb-c876-253b-c68d-7dcdf0a33d52.png)

* できたアプリケーションをOpenします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/480925b3-6af6-5636-0e96-7195cbb00b8d.png)

* CredentialsのページにあるApplication IDとAccess Tokenを使ってAPIを動かします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/f0167d53-0ac7-9262-2cea-95a1f946a029.png)

##API ExplorerによるAPIの操作
* API Explorer(https://developer.squareup.com/explorer/square)を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/cbceb8ff-1a83-9aef-c406-7eeb763ce364.png)

* プルダウンからLocation→Create Locationを選び、上で作ったAcces Tokenを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/75b08ed6-24c2-cfd3-1756-1d41935d3676.png)

* 下記のような感じで入力してRun Requestボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/e364d4a1-883e-3638-880f-4d64c46569d3.png)

* 成功すると下記のようなjsonレスポンスが返ってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/429c73f1-e438-dcee-e36d-8b89afc39bc7.png)

* 今度はプルダウンからCheckoutを選んで取得したlocation_idを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/c89a369d-d19f-b137-27fe-7560df13faa8.png)

* Body部分でidempotency_keyをGenerateしたら、下記のような感じでorder情報を入力してRun Requestボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/d5722796-4d60-27b2-482d-b31da0274fc2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/338d0f87-7f5d-eaa7-7386-9e6c5ca0e600.png)

*  "checkout_page_url":"https://con***" というレスポンスが返ってくるので、そのURLを開くと、決済ページに行けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/bb11ba61-791d-20ab-ac6a-5a0528ae3234.png)

* [Sandbox Test Values](https://developer.squareup.com/docs/testing/test-values)にあるカード番号を入れてPlace Orderボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/2a183163-239d-cda8-a18f-e7086738d1bb.png)

* 決済が完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/c86c974e-561d-a33c-b96d-b90035533f9d.png)

##Terminalからの実行
* API ExplorerのcURLコマンドをCopyしてEC2のターミナルから実行してみると、下記のような結果が得られます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/30c17c1a-ed39-860b-2652-3c51b755c4e0.png)

##売り上げの管理
* [ダッシュボード](https://squareupsandbox.com/dashboard/)から先ほどの売り上げの情報をチェックすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940466/30e297aa-e8ec-b474-55d8-a04a634df191.png)

# おわりに
事業者がカード番号などの情報を持たずに決済ができる仕組みということがわかりました。ドキュメントがほとんど英語でとっつきにくいですが、サンドボックスやAPI Explorerなど試してみる環境は充実しているのではないかと思います。

# 参考文献

* [SquareでAPIを利用する](https://squareup.com/help/jp/ja/article/6042-jp-only-square-apis-getting-started)
* [Get Started with Square APIs, SDKs, and Plugins](https://developer.squareup.com/docs/get-started)
* [Sandbox Test Values](https://developer.squareup.com/docs/testing/test-values)