Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
1 Beantwoorden
3401 Weergaven

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
Annuleer
Beste antwoord

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
Annuleer
Gerelateerde posts Antwoorden Weergaven Activiteit
1
aug. 25
374
2
jul. 25
2819
3
jul. 25
632
1
jun. 25
2095
1
aug. 25
1002