TEXTBOOK SECTION / AI LEARNING

認証・環境設定に関する用語

Square API × Next.js 実践EC開発|自社ECを低コストで作る、決済・在庫・注文管理の設計と実装の「付録A Square API用語集」より、認証・環境設定に関する用語を解説。生成AI、AI活用、DX、業務改善を実践しながら学べるオンライン教材です。

2付録A Square API用語集EC

OVERVIEW

この節で学べること

概要を表示する
項目内容
教材名Square API × Next.js 実践EC開発|自社ECを低コストで作る、決済・在庫・注文管理の設計と実装
付録A Square API用語集
認証・環境設定に関する用語
カテゴリEC
学習内容生成AI、AI活用、DX、業務改善を実践しながら理解するための教材です。

TABLE OF CONTENTS

目次

CONTENT

ここから

A.2 認証・環境設定に関する用語

Square APIを使ってECサイトを作るとき、最初に立ちはだかるのが「認証」と「環境設定」です。

決済リンクを作成する前に、Squareへ次のことを伝えなければなりません。

誰が作ったアプリなのか
どのSquareアカウントを操作するのか
どの店舗の売上として扱うのか
テストなのか、本番なのか
どのAPI仕様を使うのか

ここでは、小さな食品店が新しいオンラインショップを開く場面を想像してみましょう。

店舗はNext.jsで商品ページを作りました。

商品写真も価格もカートも完成しています。

しかし、購入ボタンを押しても、まだSquareへ決済を依頼することはできません。

Squareから見ると、そのECサイトが誰なのか分からないからです。

Next.js:
10,000円の決済を作ってください

Square:
あなたは誰ですか?
どの店舗の決済ですか?
テストですか、本番ですか?

そこで必要になるのが、次の認証情報です。

Application ID
Access Token
Location ID
Environment
API Version

攻略本風に言えば、A.2は**「Squareの城へ入るための身分証・鍵・行き先を準備するステージ」**です。


A.2.1 Access Token

Access Tokenとは

Access Tokenは、アプリケーションがSquare APIへ安全にアクセスするための認証情報です。

Square APIを呼び出すとき、アプリケーションはAccess Tokenを使って、次の2点を証明します。

このリクエストは認証されたアプリから送られている

このSquareアカウントの情報へアクセスする権限がある

Square公式では、Access Tokenを、Squareアカウント内の顧客、注文、決済などのリソースへ安全にアクセスするための認証情報として説明しています。

現実の店舗に例えると、Access Tokenは管理室へ入るための鍵です。

Application ID:
店舗やアプリの名前札

Access Token:
管理室へ入る鍵

名前札だけを持っていても、管理室には入れません。

Square APIでも、Application IDを知らせるだけでは、注文や決済情報を操作できません。

Access Tokenが必要です。

Access Tokenを使う流れ

Next.jsからSquare APIへリクエストを送るときは、HTTPのAuthorizationヘッダーにAccess Tokenを含めます。

Authorization: Bearer {ACCESS_TOKEN}

Squareは、このTokenを確認してAPI処理を許可します。

Next.js
  ↓
Access Token付きでAPIを呼び出す
  ↓
SquareがTokenを確認
  ↓
認証成功
  ↓
注文・決済処理を実行

Access Tokenがない場合や、無効なTokenを使った場合は、認証エラーになります。

Access Tokenは公開しない

Access Tokenは秘密情報です。

第三者に知られると、そのTokenが持つ権限の範囲で、Squareアカウントの注文、顧客、決済などへアクセスされる危険があります。

そのため、次の場所には絶対に書きません。

・GitHubへ公開するコード
・ブラウザで動くJavaScript
・HTML
・画面に表示するエラー
・開発ログ
・チャットやメール

次のようなコードは危険です。

// 悪い例:コード内にTokenを直接書いている
const accessToken = 'EAAAxxxxxxxxxxxxxxxx';

さらに、Client ComponentでAccess Tokenを使うのも危険です。

'use client';

// 危険:ブラウザへ秘密情報が渡る可能性がある
const accessToken = process.env.NEXT_PUBLIC_SQUARE_ACCESS_TOKEN;

NEXT_PUBLIC_が付いた環境変数は、Next.jsのビルド時にブラウザ向けJavaScriptへ含まれるため、Access Tokenには使用できません。Next.jsでは、NEXT_PUBLIC_を付けていない環境変数は、基本的にサーバー側でのみ利用できます。

Next.jsでの管理方法

Access Tokenは、.env.localやVercelのEnvironment Variablesに保存します。

SQUARE_ACCESS_TOKEN=xxxxxxxxxxxxxxxx

サーバー側では、次のように取得します。

/**
 * 役割: Square Access Tokenを環境変数から取得する
 * 入力: なし
 * 出力: Access Token
 */
export function getSquareAccessToken(): string {
  const accessToken = process.env.SQUARE_ACCESS_TOKEN;

  if (!accessToken) {
    throw new Error('SQUARE_ACCESS_TOKEN is not configured.');
  }

  return accessToken;
}

この関数は、Route Handler、Server Action、Server Componentなど、サーバー側だけで使用します。

購入者のブラウザ
  ↓
Next.jsのサーバー
  ↓
Access Tokenを読み込む
  ↓
Square API

Access Tokenには種類がある

SquareのAccess Tokenには、大きく次の2種類があります。

Personal Access Token:
自分のSquareアカウントへ接続する

OAuth Access Token:
他のSquare事業者から許可を受けて接続する

Square公式では、自分のSquareアカウントだけを利用する専用システムにはPersonal Access Token、複数のSquare事業者へサービスを提供するアプリにはOAuth Access Tokenを使う方針が示されています。

本書で作る1店舗専用のECサイトでは、基本的にPersonal Access Tokenを使います。


A.2.2 Application ID

Application IDとは

Application IDは、Squareに登録されたアプリケーションを識別するためのIDです。

Application ID
=
どのアプリケーションなのかを表す名前札

たとえば、Square Developer Consoleに次のアプリを登録したとします。

アプリ名:
金七商店オンラインストア

Application ID:
sq0idp-xxxxxxxxxxxxxxxx

SquareはApplication IDを使って、どのアプリケーションに関する処理なのかを識別します。

Access Tokenとの違い

Application IDとAccess Tokenは似ていますが、役割が異なります。

項目役割公開可否
Application IDアプリケーションを識別する利用場面によっては公開可能
Access TokenSquare APIへのアクセスを認証・許可する公開不可
Application SecretOAuthなどでアプリの正当性を証明する公開不可

Application IDは、OAuthではclient_idとして使われる公開情報です。一方、Application Secretはパスワードに相当する秘密情報であり、公開してはいけません。

イメージすると、次のようになります。

Application ID:
会社名が書かれた社員証

Access Token:
入室権限を持つカードキー

Application Secret:
会社だけが知っている暗証情報

Application IDを使う場面

Application IDは、主に次のような場面で使われます。

・OAuth認証
・Web Payments SDK
・アプリケーションの識別
・SandboxとProductionの切り替え

ただし、SquareのREST APIをサーバーから呼び出す通常の処理では、Access Tokenを使って認証するため、すべてのAPIリクエストにApplication IDを入れるわけではありません。

SandboxとProductionで異なる

Application IDも、SandboxとProductionで異なる場合があります。

Sandbox Application ID
Production Application ID

OAuthやSDKを設定するときは、使用する環境とApplication IDを一致させます。

Sandbox URL
  +
Sandbox Application ID

Production URL
  +
Production Application ID

環境が混ざると、認証エラーの原因になります。


A.2.3 Location ID

Location IDとは

Location IDは、Square上の店舗や販売拠点を識別するIDです。

Squareでは、1つの事業者アカウント内に複数のLocationを持つことができます。

本店
名古屋店
東京店
ECサイト
催事用店舗

それぞれに異なるLocation IDが割り当てられます。

Squareでは、新しく作成されたLocationごとに固有のLocation IDが発行されます。また、決済、返金、在庫管理など、一部のAPI処理は特定のLocationに関連付けられます。

なぜLocation IDが必要なのか

ECサイトから決済を作るとき、Squareは次のことを知る必要があります。

この売上は、どの店舗の売上なのか

たとえば、同じ会社が次の売り場を運営しているとします。

本店
ECサイト
百貨店催事

Locationを分けることで、売上、在庫、レポートなどを販売拠点ごとに整理できます。

本店の売上
ECの売上
催事の売上

Square公式でも、複数のLocationを使うことで、売上活動、在庫、レシート、レポート、取扱商品などを拠点ごとに分けられると説明されています。

1店舗だけの場合

1店舗だけで運用する場合は、Squareアカウント作成時に用意されたメインLocationを利用できます。

SQUARE_LOCATION_ID=XXXXXXXXXXXX

本書のような小規模ECでは、まず既存のメインLocationを使い、実店舗とECの売上を分けたくなった段階で、EC専用Locationを検討しても構いません。

EC専用Locationを作る場合

実店舗とECを明確に分けたい場合は、次のような構成を考えられます。

Location A:
実店舗

Location B:
オンラインストア

これにより、Square側でもEC売上を区別しやすくなります。

ただし、Locationを増やすと、商品、在庫、レポート、運用ルールも増えます。

小規模ECでは、必要になるまでは1つのLocationで始める方が簡単です。

SandboxのLocationは本番と別

Sandboxには、テスト専用のLocationが用意されます。

このLocationはProductionの店舗とは関係ありません。Sandbox Location IDは、Developer ConsoleのSandbox環境にあるLocations画面、またはSandbox Access Tokenを使ったLocations APIから確認できます。

Sandbox Location ID
  ≠
Production Location ID

次の組み合わせは使えません。

Sandbox Access Token
  +
Production Location ID

必ず同じ環境の認証情報を組み合わせます。


A.2.4 Environment(Sandbox / Production)

Environmentとは

Environmentは、Square APIをどの世界で実行するかを表します。

Squareには、次の2つの環境があります。

Sandbox:
練習用の世界

Production:
実際に販売する世界

Sandbox環境

Sandboxは、実際の購入者や本番データへ影響を与えずにSquare APIをテストするための独立した環境です。

Sandboxでできること

・APIリクエストのテスト
・注文作成
・テスト決済
・顧客登録
・在庫更新
・Webhook確認
・OAuth確認

Sandboxではテスト用のカード情報や決済値を使い、実際のお金を動かさずに決済フローを確認できます。

SandboxのAPI URLは次の通りです。

https://connect.squareupsandbox.com/v2

Production環境

Productionは、実際の購入者、注文、商品、決済を扱う本番環境です。

Productionで決済
  ↓
実際のカード処理
  ↓
Square上に売上記録
  ↓
実際の店舗運用へ

ProductionのAPI URLは次の通りです。

https://connect.squareup.com/v2

SquareのREST APIでは、SandboxとProductionでベースURLが異なり、URLに対応したAccess Tokenを使用する必要があります。

SandboxとProductionは別世界

Sandboxで作成したデータは、Productionには移動しません。

Sandboxで作成した商品
Sandboxで作成した顧客
Sandboxで作成した注文

これらはProductionには存在しない

同様に、認証情報も別です。

Sandbox Access Token
Production Access Token

Sandbox Location ID
Production Location ID

Sandbox Application ID
Production Application ID

Square公式でも、SandboxはProductionから分離されたテスト環境であり、Sandbox用のAccess Tokenを使う必要があると説明されています。

Next.jsでの環境設定

ローカル開発では、Sandbox情報を設定します。

SQUARE_ENVIRONMENT=sandbox
SQUARE_ACCESS_TOKEN=Sandbox用Access Token
SQUARE_LOCATION_ID=Sandbox用Location ID

本番環境では、Production情報を設定します。

SQUARE_ENVIRONMENT=production
SQUARE_ACCESS_TOKEN=Production用Access Token
SQUARE_LOCATION_ID=Production用Location ID

環境に応じてSquare Clientを切り替えます。

type SquareEnvironment = 'sandbox' | 'production';

/**
 * 役割: Square APIの接続先を環境に応じて返す
 * 入力: Square環境
 * 出力: Square APIのベースURL
 */
export function getSquareBaseUrl(
  environment: SquareEnvironment
): string {
  if (environment === 'production') {
    return 'https://connect.squareup.com/v2';
  }

  return 'https://connect.squareupsandbox.com/v2';
}

本番切り替えで変更する項目

SandboxからProductionへ移行するときは、次をまとめて確認します。

□ SQUARE_ENVIRONMENT
□ Access Token
□ Application ID
□ Location ID
□ APIのベースURL
□ Webhook URL
□ Webhook Signature Key
□ OAuth Redirect URL

1つだけProductionに変え、残りがSandboxのままだと正常に動きません。


A.2.5 OAuth

OAuthとは

OAuthは、別のSquare事業者から許可を受け、その事業者のSquareアカウントへアクセスする仕組みです。

たとえば、自分の会社が複数の店舗へECシステムを提供するとします。

店舗AのSquare
店舗BのSquare
店舗CのSquare

自社システムが各店舗のAccess Tokenを直接受け取って管理するのは危険です。

そこで、各店舗にSquareの認可画面を開いてもらい、必要な権限だけを許可してもらいます。

店舗が連携ボタンを押す
  ↓
Squareの認可画面
  ↓
店舗が権限を確認
  ↓
連携を許可
  ↓
自社サービスがOAuth Access Tokenを取得

Square OAuth APIは、Square事業者から特定の権限を受け取り、その事業者に代わってSquare APIを呼び出すための仕組みです。

OAuthで取得するもの

OAuthのCode Flowでは、主に次の情報を扱います。

Authorization Code:
許可後に一度だけ使う交換用コード

Access Token:
Square APIを呼ぶためのToken

Refresh Token:
新しいAccess Tokenを取得するためのToken

SquareのOAuth Access Tokenは有効期限があり、Code FlowではRefresh Tokenを使って更新します。

自社専用ECでは必要か

自社のSquareアカウントだけへ接続するECなら、通常はOAuthを使わず、Personal Access Tokenを使う方がシンプルです。

自社のSquare
  +
自社のECだけ

→ Personal Access Token

複数のSquare事業者へサービスを提供する場合は、OAuthを使います。

複数店舗が登録するECサービス
予約管理SaaS
POS連携サービス
Square向け外部アプリ

→ OAuth Access Token

Square公式でも、複数の事業者へ提供するマルチテナント型アプリでは、OAuth Access Tokenの使用が案内されています。

権限は必要最小限にする

OAuthでは、アプリが必要とする権限をscopeとして指定します。

ORDERS_READ
ORDERS_WRITE
CUSTOMERS_READ
PAYMENTS_READ

使わない権限まで要求しないことが基本です。

Square公式でも、アプリに必要な権限だけを要求する最小権限の考え方が推奨されています。


A.2.6 Personal Access Token

Personal Access Tokenとは

Personal Access Tokenは、自分が所有するSquareアカウントのリソースへアクセスするためのTokenです。

自分のSquareアカウント
  ↓
自分で作ったNext.js EC

このような専用システムに向いています。

Square公式では、自分のSquareアカウントだけへアクセスするカスタム連携に、Personal Access Tokenを使用できると説明されています。

OAuth Access Tokenとの違い

項目Personal Access TokenOAuth Access Token
主な用途自社専用システム複数事業者向けサービス
対象自分のSquareアカウント許可したSquare事業者
権限自分のアカウントへ広くアクセス許可されたスコープ
取得方法Developer ConsoleOAuth認可フロー
実装難易度比較的低い高い

本書で作る小規模ECでは、基本的に次の構成です。

Next.js
  ↓
Personal Access Token
  ↓
自社のSquareアカウント

管理上の注意

Personal Access Tokenも、通常のパスワード以上に重要な秘密情報です。

□ コードへ直接書かない
□ GitHubへ登録しない
□ NEXT_PUBLIC_を付けない
□ ログへ出力しない
□ 必要な担当者以外へ共有しない
□ 漏洩の疑いがあれば再発行する

Sandbox用とProduction用は別々に管理します。

# ローカル開発
SQUARE_ACCESS_TOKEN=Sandbox用Token
Vercel Production:
Production用Token

A.2.7 Bearer Token

Bearer Tokenとは

Bearer Tokenは、Access Tokenそのものの種類ではなく、HTTP通信でTokenを送る認証方式です。

Square APIでは、Access TokenをAuthorizationヘッダーに次の形式で入れます。

Authorization: Bearer {ACCESS_TOKEN}

Square公式のREST API仕様でも、SquareのAccess TokenはBearer TokenとしてAuthorizationヘッダーへ設定すると説明されています。

Bearerは、簡単に言えば次の意味です。

このTokenを持っている人を、
認証済みの利用者として扱う

そのため、Tokenを持っている人が誰かよりも、「有効なTokenを持っているか」が重要です。

APIリクエストの例

curl https://connect.squareupsandbox.com/v2/locations \
  -H "Authorization: Bearer ${SQUARE_ACCESS_TOKEN}" \
  -H "Content-Type: application/json"

このリクエストでは、次の情報を送っています。

接続先:
Square Sandbox

認証方式:
Bearer

認証情報:
Access Token

データ形式:
JSON

HTTPSが必要な理由

Bearer Tokenは、盗まれると第三者に利用される可能性があります。

そのため、通信を暗号化するHTTPSが必要です。

HTTP:
通信内容を安全に保護できない

HTTPS:
Tokenを含む通信を暗号化する

SquareのProduction API URLはHTTPSです。

Next.js側の本番URLやOAuth Redirect URL、Webhook URLなども、原則としてHTTPSで運用します。OAuthのProduction Redirect URLにはHTTPSが必要です。

Bearer Tokenをログに出さない

次のようなログは避けます。

// 悪い例
console.log({
  accessToken: process.env.SQUARE_ACCESS_TOKEN,
});

エラー調査では、Tokenそのものではなく、次の情報を残します。

・API名
・HTTPステータス
・Squareのエラーコード
・自社注文ID
・処理日時
・使用環境

A.2.8 API Version

API Versionとは

API Versionは、Square APIのどの時点の仕様を使うかを指定するものです。

Square APIは、機能追加や改善によって更新されます。

そのため、同じエンドポイントでも、API Versionによって入力項目や返されるデータが異なる可能性があります。

Square APIのバージョン名は、リリース日を表すYYYY-MM-DD形式です。Squareでは通常、APIとSDKのリリースが定期的に行われます。

例です。

2025-01-23
2025-04-16
2026-02-19

なぜVersionを固定するのか

ECサイトを作った日に正常に動いていたとしても、Square APIの仕様が変わる可能性があります。

そこで、使用するAPI Versionを固定します。

このECは、
この時点のSquare API仕様で動かす

Versionを固定すると、Square側に新しいAPI Versionが登場しても、自動的に破壊的変更の影響を受けにくくなります。

Developer ConsoleのデフォルトVersion

Square Developer Consoleでは、アプリケーションごとにデフォルトのAPI Versionを設定できます。

リクエストにSquare-Versionヘッダーを付けなかった場合は、そのデフォルトVersionが使われます。

Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json

明示的にVersionを指定する場合は、次のようにします。

Square-Version: YYYY-MM-DD
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json

Square公式では、リクエストのSquare-Versionヘッダーによって、アプリケーションのデフォルトVersionを上書きできます。

SDK Versionとの違い

Square API Versionと、Node.js SDKのバージョンは別物です。

Square API Version:
SquareのAPI仕様

Square Node.js SDK Version:
使用しているnpmパッケージのバージョン

Node.js SDKは、一般的なSemantic Versioningに従う形式です。

MAJOR.MINOR.PATCH

新しいAPI機能を使うために、Square SDKの更新が必要になる場合があります。Square公式でも、SDKごとに対応するSquare API Versionがあり、新機能を利用するときにはSDK更新が必要になることがあると説明されています。

本番運用での更新方法

API VersionやSDKは、理由なく頻繁に更新しません。

次の順番で進めます。

1. Squareのリリースノートを確認
2. 変更点を確認
3. Sandboxで動作確認
4. 決済・注文・Webhookをテスト
5. 問題がなければ本番更新

特に確認する項目です。

□ 決済リンクを作成できる
□ Paymentを取得できる
□ Orderを取得できる
□ Webhookを処理できる
□ エラー形式が変わっていない
□ SDKの型エラーがない

A.2のストーリーまとめ

ここまでの内容を、ECサイトがSquareへ接続する物語として整理します。

1. Square Developer Consoleでアプリを作る
        ↓
2. Application IDが発行される
        ↓
3. Personal Access Tokenを取得する
        ↓
4. 利用する店舗のLocation IDを確認する
        ↓
5. Sandbox環境へ接続する
        ↓
6. Bearer Token方式でAPIを呼び出す
        ↓
7. API Versionを固定して動作を安定させる
        ↓
8. テスト完了後、Productionへ切り替える

自社専用ECの基本構成です。

購入者
  ↓
Next.js
  ↓
サーバー側でAccess Tokenを取得
  ↓
Square API
  ↓
指定したLocationで決済・注文処理

複数のSquare事業者へサービスを提供する場合は、途中にOAuthが入ります。

Square事業者
  ↓
OAuthで連携を許可
  ↓
OAuth Access Tokenを取得
  ↓
事業者に代わってAPIを呼び出す

最後に覚えておきたいポイントです。

Application ID:
どのアプリなのかを識別する

Access Token:
Square APIへアクセスするための鍵

Location ID:
どの店舗・販売拠点の処理かを指定する

Sandbox:
お金を動かさずに試す環境

Production:
実際の販売を行う環境

OAuth:
他のSquare事業者からアクセス許可を得る仕組み

Personal Access Token:
自社Square専用システムで使うToken

Bearer Token:
Access TokenをHTTPで送る認証方式

API Version:
使用するSquare APIの仕様を固定する設定

Square APIの認証・環境設定は、次の一言にまとめられます。

正しい鍵を使い、正しい店舗を指定し、正しい環境へ接続する。

参照元

FAQ

よくある質問

認証・環境設定に関する用語は医療関係者向けだけの内容ですか。
医療分野の例が含まれる場合もありますが、医療関係者だけに限定した内容ではありません。生成AI、AI活用、DX、業務改善、プロトタイプ開発など、一般的なAI学習の事例として読める内容です。
AI初心者でも読めますか。
はい。AIをこれから学ぶ方、数学が苦手な方、仕事でAIを使いたい方にも読み進めやすいように、教材の章と節の流れに沿って整理しています。
サムネイル画像は必ず表示されますか。
はい。教材にcoverUrlが設定されている場合はその画像を表示し、未設定の場合は代替サムネイル画像を表示します。
Square API × Next.js 実践EC開発|自社ECを低コストで作る、決済・在庫・注文管理の設計と実装のほかの章も読めますか。
はい。教材トップから章立てを確認でき、前後の節へもページ下部のナビゲーションから移動できます。