1

我在我的网站上使用 Snipcart v3.3.0 作为购物车,我使用 C# 在 MVC 中构建。购物车工作正常,我能够完成交易。

我遇到的问题是,一旦他们完成交易,我想将用户导航到我自己网站上的感谢页面。目前,当您使用 Snipcart 完成结帐时,默认情况下,它只会在侧购物车结帐模式中显示他们的感谢页面。

我已经阅读了一些关于如何完成我想要的东西的帖子,但没有一个有效。我不断收到这个浏览器控制台错误,上面写着Uncaught TypeError: Snipcart.subscribe is not a function

<script>
document.addEventListener('snipcart.ready', function () {
    Snipcart.subscribe('order.completed', function (order) {
        var url = '/thankyou?order=' + order.token;
        window.location.href = url;
    });
});

我什至尝试过使用 .execute 方法,正如其中一篇文章所建议的那样,但这也不起作用。未捕获的类型错误:Snipcart.execute 不是函数

<script>
document.addEventListener('snipcart.ready', function () {
    Snipcart.execute('order.completed', function (order) {
        var url = '/thankyou?order=' + order.token;
        window.location.href = url;
    });
});

我的猜测是我缺少对 snipcart.js 的引用或其他内容。但是经过多次仔细检查后,我得出的结论是我根本没有错过 snipcart.js 引用,实际上我在调用上面的这两个片段之前调用了它。此外,购物车正在工作,因为它引用了 snipcart.js ,所以我知道事实上我并没有错过那个引用。

另一个想法是,由于我使用的是 3.0.0 版本,因此此实现在此版本上工作的某些 JavaScript 可能会有所不同。他们网站上的信息将是空的文档页面。点击这里

而 2.x 版的文档显示了我正在尝试的代码。点击这里

谁能指导我完成这个?这是我获得有关将用户重定向到自定义感谢页面的信息的地方。您必须滚动到底部,他们谈论将用户带到您自己的感谢页面。

这个还显示了我尝试过但对我不起作用的代码片段

4

2 回答 2

1

您似乎使用的是 v3,但是,您正在收听的事件是针对 v2 的。对于 v3 ,您需要收听此事件https://docs.snipcart.com/v3/sdk/events#cartconfirmed 。

您可以收听 cart.confirmed 事件并使用本机浏览器 API (location.href) 将客户重定向到您选择的页面。

于 2022-01-13T19:20:27.560 回答
1

你在这里有两个问题。一是使用 Snipcart 对象,二是重定向到自定义页面。

使用 Snipcart 对象

为了使用 Snipcart 对象,您应该使用window全局对象。所以你可以像这样访问 Snipcart:

window.Snipcart.events.on('cart.confirmed', async (cartConfirmResponse) => {
  // Your logic
})

重定向到自定义页面

在上面的示例中,我们订阅了cart.confirmed事件。每当购买完成时就会触发。Snipcart 默认会打开它自己的订单摘要页面。因此,您可以添加一个逻辑来关闭购物车并重定向到其他页面。你可以这样做:

window.Snipcart.events.on('cart.confirmed', async (cartConfirmResponse) => {
  await window.Snipcart.api.theme.cart.close();
  window.location.replace("http://example.com/custom_page");
})
于 2022-01-13T19:46:02.933 回答