موصل WooCommerce
موصل WooCommerce
اربط متجر WooCommerce الخاص بك مع Brevo من خلال Tajo لمزامنة كاملة لبيانات التجارة الإلكترونية. استفد من WooCommerce REST API لمزامنة العملاء والطلبات والمنتجات وبيانات القسائم لحملات تسويقية مستهدفة وسير عمل آلي.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | WooCommerce (WordPress) |
| الفئة | التجارة الإلكترونية |
| تعقيد الإعداد | متوسط |
| تكامل رسمي | لا |
| البيانات المُزامَنة | عملاء، طلبات، منتجات، قسائم |
| المهارات المتاحة | 10 |
الميزات
- مزامنة العملاء - مزامنة بيانات العملاء الآنية مع جهات اتصال Brevo
- تتبع الطلبات - تتبع كامل لأحداث دورة حياة الطلبات لتدفقات ما بعد الشراء
- مزامنة كتالوج المنتجات - مزامنة المنتجات والمتغيرات لتوصيات البريد الإلكتروني
- إدارة القسائم - مزامنة رموز القسائم للحملات الترويجية
- دعم Webhook - تحديثات آنية عبر webhooks WooCommerce
- استرداد السلات المهجورة - تتبع واسترداد السلات المهجورة
- دعم متعدد المواقع - ربط تثبيتات WordPress multisite لـ WooCommerce
- حقول Meta المخصصة - ربط meta المخصصة في WooCommerce بسمات Brevo
المتطلبات الأساسية
قبل البدء، تأكد من توفر ما يلي:
- موقع WordPress مع إضافة WooCommerce مُثبَّتة ومُفعَّلة
- WooCommerce REST API مفعّلة (Settings > Advanced > REST API)
- مفتاح API Consumer Key وConsumer Secret مُولَّدَين
- يجب أن يستخدم موقعك HTTPS لمصادقة API
- حساب Brevo مع وصول إلى API
- حساب Tajo مع بيانات اعتماد API
المصادقة
مفاتيح REST API
يستخدم WooCommerce أزواج Consumer Key وConsumer Secret للمصادقة. ولِّدها في WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (مواقع HTTPS)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"مصادقة سلسلة الاستعلام (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"مستويات الصلاحيات
| الصلاحية | الوصول |
|---|---|
| Read | عرض الموارد فقط |
| Write | إنشاء الموارد وتحريرها |
| Read/Write | وصول CRUD كامل |
الإعداد
الإعداد الأساسي
connectors: woocommerce: enabled: true store_url: "https://yourstore.com" consumer_key: "ck_your_consumer_key" consumer_secret: "cs_your_consumer_secret" api_version: "wc/v3" verify_ssl: true
# Data sync options sync: customers: true orders: true products: true coupons: true
# Brevo list assignment lists: all_customers: 50 buyers: 51 abandoned_cart: 52تعيين حقول العميل
ربط حقول عملاء WooCommerce بسمات Brevo:
customer_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME billing.phone: SMS billing.company: COMPANY billing.city: CITY billing.state: STATE billing.country: COUNTRY billing.postcode: ZIP
# E-commerce metrics (computed) orders_count: ORDER_COUNT total_spent: TOTAL_SPENT date_created: SIGNUP_DATE
# Meta fields meta_data.loyalty_points: LOYALTY_POINTS meta_data.preferred_category: PREF_CATEGORYإعداد Webhook
سجّل webhooks في WooCommerce > Settings > Advanced > Webhooks:
webhooks: - topic: "customer.created" event: "customer_created" - topic: "customer.updated" event: "customer_updated" - topic: "order.created" event: "order_placed" - topic: "order.updated" event: "order_updated" - topic: "order.completed" event: "order_fulfilled" - topic: "order.refunded" event: "order_refunded" - topic: "coupon.created" event: "coupon_created" - topic: "product.created" event: "product_added" - topic: "product.updated" event: "product_updated"نقاط نهاية واجهة البرمجة
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
GET | /wc/v3/customers | سرد العملاء |
POST | /wc/v3/customers | إنشاء عميل |
GET | /wc/v3/customers/{id} | الحصول على عميل |
PUT | /wc/v3/customers/{id} | تحديث عميل |
GET | /wc/v3/orders | سرد الطلبات |
POST | /wc/v3/orders | إنشاء طلب |
GET | /wc/v3/orders/{id} | الحصول على طلب |
GET | /wc/v3/products | سرد المنتجات |
GET | /wc/v3/products/{id} | الحصول على منتج |
GET | /wc/v3/products/{id}/variations | سرد متغيرات المنتج |
GET | /wc/v3/coupons | سرد القسائم |
GET | /wc/v3/reports/sales | الحصول على تقارير المبيعات |
GET | /wc/v3/reports/top_sellers | الحصول على الأكثر مبيعًا |
POST | /wc/v3/webhooks | إنشاء webhook |
أمثلة على الكود
تهيئة موصل WooCommerce
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect WooCommerce storeawait tajo.connectors.connect('woocommerce', { storeUrl: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET});جلب ومزامنة العملاء
// جلب العملاء باستخدام WooCommerce REST APIconst WooCommerce = require('@woocommerce/woocommerce-rest-api').default;
const api = new WooCommerce({ url: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET, version: 'wc/v3'});
// سرد العملاء مع التقسيمconst response = await api.get('customers', { per_page: 100, page: 1, orderby: 'registered_date', order: 'desc'});
const customers = response.data;// [{ id, email, first_name, last_name, billing, shipping, ... }]
// معلومات التقسيم من الترويساتconst totalPages = response.headers['x-wp-totalpages'];const totalItems = response.headers['x-wp-total'];التعامل مع أحداث Webhook
// WooCommerce webhook handlerapp.post('/webhooks/woocommerce', async (req, res) => { const topic = req.headers['x-wc-webhook-topic']; const signature = req.headers['x-wc-webhook-signature'];
// التحقق من توقيع webhook const expectedSignature = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(JSON.stringify(req.body)) .digest('base64');
if (signature !== expectedSignature) { return res.status(401).send('Invalid signature'); }
// إعادة التوجيه إلى Tajo await tajo.connectors.handleWebhook('woocommerce', { topic, payload: req.body });
res.status(200).send('OK');});العمليات المجمّعة
// إنشاء وتحديث وحذف المنتجات بالجملةconst batchResponse = await api.post('products/batch', { create: [ { name: 'New Product', type: 'simple', regular_price: '19.99' } ], update: [ { id: 123, regular_price: '24.99' } ], delete: [456]});حدود المعدل
لا يفرض WooCommerce نفسه حدود معدل API، لكن خادم WordPress الأساسي ومزود الاستضافة قد يفرضان حدودًا:
| العامل | الحد النموذجي | التفاصيل |
|---|---|---|
| استضافة مشتركة | 50-100 طلب/دقيقة | يختلف حسب المضيف |
| استضافة WP المُدارة | 200-500 طلب/دقيقة | WP Engine، Kinsta، إلخ |
| استضافة ذاتية | لا يوجد حد صلب | محدود بموارد الخادم |
| لكل صفحة | 100 سجل كحد أقصى | الافتراضي 10 |
| العمليات المجمّعة | 100 عنصر/دفعة | إنشاء، تحديث، أو حذف |
أداء الخادم
قد تواجه متاجر WooCommerce الكبيرة استجابات API بطيئة. استخدم التقسيم، وحدّد الحقول باستخدام معامل _fields، وجدول المزامنات بالجملة خلال ساعات عدم الذروة.
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الحل |
|---|---|---|
401 Unauthorized | مفاتيح API غير صالحة | أعد توليد Consumer Key/Secret في إعدادات WooCommerce |
403 Forbidden | صلاحيات غير كافية | اضبط مفتاح API على Read/Write |
| أخطاء شهادة SSL | SSL غير صالح على الموقع | تأكد من صلاحية شهادة SSL؛ اضبط verify_ssl: false للاختبار فقط |
| Webhooks لا تعمل | WordPress cron معطَّل | فعّل WP-Cron أو اضبط cron على مستوى الخادم |
| استجابات API بطيئة | قاعدة بيانات كبيرة | حسّن قاعدة بيانات WordPress، استخدم معامل _fields |
| حقول مخصصة مفقودة | بيانات Meta غير معروضة | استخدم حقل meta_data للوصول إلى meta المخصصة |
| مشاكل التقسيم | حجم الصفحة الافتراضي | اضبط per_page صراحةً (الحد الأقصى 100) |
أفضل الممارسات
- استخدم webhooks للمزامنة الآنية - اضبط webhooks WooCommerce بدلاً من استطلاع API
- تحقق من توقيعات webhook - تحقق دائمًا من ترويسة
X-WC-Webhook-Signature - قسّم جميع طلبات القائمة - استخدم معاملات
pageوper_page؛ تحقق من ترويسةX-WP-TotalPages - استخدم معامل
_fields- اطلب فقط الحقول اللازمة لتقليل حجم الاستجابة وتحسين الأداء - العمليات المجمّعة - استخدم نقاط نهاية الدفعات لعمليات الإنشاء/التحديث/الحذف بالجملة (حتى 100 عنصر)
- جدولة المزامنات الكبيرة - شغّل المزامنات الكاملة الأولية خلال ساعات عدم الذروة لتجنب إجهاد الخادم
- فعّل HTTPS - يتطلب WooCommerce API بروتوكول HTTPS لمصادقة OAuth
الأمان
- OAuth 1.0a - مصادقة آمنة عبر أزواج Consumer Key/Secret
- توقيعات HMAC webhook - التحقق من توقيع SHA-256 لـ webhooks الواردة
- HTTPS مطلوب - يتطلب API تشفير TLS للمصادقة
- تحديد نطاق الصلاحيات - يمكن تعيين مفاتيح API على Read أو Write أو Read/Write
- أمان WordPress - يستفيد من تحديثات أمان WordPress الأساسية
- اعتبارات PCI - تُعالَج بيانات الدفع بواسطة بوابات دفع WooCommerce، ولا تُعرَض عبر API