如何控制Shopify商品AJAX接口返回货币及获取cart_currency Cookie?
问题描述
通过Shopify商品API接口(https://e453eb.myshopify.com/products/chakananecklace.json)发起jQuery AJAX请求获取商品数据时,返回的data.variants[0].price是用户本地货币而非店铺默认货币。核心诉求:
- 如何获取店铺默认货币的价格?
- 能否通过请求头/设置Cookie指定目标货币(比如USD)?
- 若无法指定,如何确认返回价格对应的货币类型?
原请求代码:
$.ajax({ url: 'https://e453eb.myshopify.com/products/chakananecklace.json', type: 'GET', success: function(data) { // 处理成功逻辑 console.log(data); }, error: function(xhr, textStatus, errorThrown) { // 处理错误逻辑 } });
解决方案
1. 指定目标货币获取对应价格
Shopify商品API支持通过URL参数或请求头直接指定货币,返回对应计价的价格:
- URL参数方式:在请求地址后追加
?currency=目标货币代码
$.ajax({ url: 'https://e453eb.myshopify.com/products/chakananecklace.json?currency=USD', type: 'GET', success: function(data) { console.log("USD计价价格:", data.variants[0].price); }, error: function(xhr, textStatus, errorThrown) { // 错误处理 } });
- 请求头方式:在AJAX请求中添加
Shopify-Currency头指定货币
$.ajax({ url: 'https://e453eb.myshopify.com/products/chakananecklace.json', type: 'GET', headers: { 'Shopify-Currency': 'USD' }, success: function(data) { console.log("USD计价价格:", data.variants[0].price); }, error: function(xhr, textStatus, errorThrown) { // 错误处理 } });
2. 关于设置cart_currency Cookie
跨域场景下无法直接设置Shopify店铺域名下的cart_currency Cookie(受同源策略限制),仅同域名内请求适用,因此不推荐跨域时使用这种方式。
3. 确认返回价格的货币类型
如果无法指定货币,可通过两种方式获取当前价格对应的货币:
- 解析响应头的Set-Cookie字段:从响应头中提取
cart_currency的值
$.ajax({ url: 'https://e453eb.myshopify.com/products/chakananecklace.json', type: 'GET', success: function(data, _, xhr) { const setCookie = xhr.getResponseHeader('Set-Cookie'); const currencyMatch = setCookie.match(/cart_currency=([^;]+)/); if (currencyMatch) { console.log("当前价格货币:", currencyMatch[1]); console.log("对应价格:", data.variants[0].price); } }, error: function(xhr, textStatus, errorThrown) { // 错误处理 } });
- 检查返回数据中的货币字段:部分Shopify API版本会在返回的
data对象中包含currency字段,或在data.shop(若返回)中展示店铺默认货币设置。
内容的提问来源于stack exchange,提问作者Aleks Per
相关产品推荐
相关产品推荐

