通过API创建Shopify Webhook时的验证密钥困惑求助
Shopify Webhook 验证密钥选择指南
问题本质
你遇到的验证失败,是因为Webhook创建方式不同,对应的签名密钥完全不同:
- 通过店铺后台手动创建的Webhook,验证密钥是店铺设置里的专属Webhook密钥
- 通过Admin API创建的Webhook,必须使用应用的共享密钥(Shared Secret),而非应用的API密钥
正确密钥获取步骤
- 登录Shopify合作伙伴后台,定位到你的应用
- 进入「应用设置」→「API凭据」页面
- 复制「共享密钥(Shared Secret)」字段值,替换代码中的
secretKey
代码验证要点
你的Node.js验证逻辑是正确的,但需确保两个关键细节:
- 必须使用原始请求体:不能用已被解析的
req.body,解析会修改内容导致签名不匹配(你代码里用getRawBody(req)的做法是对的) - 保持编码一致:Shopify返回的Hmac是base64编码,你的代码
digest("base64")符合要求
常见误区
- 不要混淆「应用API密钥」和「共享密钥」:API密钥用于OAuth流程,Webhook验证只能用共享密钥
- 手动创建与API创建的Webhook密钥不通用:两种方式的签名体系完全独立,不能交叉使用
内容的提问来源于stack exchange,提问作者hemant jangid
相关产品推荐
相关产品推荐

