Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
1 Rispondi
3404 Visualizzazioni

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 :)

Avatar
Abbandona
Risposta migliore

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

Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
1
ago 25
380
2
lug 25
2825
3
lug 25
636
1
giu 25
2100
1
ago 25
1007