=== WooCommerce Bale Payment Gateway ===
Contributors: hamedfarahabadi
Tags: woocommerce, bale, payment, bot, webhook
Requires at least: 6.5
Requires PHP: 7.4
Stable tag: 1.7.1
License: GPLv2 or later

درگاه پرداخت بله برای WooCommerce با پشتیبانی از ربات اختصاصی و ربات‌هایی که از قبل Webhook دارند.

== Payment flow ==

WooCommerce Checkout
-> Bale bot deep link
-> /start wcbp_SIGNED_ORDER
-> sendInvoice
-> PreCheckoutQuery
-> answerPreCheckoutQuery
-> SuccessfulPayment
-> inquireTransaction
-> WooCommerce payment_complete

== Webhook modes ==

1. Dedicated bot
ربات فقط برای پرداخت استفاده می‌شود و Webhook آن مستقیم روی افزونه تنظیم می‌شود.

2. Existing Webhook compatibility / Proxy
افزونه ابتدا getWebhookInfo را اجرا می‌کند.
اگر Webhook قبلی وجود داشته باشد، آن را ذخیره می‌کند.
سپس Webhook ربات را روی افزونه تنظیم می‌کند.
Updateهای WooCommerce توسط افزونه پردازش می‌شوند.
سایر Updateها با همان JSON به Webhook قبلی Forward می‌شوند.

3. Manual
افزونه Webhook ربات را تغییر نمی‌دهد.

== Routing rules ==

Handled by WooCommerce:
* /start wcbp_...
* pre_checkout_query whose invoice_payload begins with wc|
* successful_payment whose invoice_payload begins with wc|

Forwarded to previous Webhook in proxy mode:
* normal messages
* callback_query
* normal /start
* edited_message
* non-WooCommerce payment updates
* other Bale updates

== Restore ==

در تنظیمات گزینه‌ای برای بازگردانی Webhook قبلی وجود دارد.
پس از بازیابی، حالت اتصال به Manual تغییر می‌کند.

== Security ==

* HMAC signed WooCommerce deep links.
* Signed invoice payload.
* Secret-protected WooCommerce webhook endpoint.
* Duplicate Update protection.
* Loop protection using X-WCBP-Relay.
* HTTPS validation for previous webhook.
* WooCommerce payment amount, currency and Bale user validation.
* Server-side inquireTransaction verification before payment_complete.

== Notes ==

* مبلغ API بله به ریال است.
* توکن آزمایشی کیف پول:
  WALLET-TEST-1111111111111111
* Refund در این نسخه فعال نیست.
* Checkout Blocks هنوز به‌صورت اختصاصی پیاده‌سازی نشده است.

== Changelog ==

= 1.7.0 =
* اضافه شدن سه حالت Dedicated / Proxy / Manual.
* تشخیص خودکار Webhook قبلی با getWebhookInfo.
* ذخیره Webhook قبلی پیش از setWebhook.
* Webhook Router برای حفظ عملکرد ربات قبلی.
* Forward پیام‌ها و Updateهای غیرمرتبط به Webhook قبلی.
* تشخیص اختصاصی Updateهای WooCommerce از روی start payload و invoice_payload.
* جلوگیری از Loop در Relay.
* دکمه/گزینه بازیابی Webhook قبلی.
* Timeout قابل تنظیم برای Webhook قبلی.
* حفظ منطق sendInvoice، PreCheckoutQuery، SuccessfulPayment و inquireTransaction.


== ionCube build ==

فایل woocommerce-bale-payment.php عمداً Encode نمی‌شود.
فایل‌های داخل includes/ باید با ionCube Encoder Encode شوند.

نسخه انتشار نیازمند ionCube Loader روی هاست کاربر است.

= 1.7.1 =
* آماده‌سازی ساختار برای انتشار ionCube.
* بررسی ionCube Loader قبل از لود فایل‌های Encode شده.
* جلوگیری از فعال‌سازی افزونه در صورت نبود Loader.
* نگه داشتن Bootstrap و Header افزونه به صورت خوانا.
