1

抱歉,在我意识到您已将此类问题移至 stackoverflow 之前,我已将其发布在 google 组中

我正在为我们的客户开发一个带有基于 shopify 的电子商务组件的 Web 应用程序,作为白标产品。我们的应用程序允许我们客户的客户购买产品订阅以在应用程序内使用。我们的每个客户都将拥有一个单独的 shopify 商店。我们有一个 Web 界面,允许我们的客户创建产品,我们使用 shopify api 通过应用程序在他们的商店中创建产品。我们安装了网络挂钩来接收付款通知,以便我们可以在我们的系统中创建适当的记录,以允许客户访问他们购买的产品。

到目前为止,我们的计划是在我们的网站上提供一个带有“立即购买”按钮的产品列表,该按钮将产品添加到商店的购物车中,然后引导用户使用 Shopify 的结帐系统结帐。在履行网络挂钩中,我们获得了购物车令牌,因此我们需要做的就是将购物车令牌临时记录在我们的客户数据库中,然后我们可以将购买记入正确的用户。

我们遇到的问题是似乎无法将购物车/订单/付款链接到实际登录到我们系统的用户。我们仍在开发中,因此我们使用的是测试商店,应用程序的域与商店的域不同(生产系统中可能也是如此),似乎无法弄清楚如何链接两个系统。

我尝试了几种不同的方法...

1) 使用表单并使用 return_to=back 发布到商店的购物车/add.js

这似乎是成功的,因为将商品添加到购物车并在新窗口中打开购物车会将它们带到他们将商品添加到的购物车,但是由于我们可以,因此无法将该购物车与我们系统上的用户相关联t 在单独的域中访问购物车令牌

2)使用代理(我们的系统是写在节点中的)发布到商店的购物车并拦截购物车令牌。

这也适用于将项目添加到购物车,我们可以从响应中访问 _session_id 和购物车 cookie,但我似乎无法在浏览器中设置这些 cookie。转到商店的购物车不会显示刚刚添加的商品,并且商店会获得不同的购物车令牌。

是否有不同的方法或者其中一种方法是否可行?

我们应该完全不同地做这件事吗?

干杯

保罗

4

2 回答 2

2

您最好的选择是在创建订单时将某些内容放入购物车属性中,并在您获取 webhook 以将订单链接到其他系统时使用该属性。您可以在另一台服务器上有一个简单的 json 端点来取回当前登录的用户,或者让他们输入购物车页面上的某个用户并将它们存储在购物车属性中。有关购物车属性的更多信息http://wiki.shopify.com/Ask_customer_for_additional_information

于 2012-06-30T13:30:40.033 回答
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 来设置购物车的注释值。

于 2012-07-05T19:38:51.660 回答