You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发布Shopify应用时,PHP代码需做哪些修改(含API密钥等)?

Shopify应用PHP配置指南(API密钥、令牌相关)

基础配置项设置

首先创建一个配置文件存储核心密钥,绝对不要硬编码到业务代码中,示例如下:

// config.php
define('SHOPIFY_API_KEY', '你的Shopify API密钥'); // 从Shopify后台应用设置中获取
define('SHOPIFY_API_SECRET', '你的Shopify API密钥'); // 同上
define('SHOPIFY_APP_URL', 'https://your-app-domain.com'); // 你的应用公网可访问域名
define('SHOPIFY_ACCESS_SCOPE', 'read_products,write_orders'); // 根据业务需求设置权限范围

授权流程与获取Access Token

1. 跳转至Shopify授权页面

当商家点击安装链接时,先引导至Shopify的授权页面:

// install.php
require 'config.php';

if (!isset($_GET['shop'])) {
    die('请传入shop参数(格式:your-store.myshopify.com)');
}

$shop = $_GET['shop'];
$authUrl = sprintf(
    'https://%s/admin/oauth/authorize?client_id=%s&scope=%s&redirect_uri=%s',
    $shop,
    SHOPIFY_API_KEY,
    SHOPIFY_ACCESS_SCOPE,
    urlencode(SHOPIFY_APP_URL . '/callback.php')
);

header("Location: {$authUrl}");
exit;

2. 回调页面验证并获取Token

商家授权后,Shopify会回调你设置的redirect_uri,需要验证请求合法性并获取Access Token:

// callback.php
require 'config.php';

$shop = $_GET['shop'] ?? '';
$code = $_GET['code'] ?? '';
$hmac = $_GET['hmac'] ?? '';
$timestamp = $_GET['timestamp'] ?? '';

// 验证HMAC签名,防止伪造请求
$queryParams = [
    'code' => $code,
    'shop' => $shop,
    'timestamp' => $timestamp
];
ksort($queryParams); // 必须按key排序,否则签名验证失败
$queryString = http_build_query($queryParams);
$calculatedHmac = hash_hmac('sha256', $queryString, SHOPIFY_API_SECRET);

if (!hash_equals($hmac, $calculatedHmac)) {
    die('HMAC签名验证失败');
}

// 请求Access Token
$tokenUrl = "https://{$shop}/admin/oauth/access_token";
$postData = json_encode([
    'client_id' => SHOPIFY_API_KEY,
    'client_secret' => SHOPIFY_API_SECRET,
    'code' => $code
]);

$ch = curl_init($tokenUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postData,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json']
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
if (isset($result['access_token'])) {
    $accessToken = $result['access_token'];
    // 建议将access_token和shop域名关联存储到数据库,后续API调用使用
    echo "授权成功,Access Token: {$accessToken}";
} else {
    die('获取Access Token失败: ' . $response);
}

使用Access Token调用Shopify API

拿到Access Token后,就可以调用Shopify的Admin API了,示例:

// api-call-example.php
$shop = 'your-store.myshopify.com'; // 商家的店铺域名
$accessToken = '从数据库取出的access token';
$apiVersion = '2024-07'; // 使用Shopify当前支持的稳定版本

$apiUrl = "https://{$shop}/admin/api/{$apiVersion}/products.json";

$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "X-Shopify-Access-Token: {$accessToken}",
        "Content-Type: application/json"
    ]
]);

$response = curl_exec($ch);
curl_close($ch);

$products = json_decode($response, true);
print_r($products);

关键注意事项

  • 密钥安全:不要把API密钥、Secret和Access Token提交到代码仓库,建议使用环境变量(比如getenv('SHOPIFY_API_KEY'))替代硬编码
  • API版本:Shopify API版本每季度更新,务必使用当前稳定版本,避免旧版本失效
  • 权限范围:只申请业务必需的权限,过多权限会降低应用审核通过率
  • 签名验证:所有来自Shopify的回调请求必须验证HMAC签名,这是安全防护的核心

内容的提问来源于stack exchange,提问作者Jignesh Rathod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:00:55