تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
1 الرد
3403 أدوات العرض

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
أغسطس 25
380
2
يوليو 25
2825
3
يوليو 25
636
1
يونيو 25
2100
1
أغسطس 25
1007