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

Shopware应用安装期间如何获取$queryString变量值

Shopware应用注册阶段获取$queryString的方法

什么是$queryString

$queryString指的是请求URL中?之后的完整查询参数部分,比如请求URL为https://your-app.com/register?shop-id=456&timestamp=1700000000&nonce=xyz789,对应的$queryString就是shop-id=456&timestamp=1700000000&nonce=xyz789。

不同场景下的获取方式

  • 在Shopware内部请求处理逻辑中
    直接使用Psr\Http\Message\RequestInterface实例的方法获取,和示例代码逻辑一致:

    use Psr\Http\Message\RequestInterface;
    
    /** @var RequestInterface $request */
    $queryString = $request->getUri()->getQuery();
    $signature = hash_hmac('sha256', $queryString, $appSecret);
    

    这种方式会直接拿到Shopware发送请求时的原始查询字符串,无需额外处理。

  • 在外部服务中接收安装请求(原生PHP环境)
    可以通过服务器全局变量直接获取:

    // 直接获取查询字符串
    $queryString = $_SERVER['QUERY_STRING'];
    
    // 或者从完整请求URI中截取(适用于需要手动解析的场景)
    $fullUri = $_SERVER['REQUEST_URI'];
    $queryString = strpos($fullUri, '?') !== false ? substr($fullUri, strpos($fullUri, '?') + 1) : '';
    

关键注意事项

  • 必须保证$queryString和Shopware发送时的原始状态完全一致,包括参数顺序、编码格式,任何修改(比如排序参数、解码特殊字符)都会导致签名验证失败。
  • 不要对查询参数做二次处理,直接使用获取到的原始字符串进行签名计算。

内容的提问来源于stack exchange,提问作者Templator Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:01:39