打通 Odoo 与 Shopify 电商库存同步
解决多平台电商管理痛点:通过本技能指导你利用 Odoo 和 Shopify 的 API,自动化完成产品目录、实时库存、新订单及客户数据的同步与对账。
为什么需要这个技能
许多商家在 Shopify 开店,却希望利用 Odoo 强大的 ERP 系统管理库存和销售订单。若不使用自动化工具,人工处理订单、核对库存极易出错,且无法实现实时数据更新。
本技能教 AI 如何搭建 Odoo 与 Shopify 之间的数据桥梁,实现:
- 在 Shopify 销售时自动在 Odoo 创建销售订单。
- 保持两地库存水位实时一致,防止超卖。
- 自动映射 Shopify 的商品变体到 Odoo 产品模板。
适用场景
- 卖家主要在 Shopify 前台接单,后台库存管理希望统一在 Odoo。
- 需要将 Shopify 的进货单自动转化为 Odoo 的销售订单。
- 需确保两个平台的产品 ID 或 SKU 能正确关联,避免数据乱码。
核心工作流
- 激活与设计:提及
@odoo-shopify-integration,描述你的同步需求。AI 会输出数据流向架构和字段映射方案。 - 构建接口:获取 Shopify Webhook 接收器代码以及调用 Odoo XMLRPC API 的代码片段。
- 部署验证:运行代码,配置 Shopify 回调 URL 和 Odoo 数据库凭据,确保订单状态自动确认。
技术实现示例
以下代码展示了如何从 Shopify 接收新订单并写入 Odoo:
Example 1: Push an Odoo Sale Order for a Shopify Order (Python)
import xmlrpc.client, requests
# Odoo connection
odoo_url = "https://myodoo.example.com"
db, uid, pwd = "my_db", 2, "api_key"
models = xmlrpc.client.ServerProxy(f"{odoo_url}/xmlrpc/2/object")
def create_odoo_order_from_shopify(shopify_order):
# Find or create customer
partner = models.execute_kw(db, uid, pwd, 'res.partner', 'search_read',
[[['email', '=', shopify_order['customer']['email']]]],
{'fields': ['id'], 'limit': 1}
)
partner_id = partner[0]['id'] if partner else models.execute_kw(
db, uid, pwd, 'res.partner', 'create', [{
'name': shopify_order['customer']['first_name'] + ' ' + shopify_order['customer']['last_name'],
'email': shopify_order['customer']['email'],
}]
)
# Create Sale Order
order_id = models.execute_kw(db, uid, pwd, 'sale.order', 'create', [{
'partner_id': partner_id,
'client_order_ref': f"Shopify #{shopify_order['order_number']}",
'order_line': [(0, 0, {
'product_id': get_odoo_product_id(line['sku']),
'product_uom_qty': line['quantity'],
'price_unit': float(line['price']),
}) for line in shopify_order['line_items']],
}])
return order_id
def get_odoo_product_id(sku):
result = models.execute_kw(db, uid, pwd, 'product.product', 'search_read',
[[['default_code', '=', sku]]], {'fields': ['id'], 'limit': 1})
return result[0]['id'] if result else False
Example 2: Shopify Webhook for Real-Time Orders
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook/shopify/orders', methods=['POST'])
def shopify_order_webhook():
shopify_order = request.json
order_id = create_odoo_order_from_shopify(shopify_order)
return {"odoo_order_id": order_id}, 200
最佳实践与注意事项
- ✅ 使用 Webhook:优先使用 Shopify Webhook 推送数据,而不是轮询查询,确保实时性。
- ✅ 以 SKU 为唯一键:使用 SKU 或内部参考编号作为两平台间的匹配关键字,不要使用不稳定的 Shopify 产品 ID。
- ✅ 单一数据源:选定一个平台作为库存真相来源,避免双写导致数据冲突。
- ✅ 验证签名:处理 Webhook 时必须验证 HMAC 签名,防止恶意请求注入。
- ❌ 避免盲目同步:不要在没有主系统的情况下同时从两端同步库存,容易造成死锁。
下载和安装
下载 odoo-shopify-integration 中文版 Skill ZIP
你可能还需要
暂无推荐