콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
1 회신
3660 화면

Hello!

From an external application, I need to add products in user odoo cart (user can be authenticated or not). This should use the ODOO api. I was looking in the documentation but did not find anything. 

Any idea where I could find the needed information?

The Odoo version is v15 enterprise.

Thx in advance for any help :)

아바타
취소
베스트 답변

Hi, 

To add products to the cart in Odoo 15 using the REST API, you can follow these steps:

1. Authenticate and obtain an authentication token: You need to authenticate with the Odoo server and obtain an authentication token. This token will be used for subsequent API requests. You can use the `/web/session/authenticate` endpoint to authenticate and obtain the token.

2. Add products to the cart: Find the user’s cart using the ORM method and use the `/shop/cart/update_json` controller to add products to the cart using the values received. You need to provide the cart ID and the product details such as the product ID, quantity, and other relevant information.

Here's an example of how you can achieve this using Python and the `requests` library:

import requests

import json


# Authenticate and obtain authentication token

def _connect_to_odoo(self, url, db, username, password,

parameters): 

#Set the endpoint URL for the REST API

endpoint = f '{url}/update/db/odoo'


#Set the request headers

headers = {

'Content-Type': 'application/json',

}



#Set the request payload

payload = {

'params': parameters,

}

session_url = f '{url}/web/session/authenticate'

data = {

'jsonrpc': '2.0',

'method': 'call',

'params': {

'db': your_db_name,

'login': your_username,

'password': your_password,

}

}

session_response = requests.post(session_url, json = data)

session_data = session_response.json()

if session_data.get('result') and session_response.cookies['session_id']: #Retry the original request with the new session

headers[

'Cookie'] = f "session_id={session_response.cookies['session_id']}"

response = requests.post(endpoint, headers = headers,

auth = (username, password),

json = payload)

if response.status_code == 200:

result = response.json()

return result

else :

print(f 'Error: {response.status_code} - {response.text}')

return None

else :

print(

f 'Error: Failed to re-authenticate - {session_data.get("error")}')

return None

Note: The provided code includes only the connection to Odoo, you have to define your customized function to find and add products to user's cart.

For more information you can refer to this blog: Implementation of Common API Methods in Odoo 15

아바타
취소
관련 게시물 답글 화면 활동
1
8월 25
556
1
8월 25
738
2
7월 25
3308
3
7월 25
909
1
6월 25
2452