我正在从现有的WooCommerce商店开发移动应用程序。我添加了自定义API,以通过用户会话维护所有内容。我不知道如何在WooCommerce上管理会话。但是,当我从移动应用程序调用{{1}}方法时,它返回空白字符串,而当我调用相同的API时,它从邮递员中返回正确的会话字符串。
我的主要目的是将产品添加到购物车,并从购物车中检索特定用户会话。通过使用自定义API,我可以按照用户会话执行所有操作。通过登录会话将产品添加到当前登录的用户购物车中。但是从移动应用程序中,我无法通过其会话将产品添加到特定用户的购物车中。我从移动应用程序收到针对自定义添加到购物车API的正确响应,但无法定义要向哪个用户的购物车添加产品。同样,在将产品添加到购物车后,我调用get cart items API,该API也返回0个项目,这表示未在其中添加产品。所有这些API在Postman上都能正常工作。
要弄清楚这个问题,我尝试在登录API中调用wp_get_session_token()
方法。从Postman调用此方法时,此方法返回正确的会话ID。但是,当我从移动应用程序调用此函数时,它仅返回空白字符串。
在我看来,问题出在移动应用程序的会话上,但我不知道如何从移动应用程序到WooCommerce商店进行管理。
这是我的登录API,我现在返回会话ID进行调试:
wp_get_session_token()
从移动应用调用write_log时,会话的条目也为空白。
添加到购物车的代码:
function register_api_hooks() {
register_rest_route(
'custom-plugin', '/login/',
array(
'methods' => ['GET'],
'callback' => 'login',
)
);
function login($request) {
$creds = array();
$creds['user_login'] = $request["username"];
$creds['user_password'] = $request["password"];
$creds['remember'] = true;
$user = wp_signon( $creds, false );
$session = (object) wp_get_session_token();
write_log($user);
write_log($session);
return $session;
// return $user;
}
}
请让我知道我要去哪里错了,或者我还必须执行其他什么实现。
编辑
这是我在React Native Mobile App中使用的代码:
add_action( 'rest_api_init', 'register_cart_hooks' );
// API custom endpoints for WP-REST API
function register_cart_hooks() {
register_rest_route(
'custom-plugin', '/addToCart/',
array(
'methods' => ['GET'],
'callback' => 'addToCart',
)
);
function addToCart($request) {
global $woocommerce;
$woocommerce>cart>add_to_cart($request["product_id"],$request["quantity"]);
return "Success...";
}
}