SnipCart 重定向到我的 MVC C# 网站上的自定义感谢页面 URL

SnipCart redirect to my custom thank you page URL on my MVC C# site

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

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

我已经阅读了一些关于如何完成我想要的东西的帖子,但 none 已经奏效了。我不断收到此浏览器控制台错误,显示 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 可能会有所不同,因为此实现在此版本上运行。他们网站上的信息所在的文档页面是空的。 Click here

而版本 2.x 的文档显示了我正在尝试的代码。 Click here

谁能指导我解决这个问题? 这是我获得有关 Redirecting The User to A Custom Thank You Page 的信息的地方。您必须滚动到底部,在那里他们谈论将用户带到您自己的感谢页面。

This one also shows a snippet of code that I tried but did not work for me

您似乎使用的是 v3,但是,您正在侦听的事件是针对 v2 的。对于 v3.

,您需要收听此事件 https://docs.snipcart.com/v3/sdk/events#cartconfirmed

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

你这里有2个问题。一种是使用 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");
})