Shopify | APIで購入履歴を取得する

Shopify API を利用して購入履歴を取得します。エンドポイントの orders.json に email のパラメータを付与して顧客毎の購入履歴を取得出来ます。さらに status のパラメータでステータスに応じた購入履歴の取得も可能です。

Shopify API で購入履歴取得

エンドポイント

フィルタなし

https://{$shop_url}/admin/api/{$api_version}/orders.json

メールアドレスで絞り込む

https://{$shop_url}/admin/api/{$api_version}/orders.json?email=" . urlencode($email)

メールアドレス&ステータスで絞り込む

https://{$shop_url}/admin/api/{$api_version}/orders.json?email=" . urlencode($email) . "&status=any

APIアクセススコープ

read_orders を設定します。

サンプルコード

<?php
// Shopify設定
$shop_id       = "abc123";                                 // ShopifyストアID
$shop_url      = $shop_id . '.myshopify.com';              // ショップURL
$api_key       = "81******************************";       // APIキー
$accessToken   = "shpat_03******************************"; // APIアクセストークン
$api_version   = "2023-07";                                // APIバージョン
$email         = 'example@example.com';                    // 顧客のメールアドレス


if ( $email ) {
    // Orders APIのエンドポイント(メールアドレスでフィルタリング)
    $apiEndpoint = "https://{$shop_url}/admin/api/{$api_version}/orders.json?email=" . urlencode($email) . "&status=any";
} else {
    $apiEndpoint = "https://{$shop_url}/admin/api/{$api_version}/orders.json";
}


// cURLセッションの初期化
$ch = curl_init();

// cURLオプションを設定
curl_setopt($ch, CURLOPT_URL, $apiEndpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$api_key:$accessToken");

// APIリクエストの実行
$response = curl_exec($ch);

// エラーが発生した場合はエラーメッセージを表示
if (curl_errno($ch)) {
    echo "Error: " . curl_error($ch);
}

// 
curl_close($ch);

// レスポンスの確認
if ($response === false) {
    echo "APIリクエストに失敗しました。";
} else {
    // 結果をJSONからPHP配列にデコード
    $orders = json_decode($response, true);

    // 
    // var_dump($orders);

    // 注文情報を表示
    if (isset($orders['orders']) && is_countable($orders['orders']) && count($orders['orders'])>0 ) {
        foreach ($orders['orders'] as $order) {
            echo "Order ID: " . $order['id'] . "<br>";
            echo "Email: " . $order['email'] . "<br>";
            echo "Total Price: " . $order['total_price'] . "<br>";
            echo "Order Status: " . $order['financial_status'] . "<br>";
            echo "<hr>";
        }
    } else {
        echo "No orders found for email: $email";
    }
}
?>

コメント

タイトルとURLをコピーしました