我正在开发一个基于shopify的电子商务组件的Web应用程序,作为我们客户的白色标签产品。我们的应用程序允许客户的客户购买产品订阅,以便在应用程序中使用。我们的每个客户都将有一个单独的shopify商店。我们有一个网络界面,允许我们的客户创建产品,我们使用shopify api通过应用程序在他们的商店创建产品。我们已安装网络挂钩以接收付款通知,以便我们可以在我们的系统中创建适当的记录,以允许客户访问他们购买的产品。
到目前为止,计划一直是在我们的网站上提供一个“立即购买”按钮,将产品添加到商店的购物车,然后使用Shopify的结账系统指导用户结账。在履行网络钩子中,我们获得了购物车令牌,因此我们需要做的就是链接两个系统,将购物车令牌临时记录在我们的客户数据库中,然后我们可以通过购买将正确的用户归功于此。
我们遇到的问题是,似乎没有办法将购物车/订单/付款链接到实际登录到我们系统的用户。我们仍处于开发阶段,因此我们正在使用测试商店,应用程序的域名与商店的域名不同(生产系统也可能如此),似乎无法弄清楚如何链接两个系统。
我尝试了几种不同的方法......
1)使用表格并使用return_to = back发布到商店的cart / add.js
这似乎是成功的,因为物品被添加到购物车并在新窗口中打开购物车将他们带到他们添加物品的购物车,但是没有办法将该购物车与我们系统上的用户相关联我们无法在单独的域中访问购物车令牌
2)使用代理(我们的系统以节点编写)发布到商店的购物车并拦截购物车令牌。
这也适用于将项目添加到购物车中,我们可以从响应中访问_session_id和cart cookie,但我似乎无法在浏览器中设置这些cookie。去商店的购物车不会显示刚添加的商品,商店会获得不同的购物车代币。
是否有不同的方法或其中一种方法有效?
我们应该完全不同地做这件事吗?
干杯
保
答案 0 :(得分:2)
您最好的选择是在创建订单时将某些内容放入购物车属性中,并在您获取webhook将订单链接到其他系统时使用该属性。你可以在另一台服务器上有一个简单的json端点来取回当前登录的用户,或让他们在购物车页面上输入一些用户并将它们存储在购物车属性中。有关购物车属性的更多信息http://wiki.shopify.com/Ask_customer_for_additional_information
答案 1 :(得分:1)
为了实现John的建议,我将以下内容放入cart.liquid文件中:
<script type="text/javascript">
(function($){
$(document).ready(function(){
$.ajax({
url: 'http://<server>/token',
dataType: 'jsonp',
success: function(data, status, xhr) {
$('#cartform').append('<input type="hidden" name="attributes[token]" value="'+data.token+'" />');
},
error: function(xhr, status, error) {
alert('Error');
}
});
});
})(jQuery);
</script>
我的服务器运行在与商店不同的域上,因此我使用的是jsonp。令牌是我可以用来唯一标识我的数据库中的客户记录的东西。我正在使用一个属性,以便它不会与我们客户使用shopify的注释功能冲突,如果他们想要自己使用它的话。我还没有使用我的网络钩子测试这个,但我认为我可以从这里开始这项工作。
我对此并不完全满意,因为它要求我们的客户将其放入他们的模板中,以便shopify与我们的系统一起使用。我仍然认为应该有一种方法可以通过JSON / cart API设置购物车票据的价值。