Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

カラーミーショップAPIのはじめ方(ローカルのPHPでテスト)

More than 3 years have passed since last update.

カラーミーショップAPI

概要についての説明は公式ページ をご確認ください。
今回は公式ページ から下記の手順をやってみます。

  • カラーミーデベロッパーアカウント登録
  • アプリケーション登録登録
  • ローカルでのテスト(PHP)
    (利用手順の中から「6. その他のAPIの呼び出し」の[アプリケーションのWebサーバのサンプル]部分について)

使い方

カラーミーデベロッパーアカウント登録

下記から登録します。
https://api.shop-pro.jp/developers/sign_up

1.png

アプリケーション登録

下記から登録します。
https://api.shop-pro.jp/oauth/applications/new

アプリケーション名とリダイレクトURLを入力してください。

2.png

リダイレクトURL、クライアントID、クライアントシークレット は後ほど使用するので控えておいてください。

3.png

ローカルでテスト

サンプルコードを設置

PHPが実行できる場所に下記ファイルを設置します。
(curlではなく file_get_contents()なのでphp.iniの設定など不要)

get_access_token.php

アクセストークン取得時に使用する。

<?php
define("OAUTH2_SITE", 'https://api.shop-pro.jp');
define("OAUTH2_CLIENT_ID",'クライアントID');
define("OAUTH2_CLIENT_SECRET", 'クライアントシークレット');
define("OAUTH2_REDIRECT_URI", 'http://localhost:8000/get_access_token.php');

$code = $_GET['code'];
// 認可ページへリダイレクトする
if (empty($code)) {
    $params = [
        'client_id'     => OAUTH2_CLIENT_ID,
        'redirect_uri'  => OAUTH2_REDIRECT_URI,
        'response_type' => 'code',
        'scope'         => 'read_products write_products read_sales write_sales',
    ];
    $auth_url = OAUTH2_SITE . '/oauth/authorize?' . http_build_query($params);
    header('Location: ' . $auth_url);
    exit;
}

// 認可後
$params = [
    'client_id'     => OAUTH2_CLIENT_ID,
    'client_secret' => OAUTH2_CLIENT_SECRET,
    'code'          => $code,
    'grant_type'    => 'authorization_code',
    'redirect_uri'  => OAUTH2_REDIRECT_URI,
];
$request_options = [
    'http' => [
        'method'  => 'POST',
        'header'  => implode("\r\n", [
            "Content-Type: application/x-www-form-urlencoded",
        ]),
        'content' => http_build_query($params),
    ]
];
$context = stream_context_create($request_options);

$token_url = OAUTH2_SITE . '/oauth/token';

$response_body = file_get_contents($token_url, false, $context);
$response_json = json_decode($response_body);

echo '<pre>';
// var_dump($response_body);
var_dump($response_json);
echo '</pre>';

exit();
request.php

リクエストを実行するときに使用する。

<?php
$request_options = [
    'http' => [
        'method'  => 'GET',
        'header'=> "Authorization: Bearer アクセストークン\r\n"
    ]
];
$context = stream_context_create($request_options);

// $url = 'https://api.shop-pro.jp/v1/shop.json';
$url = 'https://api.shop-pro.jp/v1/customers.json';
$response_body = file_get_contents($url, false, $context);

$response_json = json_decode($response_body, true);

echo '<pre>';
var_dump($response_json);
echo '</pre>';

ビルトインサーバ起動

サンプルコードを置いているディレクトリに移動して

cd /YOUR_WORK_DIR/

ビルトインサーバを起動する。

php -S localhost:8000

アクセストークンの取得

下記にアクセスする。
http://localhost:8000/get_access_token.php

ショップの管理者アカウントでログインする。
4.png

「承認する」ボタンを押す。
5.png

ブラウザに表示された["access_token"]の値をコピーする。

object(stdClass)#1 (3) {
  ["access_token"]=>
  string(64) "アクセストーク"
  ["token_type"]=>
  string(6) "bearer"
  ["scope"]=>
  string(51) "read_products write_products read_sales write_sales"
}

リクエスト実行ファイルにアクセストークンを設定する

先ほど取得したアクセストークンを request.php に設定する。

$request_options = [
    'http' => [
        'method'  => 'GET',
        'header'=> "Authorization: Bearer アクセストークン\r\n"
    ]
];

リクエストを実行

http://localhost:8000/request.php

サンプルコードでは下記のように顧客情報一覧が取得できる。

array(2) {
  ["customers"]=>
  array(2) {
    [0]=>
    array(18) {
      ["id"]=>
      int(00000000)
      ["account_id"]=>
      string(10) "XX00000000"
      ["name"]=>
      string(15) "山田 太郎"
      ["furigana"]=>
      string(0) ""
      ["hojin"]=>
      string(0) ""
      ["busho"]=>
      string(0) ""
      ["sex"]=>
      NULL
      ["postal"]=>
      string(0) ""
      ["pref_id"]=>
      int(1)
      ["pref_name"]=>
      string(9) "北海道"
      ["address1"]=>
      string(24) "市区町村、番地等"
      ["address2"]=>
      string(0) ""
      ["mail"]=>
      string(24) "customer2@example.com"
      ["tel"]=>
      string(10) "0312345678"
      ["fax"]=>
      string(0) ""
      ["tel_mobile"]=>
      string(0) ""
      ["points"]=>
      int(0)
      ["member"]=>
      bool(true)
    }
    [1]=>
    array(18) {
      ["id"]=>
      int(00000000)
      ["account_id"]=>
      string(10) "XX00000000"
      ["name"]=>
      string(9) "顧客1"
      ["furigana"]=>
      string(0) ""
      ["hojin"]=>
      NULL
      ["busho"]=>
      NULL
      ["sex"]=>
      NULL
      ["postal"]=>
      string(7) "1234567"
      ["pref_id"]=>
      int(1)
      ["pref_name"]=>
      string(9) "北海道"
      ["address1"]=>
      string(21) "市区町村・番地"
      ["address2"]=>
      NULL
      ["mail"]=>
      string(28) "customer@example.com"
      ["tel"]=>
      string(10) "0312456789"
      ["fax"]=>
      NULL
      ["tel_mobile"]=>
      NULL
      ["points"]=>
      int(0)
      ["member"]=>
      bool(true)
    }
  }
  ["meta"]=>
  array(3) {
    ["total"]=>
    int(2)
    ["limit"]=>
    int(10)
    ["offset"]=>
    int(0)
  }
}

ショップに何もデータが無い場合は、ショップ管理者アカウントで管理画面にログイン後、
テストで商品登録、購入、会員登録をしておくと良いです。

参考・出典

API

テスト購入

makipe
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away