=== Kasbinoo ===
Contributors: kasbinoo
Tags: woocommerce, mobile, store manager, rest api
Requires at least: 5.8
Tested up to: 6.5
Requires PHP: 7.4
Stable tag: 0.1.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

اتصال فروشگاه ووکامرس به کسبینو برای مدیریت از طریق اپلیکیشن موبایل.

== Description ==

افزونه‌ی کسبینو فروشگاه ووکامرس شما را به سرویس کسبینو متصل می‌کند تا بتوانید
کل فروشگاه را از طریق اپلیکیشن موبایل مدیریت کنید.

ویژگی‌ها:

* اتصال امن با «کد اتصال یک‌بارمصرف» (بدون نیاز به وارد کردن دستی کلید).
* امکان اتصال اولین فروشگاه پیش از خرید اشتراک؛ دسترسی به داده‌ها و مدیریت ووکامرس پس از فعال‌شدن اشتراک باز می‌شود.
* ساخت خودکار Consumer Key / Consumer Secret ووکامرس.
* نمایش وضعیت و مدت باقی‌مانده‌ی اشتراک در یک رابط کاربری ساده.
* ارسال امن eventهای سفارش جدید و هشدار موجودی به بک‌اند کسبینو برای اعلان‌ها.
* آپلود امن تصویر محصول از اپلیکیشن از طریق backend کسبینو و Media Library وردپرس.
* قطع اتصال امن همراه با باطل‌کردن کلید.

== امنیت ==

* انتقال کلیدها فقط روی HTTPS انجام می‌شود.
* Consumer Secret در optionهای افزونه ذخیره نمی‌شود؛ نسخه استاندارد آن در جدول API Key خود ووکامرس می‌ماند و نسخه ارسالی در backend با AES-256-GCM رمزنگاری می‌شود.
* eventهای ووکامرس فقط با `site_token` opaque ارسال می‌شوند و کلیدهای ووکامرس در payload نیستند.
* آپلود تصویر محصول از اپلیکیشن با `site_token` انجام می‌شود و اپلیکیشن هیچ دسترسی مستقیم به وردپرس نمی‌گیرد.
* همه‌ی اقدامات با بررسی دسترسی (capability) و nonce محافظت می‌شوند.
* آدرس API نیز باید HTTPS باشد؛ HTTP فقط با فیلتر صریح توسعه قابل فعال‌سازی است.

== جریان اتصال ==

1. کاربر در پنل کسبینو یک کد اتصال یک‌بارمصرف می‌گیرد.
2. مدیر ووکامرس همان کد را در صفحه افزونه کسبینو وارد می‌کند.
3. افزونه، داخل خود وردپرس/ووکامرس، یک Consumer Key و Consumer Secret با دسترسی `read_write` می‌سازد.
4. افزونه این اطلاعات را همراه با `site_url` و `connection_code` به API کسبینو (`POST /sites/connect`) ارسال می‌کند.
5. اگر سرور اتصال را تأیید کند، option افزونه فقط `site_token` و `key_id` را نگه می‌دارد؛ Consumer Secret فقط در جدول استاندارد API Key ووکامرس و به‌شکل رمزنگاری‌شده در backend وجود دارد.
6. اگر سرور خطا بدهد یا توکن برنگردد، افزونه همان کلید ووکامرس ساخته‌شده را revoke می‌کند تا کلید orphan باقی نماند.
7. هنگام قطع اتصال، افزونه هم backend را مطلع می‌کند و هم کلید ساخته‌شده در ووکامرس را حذف می‌کند.

برای ساخت کد اتصال فقط حساب کاربری کسبینو لازم است و خرید اشتراک الزامی نیست. بدون اشتراک فعال، یک فروشگاه می‌تواند متصل بماند اما backend همه‌ی عملیات خواندن/نوشتن ووکامرس و پردازش eventها را با خطای دسترسی رد می‌کند. پس از خرید یا تمدید اشتراک، همان اتصال و کلیدهای قبلی بدون اتصال مجدد قابل استفاده می‌شوند.

== API داخلی پلاگین ==

این endpointها برای استفاده مستقیم کاربر نیستند و فقط backend کسبینو آن‌ها را با `Authorization: Bearer <site_token>` صدا می‌زند:

* `POST /wp-json/kasbinoo/v1/media` — دریافت multipart field با نام `file`، ذخیره تصویر در Media Library وردپرس و بازگرداندن `{ id, url, mime_type, title, alt_text, metadata }`.

== نصب ==

1. پوشه‌ی `kasbinoo` را در `wp-content/plugins/` قرار دهید.
2. افزونه را از پیشخوان وردپرس فعال کنید (ووکامرس باید فعال باشد).
3. از منوی «کسبینو»، کد اتصال را وارد کنید.

== Changelog ==

= 0.1.1 =
* شفاف‌سازی اتصال بدون اشتراک و نمایش دقیق حالت غیرفعال تا زمان خرید یا تمدید.
* اصلاح لینک خرید اشتراک به پنل کاربری کسبینو.
* جلوگیری از ارسال payload سفارش/موجودی پیش از فعال‌شدن اشتراک و محدودکردن revoke به کلید ساخته‌شده توسط کسبینو.

= 0.1.0 =
* نسخه‌ی اولیه: اتصال/قطع اتصال، ساخت خودکار کلید، نمایش وضعیت اشتراک، ارسال eventهای سفارش/موجودی و endpoint آپلود تصویر محصول.
