Crie produto ou atualização no Shopify do Sage 200:
Dos 3dids, podemos ajudá -lo a fazer o conector. Exemplo claro de como o processo de criação e atualização de produtos deve ser do SAP para o Shopify.
Isso nada mais é do que um exemplo que tenta que você é desenvolvedor, veja a estrutura e adapte -a ao seu ERP
import requests
import json
from sage import api # Asumiendo que tienes una API de SAGE disponible
def create_product_in_shopify(sage_product_id):
# Configuración de la API de Shopify
shopify_url = "https://your-store.myshopify.com/admin/api/2023-01/products.json"
shopify_headers = {
"X-Shopify-Access-Token": "your_access_token",
"Content-Type": "application/json"
}
# Leer datos del producto desde SAGE
sage_product = api.get_product(sage_product_id)
sage_product_data = {
"name": sage_product.name,
"identifier": sage_product.sku,
"short_description": sage_product.short_description,
"long_description": sage_product.long_description,
"seo_title": sage_product.seo_title,
"seo_description": sage_product.seo_description,
"tags": sage_product.tags,
"variants": [],
"images": []
}
# Obtener variantes del producto
for variant in sage_product.variants:
variant_data = {
"title": variant.name,
"price": str(variant.price),
"inventory_quantity": variant.stock_level,
"images": []
}
# Obtener imágenes de las variantes
for image in variant.images:
variant_data["images"].append(image.url)
sage_product_data["variants"].append(variant_data)
# Obtener imágenes del producto principal
for image in sage_product.images:
sage_product_data["images"].append(image.url)
# Crear producto en Shopify
product_data = {
"product": {
"title": sage_product_data["name"],
"body_html": sage_product_data["long_description"],
"vendor": "Your Vendor",
"product_type": "Your Product Type",
"tags": sage_product_data["tags"],
"seo_title": sage_product_data["seo_title"],
"seo_description": sage_product_data["seo_description"],
"variants": [
{
"title": variant["title"],
"price": variant["price"],
"sku": sage_product_data["identifier"],
"inventory_quantity": variant["inventory_quantity"],
"image_ids": []
} for variant in sage_product_data["variants"]
],
"images": [
{
"src": image
} for image in sage_product_data["images"]
]
}
}
# Enviar variantes y sus imágenes por separado debido a las limitaciones de la API de Shopify
response = requests.post(shopify_url, headers=shopify_headers, data=json.dumps(product_data))
if response.status_code == 201:
shopify_product = response.json()["product"]
for i, variant in enumerate(sage_product_data["variants"]):
variant_url = f"https://your-store.myshopify.com/admin/api/2023-01/products/{shopify_product['id']}/variants/{shopify_product['variants'][i]['id']}.json"
for image_url in variant["images"]:
image_data = {
"variant": {
"id": shopify_product['variants'][i]['id'],
"image": {
"src": image_url
}
}
}
image_response = requests.post(variant_url, headers=shopify_headers, data=json.dumps(image_data))
if image_response.status_code != 201:
print(f"Error al subir imagen de variante en Shopify: {image_response.text}")
print("Producto creado exitosamente en Shopify")
else:
print("Error al crear el producto en Shopify:", response.text)
# Ejemplo de uso
create_product_in_shopify("SAGE_PRODUCT_ID")
Atualize o produto no Shopify:
import requests
import json
from sage import api # Asumiendo que tienes una API de SAGE disponible
def update_product_in_shopify(sage_product_id, shopify_product_id):
# Configuración de la API de Shopify
shopify_url = f"https://your-store.myshopify.com/admin/api/2023-01/products/{shopify_product_id}.json"
shopify_headers = {
"X-Shopify-Access-Token": "your_access_token",
"Content-Type": "application/json"
}
# Leer datos del producto actualizado desde SAGE
sage_product = api.get_product(sage_product_id)
sage_product_data = {
"name": sage_product.name,
"identifier": sage_product.sku,
"short_description": sage_product.short_description,
"long_description": sage_product.long_description,
"seo_title": sage_product.seo_title,
"seo_description": sage_product.seo_description,
"tags": sage_product.tags,
"variants": [],
"images": []
}
# Obtener variantes del producto
for variant in sage_product.variants:
variant_data = {
"title": variant.name,
"price": str(variant.price),
"inventory_quantity": variant.stock_level,
"images": []
}
# Obtener imágenes de las variantes
for image in variant.images:
variant_data["images"].append(image.url)
sage_product_data["variants"].append(variant_data)
# Obtener imágenes del producto principal
for image in sage_product.images:
sage_product_data["images"].append(image.url)
# Actualizar producto en Shopify
product_data = {
"product": {
"id": shopify_product_id,
"title": sage_product_data["name"],
"body_html": sage_product_data["long_description"],
"vendor": "Your Vendor",
"product_type": "Your Product Type",
"tags": sage_product_data["tags"],
"seo_title": sage_product_data["seo_title"],
"seo_description": sage_product_data["seo_description"],
"variants": [
{
"id": variant.shopify_variant_id, # Asumiendo que tienes un campo para almacenar el ID de la variante de Shopify
"title": variant["title"],
"price": variant["price"],
"sku": sage_product_data["identifier"],
"inventory_quantity": variant["inventory_quantity"],
"image_ids": []
} for variant in sage_product_data["variants"]
],
"images": [
{
"src": image
} for image in sage_product_data["images"]
]
}
}
# Enviar variantes y sus imágenes por separado debido a las limitaciones de la API de Shopify
response = requests.put(shopify_url, headers=shopify_headers, data=json.dumps(product_data))
if response.status_code == 200:
shopify_product = response.json()["product"]
for i, variant in enumerate(sage_product_data["variants"]):
variant_url = f"https://your-store.myshopify.com/admin/api/2023-01/products/{shopify_product['id']}/variants/{variant['shopify_variant_id']}.json"
for image_url in variant["images"]:
image_data = {
"variant": {
"id": variant['shopify_variant_id'],
"image": {
"src": image_url
}
}
}
image_response = requests.post(variant_url, headers=shopify_headers, data=json.dumps(image_data))
if image_response.status_code != 201:
print(f"Error al subir imagen de variante en Shopify: {image_response.text}")
print("Producto actualizado exitosamente en Shopify")
else:
print("Error al actualizar el producto en Shopify:", response.text)
# Ejemplo de uso
update_product_in_shopify("SAGE_PRODUCT_ID", "SHOPIFY_PRODUCT_ID")
Onde acomodar o script:A melhor maneira de acomodar esses scripts seria em um servidor que tenha acesso à sua instância SAGE e API do Shopify. Aqui estão algumas opções:
- Servidor propio: Puedes alojar estos scripts en tu propio servidor, configurando un entorno de ejecución como Python y asegurándote de que tenga acceso a las APIs necesarias.
- Plataforma de integración: Considera usar una plataforma de integración como Zapier, Integromat o incluso un servicio de integración personalizado que pueda ejecutar estos scripts y manejar la comunicación entre SAGE y Shopify.
- Servicio en la nube: Puedes usar servicios en la nube como AWS Lambda, Google Cloud Functions o Microsoft Azure Functions para ejecutar estos scripts. Estos servicios te permiten ejecutar código sin necesidad de gestionar servidores.
Lembre -se de que você precisará ajustar os scripts de acordo com o seu Sage e Shopify Configuration específico e certifique -se de lidar adequadamente com as credenciais e autenticação da API.