Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
1 Odpovědět
3408 Zobrazení

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
Zrušit
Nejlepší odpověď

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
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
1
srp 25
395
2
čvc 25
2833
3
čvc 25
638
1
čvn 25
2109
1
srp 25
1016