4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Square Checkout APIを使ってみる

Posted at

Square APIには、CheckoutAPIという注文決済用のAPIがあります。

このAPIは注文情報などを渡すと、Squareが用意してくれている決済画面(チェックアウト画面)のURLが生成されます。

生成されたURLを開くと、注文の確認とカード決済の画面が表示され、そこで必要な情報を入力して決済ができるという便利機能です。

API Explorerで動作確認

簡単にSquare APIの動作を確認するために、API ExplorerというWEBツールが用意されているので、使ってみます。

location IDを取得

Checkout APIを呼び出すのに、locationIDが必要になるので、Locations APIを使って取得します。

Locations API- Square API Reference

Checkout用URL取得

取得したlocationIDと、オーダー情報を入れてCheckoutAPIのCreate checkoutを呼び出すと、Checkout画面のURLを取得できます。

Checkout API- Square API Reference

curl https://connect.squareupsandbox.com/v2/locations/M513Y0SCF175A/checkouts \
  -X POST \
  -H 'Content-Type: application/json' \
  -H 'Square-Version: 2020-02-26' \
  -H 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXX' \
  -d '{
    "idempotency_key": "testid-XXXX-XXX2",
    "order": {
      "order": {
        "location_id": "M513Y0SCF175A",
        "line_items": [
          {
            "name": "アイテム名",
            "quantity": "1",
            "base_price_money": {
              "amount": 100,
              "currency": "JPY"
            }
          }
        ]
      }
    },
    "ask_for_shipping_address": true
  }'
  • idempotency_key : 注文用のユニークID
  • location_id : 事前に取得しておいたlocation ID
  • line_items : 注文アイテムの情報
    • name : アイテム名
    • quantity : 数量
    • base_price_money : 価格情報
      • amount : 金額
      • currency : 通貨
  • ask_for_shipping_address : trueだとチェックアウト画面で住所を入力できる

レスポンスは以下のような情報が返ってきます。

{
  "checkout": {
    "id": "CBASEKm_qJ3BeTG27SnbOzAkXBs",
    "checkout_page_url": "https://connect.squareupsandbox.com/v2/checkout?c=CBASEKm_qJ3BeTG27SnbOzAkXBs&l=M513Y0SCF175A",
    "ask_for_shipping_address": true,
    "order": {
      "id": "KMvhoORZBkKNnWP6szBtchATWe4F",
      "location_id": "M513Y0SCF175A",
      "source": {
        "name": "Sandbox for sq0idp-LUCLOPS6RjfQhSMSwHHPvw"
      },
      "line_items": [
        {
          "uid": "kj7Sl32wZYLyv34ppcka7B",
          "name": "アイテム名",
          "quantity": "1",
          "base_price_money": {
            "amount": 100,
            "currency": "JPY"
          },
          "variation_total_price_money": {
            "amount": 100,
            "currency": "JPY"
          },
          "gross_sales_money": {
            "amount": 100,
            "currency": "JPY"
          },
          "total_tax_money": {
            "amount": 0,
            "currency": "JPY"
          },
          "total_discount_money": {
            "amount": 0,
            "currency": "JPY"
          },
          "total_money": {
            "amount": 100,
            "currency": "JPY"
          }
        }
      ],
      "net_amounts": {
        "total_money": {
          "amount": 100,
          "currency": "JPY"
        },
        "tax_money": {
          "amount": 0,
          "currency": "JPY"
        },
        "discount_money": {
          "amount": 0,
          "currency": "JPY"
        },
        "tip_money": {
          "amount": 0,
          "currency": "JPY"
        },
        "service_charge_money": {
          "amount": 0,
          "currency": "JPY"
        }
      },
      "created_at": "2020-03-15T07:07:45.160Z",
      "updated_at": "2020-03-15T07:07:45.160Z",
      "state": "OPEN",
      "version": 1,
      "total_money": {
        "amount": 100,
        "currency": "JPY"
      },
      "total_tax_money": {
        "amount": 0,
        "currency": "JPY"
      },
      "total_discount_money": {
        "amount": 0,
        "currency": "JPY"
      },
      "total_tip_money": {
        "amount": 0,
        "currency": "JPY"
      },
      "total_service_charge_money": {
        "amount": 0,
        "currency": "JPY"
      }
    },
    "created_at": "2020-03-15T07:07:45Z"
  }
}

checkout_page_urlのURLを表示すると、以下のような画面が表示されました。

適当に発送先情報を入れ、SANDBOXテスト用カード番号を入力してオーダーしてみました。

管理画面で確認

ちゃんと取引記録が入りました。

まとめ

CheckoutAPIは、住所やカード番号などの情報の管理を全てSquareに任せられるので、個人情報の管理も気にしなくていいので安心。

しかし、英語のチェックアウトページしか用意されていないのが残念。

やっぱり、ちゃんとUI作ってPaymentsAPIを使うのが良さそうです。

参考

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?