通过 api 调用将产品添加到购物车

Posted

技术标签:

【中文标题】通过 api 调用将产品添加到购物车【英文标题】:Add a product to cart through api call 【发布时间】:2019-12-27 21:31:33 【问题描述】:

我已经设置了 wordpress REST api 来创建一个端点来监听特定第三方服务的调用。此第三方服务将发送包含产品数据的 POST 请求。该数据需要可供 woocommerce 使用,以便它可以将产品添加到购物车。问题是我无法访问将返回 woocommerce 实例的 WC() 函数。第三方服务需要一个 json 响应,它可以是任何东西,只要它是 json。收到响应后,它会将用户重定向到购物车。

我尝试为端点添加一个内部回调函数,该函数将依次运行一个将产品添加到购物车的函数。尝试将此函数与几个不同的点挂钩,例如:init、wp、woocommerce_loaded、rest_api_init 和 wp_footer。

我还尝试发送带有类似参数的 cURL 获取请求 ?add-to-cart=".$request->get_param('productId') 这也不起作用。

我无法发布第三方服务,但是 wp rest api 端点只是一个监听 POST 请求的普通端点。

【问题讨论】:

【参考方案1】:

我使用以下代码解决了这个问题:

add_filter( 'woocommerce_is_rest_api_request', [ $this, 'simulate_as_not_rest' ] );
/**
* We have to tell WC that this should not be handled as a REST request.
* Otherwise we can't use the product loop template contents properly.
* Since WooCommerce 3.6
*
* @param bool $is_rest_api_request
* @return bool
*/
public function simulate_as_not_rest( $is_rest_api_request ) 
if ( empty( $_SERVER['REQUEST_URI'] ) ) 
        return $is_rest_api_request;


// Bail early if this is not our request.
if ( false === strpos( $_SERVER['REQUEST_URI'], $this->namespace ) ) 
    return $is_rest_api_request;


return false;

我将命名空间设置为 API 路由的命名空间。

我希望这对某人有所帮助

【讨论】:

以上是关于通过 api 调用将产品添加到购物车的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce 购物车休息 API

在 Shopify 中,如何通过 url 将不同数量的多个产品添加到购物车

WooCommerce 通过共同购物车插件添加到购物车产品

您可以通过 API 为亚马逊购物车添加地址吗?

将产品添加到 Prestashop 1.6 中特定商店的购物车(以编程方式)

如何使用 Shopify API 将商品添加到购物车