Shopware应用安装期间如何获取$queryString变量值
Shopware应用注册阶段获取$queryString的方法
什么是$queryString
$queryString指的是请求URL中?之后的完整查询参数部分,比如请求URL为https://your-app.com/register?shop-id=456×tamp=1700000000&nonce=xyz789,对应的$queryString就是shop-id=456×tamp=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
相关产品推荐
相关产品推荐

