Автоматично потвърждаване на поръчки за WooCommerce · OpenCart · PrestaShop · Shopify · Wix

Спрете да плащате за пратки, които никой не взима​

Всяка непотърсена поръчка с наложен платеж ви струва двойна куриерска такса — веднъж на отиване, веднъж на връщане. „Потвърди Поръчка" ги спира, преди да тръгнат.

Системата проверява магазина ви на всеки 60 секунди и щом влезе нова поръчка, сама набира клиента. По телефона клиентът избира:

  • Натисни 1 — потвърждавам поръчката
  • Натисни 2 — отказвам
  • Натисни 3 — обадете ми се пак
Статусът се обновява автоматично в админ панела на магазина. Без служител, който да звъни на всеки клиент.

🔁 Не изпуска нито един клиент. Обажданията се повтарят до установяване на контакт. Не отговори ли клиентът — може да върне обаждането и да потвърди по-късно.

🚫 Блокирай некоректните — веднъж завинаги. Върнал ти е пратка? Блокираш номера и той повече не може да поръчва от нито един магазин, който ползва системата.

📞 Обаждане, а не SMS. SMS-ите често не стигат до пренесени номера и остават непрочетени. Гласовото обаждане е пряк контакт и мигновена реакция.

Работи с твоята платформа: WooCommerce · OpenCart · PrestaShop · Shopify · Wix — а за всяка друга платформа: импорт на номера с Excel + собствена IVR логика и твои аудио съобщения.

📱 Обади се сега: 0888913737​

 
Прегледах целия ZIP. Плъгинът е малък — 2 файла, няма обфускация, eval, shell команди, скрити файлове или очевиден malware. PHP синтаксисът е валиден.

За публичен WooCommerce сайт обаче не бих го инсталирал в този вид.

Най-сериозните проблеми:

  1. Критичен: еднакъв hardcoded API token
define('PBX_SHARED_TOKEN', 'pbx-bgtel-2026-a7f3c9e2b4d16580');
Той е директно в кода. Ако този ZIP се дава на повече клиенти, практически трябва да приемеш, че token-ът е публичен.

С него endpoint-ът позволява:

  • да се получи order_id + телефон на клиент;
  • да се променя статусът на произволна съществуваща поръчка чрез return_request;
  • да се влияе кои поръчки се прозвъняват чрез nocall.
IP проверката не решава това, защото условието е:

if (!wc_pbx_validate_source('voip.bgtel.tel') && !wc_pbx_token_ok())
Тоест валиден token сам по себе си е достатъчен.

  1. Критичен privacy проблем: записва token-и и телефони в базата
Логва цялото:

'request_data' => json_encode($_GET),
'response_data' => json_encode($response),
Следователно при dial_request в таблицата остават:

  • token;
  • order ID;
  • телефонният номер на клиента;
  • IP;
  • timestamp.
Няма и cleanup/retention. Таблицата може да расте безкрайно.

Освен това token в GET URL може да попадне и в:

  • nginx/Apache access log;
  • reverse proxy логове;
  • WAF/CDN логове;
  • monitoring системи.
API credentials не трябва да се пращат по този начин.

  1. Много лошо operational поведение: създава PHP файл извън плъгина
При активация:

file_put_contents(ABSPATH . 'pbx_api.php', ...)
Тоест създава:

/public_html/pbx_api.php
И дори документацията изрично казва, че endpoint-ът остава да работи след деактивиране.

Още по-лошо: admin_init проверява файла и може автоматично да го презапише. Ако вече съществува друг /pbx_api.php, който няма очаквания version marker, плъгинът може да го унищожи.

За WordPress плъгин това е неприемливо поведение според мен.

  1. Умишлено затруднява премахването си
Прави:

unset($links['deactivate'], $links['delete']);
Технически администраторът пак може да го премахне по други начини, но плъгин не трябва да крие стандартните WordPress контроли.

И най-важното: дори да изтриеш директорията му, /pbx_api.php остава.

Тоест може да си мислиш, че плъгинът е махнат, а API endpoint-ът да продължава да приема заявки.

  1. HPOS съвместимостта е съмнителна
Работи с WooCommerce поръчки чрез:

get_post_meta()
update_post_meta()
вместо WooCommerce CRUD:

$order->get_meta()
$order->update_meta_data()
$order->save()
При съвременен WooCommerce с HPOS това е лош подход и може да има проблеми при конфигурации без синхронизация към wp_posts/wp_postmeta.

За нов плъгин през 2026 г. това бих го счел за реален дефект.

  1. Няма locking при взимане на поръчка
dial_request намира pending order и го връща, но не го „claim“-ва атомарно.

Две почти едновременни заявки от PBX могат да получат една и съща поръчка и да стартират две обаждания.

_pbx_seen се записва, но не участва в избора и не предотвратява race condition.

  1. Повторните обаждания не се контролират от плъгина
За status 95:

wc_pbx_find_retry()
може многократно да върне същата поръчка. Няма:

  • брояч на опитите;
  • минимален интервал;
  • максимален брой опити.
Коментарът казва „до лимита“, но такъв лимит в кода няма. Очевидно се разчита изцяло на външната централа.

  1. orderby => rand върху поръчки
За retry:

'orderby' => 'rand'
При голям магазин това може да бъде неоптимално. Не е security проблем, но е ненужно.

  1. Несъответствие README ↔ реален код
README е за версия 2.0.1, плъгинът е 2.1.4.

README твърди, че COD се звъни винаги, а другите методи се включват от WooCommerce настройки. Реалният код вече няма такива настройки и централата управлява nocall.

Това подсказва, че документацията не се поддържа надеждно.

Положителното е, че не виждам класически backdoor или malware. Няма:

  • eval/base64_decode;
  • изпълнение на shell;
  • remote code download;
  • създаване на WordPress потребители;
  • директен подозрителен SQL;
  • произволно четене на файлове;
  • очевиден XSS в админ страницата.
Затова оценката ми е:

Malware: не изглежда да е malware.
Качество на кода: средно/ниско.
Security design: слаб.
Подходящ за публичен production WooCommerce: не в сегашния вид.


Най-опасният сценарий е прост: ако някой получи този ZIP или token-а, може да направи заявка към известен магазин с /pbx_api.php, да получава телефоните на клиентите му и да променя статуси на поръчки.

Преди да го сложа бих изискал минимум: уникален secret за всеки магазин, authentication в HTTP header вместо GET, никакво логване на secret/телефон, endpoint през WordPress REST API вместо root PHP файл, HPOS CRUD, atomic locking и нормална деинсталация.
 
Прегледах целия ZIP. Плъгинът е малък — 2 файла, няма обфускация, eval, shell команди, скрити файлове или очевиден malware. PHP синтаксисът е валиден.

За публичен WooCommerce сайт обаче не бих го инсталирал в този вид.

Най-сериозните проблеми:

  1. Критичен: еднакъв hardcoded API token
define('PBX_SHARED_TOKEN', 'pbx-bgtel-2026-a7f3c9e2b4d16580');
Той е директно в кода. Ако този ZIP се дава на повече клиенти, практически трябва да приемеш, че token-ът е публичен.

С него endpoint-ът позволява:

  • да се получи order_id + телефон на клиент;
  • да се променя статусът на произволна съществуваща поръчка чрез return_request;
  • да се влияе кои поръчки се прозвъняват чрез nocall.
IP проверката не решава това, защото условието е:

if (!wc_pbx_validate_source('voip.bgtel.tel') && !wc_pbx_token_ok())
Тоест валиден token сам по себе си е достатъчен.

  1. Критичен privacy проблем: записва token-и и телефони в базата
Логва цялото:

'request_data' => json_encode($_GET),
'response_data' => json_encode($response),
Следователно при dial_request в таблицата остават:

  • token;
  • order ID;
  • телефонният номер на клиента;
  • IP;
  • timestamp.
Няма и cleanup/retention. Таблицата може да расте безкрайно.

Освен това token в GET URL може да попадне и в:

  • nginx/Apache access log;
  • reverse proxy логове;
  • WAF/CDN логове;
  • monitoring системи.
API credentials не трябва да се пращат по този начин.

  1. Много лошо operational поведение: създава PHP файл извън плъгина
При активация:

file_put_contents(ABSPATH . 'pbx_api.php', ...)
Тоест създава:

/public_html/pbx_api.php
И дори документацията изрично казва, че endpoint-ът остава да работи след деактивиране.

Още по-лошо: admin_init проверява файла и може автоматично да го презапише. Ако вече съществува друг /pbx_api.php, който няма очаквания version marker, плъгинът може да го унищожи.

За WordPress плъгин това е неприемливо поведение според мен.

  1. Умишлено затруднява премахването си
Прави:

unset($links['deactivate'], $links['delete']);
Технически администраторът пак може да го премахне по други начини, но плъгин не трябва да крие стандартните WordPress контроли.

И най-важното: дори да изтриеш директорията му, /pbx_api.php остава.

Тоест може да си мислиш, че плъгинът е махнат, а API endpoint-ът да продължава да приема заявки.

  1. HPOS съвместимостта е съмнителна
Работи с WooCommerce поръчки чрез:

get_post_meta()
update_post_meta()
вместо WooCommerce CRUD:

$order->get_meta()
$order->update_meta_data()
$order->save()
При съвременен WooCommerce с HPOS това е лош подход и може да има проблеми при конфигурации без синхронизация към wp_posts/wp_postmeta.

За нов плъгин през 2026 г. това бих го счел за реален дефект.

  1. Няма locking при взимане на поръчка
dial_request намира pending order и го връща, но не го „claim“-ва атомарно.

Две почти едновременни заявки от PBX могат да получат една и съща поръчка и да стартират две обаждания.

_pbx_seen се записва, но не участва в избора и не предотвратява race condition.

  1. Повторните обаждания не се контролират от плъгина
За status 95:

wc_pbx_find_retry()
може многократно да върне същата поръчка. Няма:

  • брояч на опитите;
  • минимален интервал;
  • максимален брой опити.
Коментарът казва „до лимита“, но такъв лимит в кода няма. Очевидно се разчита изцяло на външната централа.

  1. orderby => rand върху поръчки
За retry:

'orderby' => 'rand'
При голям магазин това може да бъде неоптимално. Не е security проблем, но е ненужно.

  1. Несъответствие README ↔ реален код
README е за версия 2.0.1, плъгинът е 2.1.4.

README твърди, че COD се звъни винаги, а другите методи се включват от WooCommerce настройки. Реалният код вече няма такива настройки и централата управлява nocall.

Това подсказва, че документацията не се поддържа надеждно.

Положителното е, че не виждам класически backdoor или malware. Няма:

  • eval/base64_decode;
  • изпълнение на shell;
  • remote code download;
  • създаване на WordPress потребители;
  • директен подозрителен SQL;
  • произволно четене на файлове;
  • очевиден XSS в админ страницата.
Затова оценката ми е:

Malware: не изглежда да е malware.
Качество на кода: средно/ниско.
Security design: слаб.
Подходящ за публичен production WooCommerce: не в сегашния вид.


Най-опасният сценарий е прост: ако някой получи този ZIP или token-а, може да направи заявка към известен магазин с /pbx_api.php, да получава телефоните на клиентите му и да променя статуси на поръчки.

Преди да го сложа бих изискал минимум: уникален secret за всеки магазин, authentication в HTTP header вместо GET, никакво логване на secret/телефон, endpoint през WordPress REST API вместо root PHP файл, HPOS CRUD, atomic locking и нормална деинсталация.
чукни му телефона в гугъл и ще разбереш кой стои зад профила му.... г-н Бизнес Брокера :-)
 
Прегледах целия ZIP. Плъгинът е малък — 2 файла, няма обфускация, eval, shell команди, скрити файлове или очевиден malware. PHP синтаксисът е валиден.

За публичен WooCommerce сайт обаче не бих го инсталирал в този вид.

Най-сериозните проблеми:

  1. Критичен: еднакъв hardcoded API token
define('PBX_SHARED_TOKEN', 'pbx-bgtel-2026-a7f3c9e2b4d16580');
Той е директно в кода. Ако този ZIP се дава на повече клиенти, практически трябва да приемеш, че token-ът е публичен.

С него endpoint-ът позволява:

  • да се получи order_id + телефон на клиент;
  • да се променя статусът на произволна съществуваща поръчка чрез return_request;
  • да се влияе кои поръчки се прозвъняват чрез nocall.
Токена не е hard-coded, различен е за магазините. Всеки реално работещ магазин работи със собствен уникален секрет. Значи сценарият „вземаш зипа/токена и удряш чужд магазин" не важи — токенът от зипа не отваря ничий реален магазин. Това е примерен файл и токенът в него не работи. :)

IP проверката не решава това, защото условието е:

if (!wc_pbx_validate_source('voip.bgtel.tel') && !wc_pbx_token_ok())
Тоест валиден token сам по себе си е достатъчен.
if (!wc_pbx_validate_source('voip.bgtel.tel') && !wc_pbx_token_ok()) {
http_response_code(403);
exit('Access denied');
}

За това сте изпуснали една мъничка подробност. В тази проверка се указва че при изпълнено едно условие, завката следва да продължи.

Пусни, ако IP е валиден ИЛИ токенът е валиден (OR). → едното стига.

Причината за това е един много интересен edge case: IP проверката пада, ако заявката до магазина не идва директно с IP-то на централата — напр. магазин зад Cloudflare/прокси (тогава REMOTE_ADDR е на CDN-а - ако няма настроен мод за пропускане на реалното клиентско IP преди CF), NAT, или IPv4/IPv6 разминаване. При тези магазини AND ще блокира легитимната централа и потвърждаването спира. OR е бил резервният изход за такива случаи.
  1. Критичен privacy проблем: записва token-и и телефони в базата
Логва цялото:

'request_data' => json_encode($_GET),
'response_data' => json_encode($response),
Следователно при dial_request в таблицата остават:

  • token;
  • order ID;
  • телефонният номер на клиента;
  • IP;
  • timestamp.
Няма и cleanup/retention. Таблицата може да расте безкрайно.
Освен това token в GET URL може да попадне и в:

  • nginx/Apache access log;
  • reverse proxy логове;
  • WAF/CDN логове;
  • monitoring системи.
API credentials не трябва да се пращат по този начин.
Логовете в хостинга и другите свързани системи са по принцип грижа на магазина. Услугата поема задължение да прозвъни поръчката и да промени статуса. Търговец може да почисти своите логове (вкл. и CDN, reverse proxy).

  1. Много лошо operational поведение: създава PHP файл извън плъгина
При активация:

file_put_contents(ABSPATH . 'pbx_api.php', ...)
Тоест създава:

/public_html/pbx_api.php
И дори документацията изрично казва, че endpoint-ът остава да работи след деактивиране.

Още по-лошо: admin_init проверява файла и може автоматично да го презапише. Ако вече съществува друг /pbx_api.php, който няма очаквания version marker, плъгинът може да го унищожи.

За WordPress плъгин това е неприемливо поведение според мен.

1. Умишлено затруднява премахването си
Прави:
unset($links['deactivate'], $links['delete']);
Технически администраторът пак може да го премахне по други начини, но плъгин не трябва да крие стандартните WordPress контроли.

И най-важното: дори да изтриеш директорията му, /pbx_api.php остава.

Тоест може да си мислиш, че плъгинът е махнат, а API endpoint-ът да продължава да приема заявки.
Endpoint-ът е пасивен, когато централата не го гледа , поръчките няма как да бъдат прозвънявани. Ако изтриете плъгина, позвъняванията също ще спрат (маркирате го и отгоре има опция да се изтрие). pbx_api ще вика access_denied на всеки. Централата няма задължение да прозвънява хора, които не ползват услугата (дори и да има endpoint наличен).

  1. HPOS съвместимостта е съмнителна
Работи с WooCommerce поръчки чрез:

get_post_meta()
update_post_meta()
вместо WooCommerce CRUD:

$order->get_meta()
$order->update_meta_data()
$order->save()
При съвременен WooCommerce с HPOS това е лош подход и може да има проблеми при конфигурации без синхронизация към wp_posts/wp_postmeta.

За нов плъгин през 2026 г. това бих го счел за реален дефект.
Досега доколкото знам от "брокера" , няма оплакване. Ползва се от стар и от нов магазин.

  1. Няма locking при взимане на поръчка
dial_request намира pending order и го връща, но не го „claim“-ва атомарно.

Две почти едновременни заявки от PBX могат да получат една и съща поръчка и да стартират две обаждания.

_pbx_seen се записва, но не участва в избора и не предотвратява race condition.
Централата взима заявките, прозвънява ги последователно , връща статусите и изтрива своето знание за тези поръчки автоматично. Това няма как да го разберете от zip файла.

1. Повторните обаждания не се контролират от плъгина
За status 95:

wc_pbx_find_retry()
може многократно да върне същата поръчка. Няма:
  • брояч на опитите;
  • минимален интервал;
  • максимален брой опити.
Коментарът казва „до лимита“, но такъв лимит в кода няма. Очевидно се разчита изцяло на външната централа.
Правилно, плъгина не ги контролира - централата си има панел за всеки магазинер и се контролират там. :)

  1. orderby => rand върху поръчки
За retry:

'orderby' => 'rand'
При голям магазин това може да бъде неоптимално. Не е security проблем, но е ненужно.
Има 'limit' => 100 на броя поръчки.

  1. Несъответствие README ↔ реален код
README е за версия 2.0.1, плъгинът е 2.1.4.

README твърди, че COD се звъни винаги, а другите методи се включват от WooCommerce настройки. Реалният код вече няма такива настройки и централата управлява nocall.

Това подсказва, че документацията не се поддържа надеждно.
Документацията не се поддържа заради "разбирачи" - все пак нямаше да получим толкова подробна оценка ако всичко беше описано в документацията. :)

Положителното е, че не виждам класически backdoor или malware. Няма:
  • eval/base64_decode;
  • изпълнение на shell;
  • remote code download;
  • създаване на WordPress потребители;
  • директен подозрителен SQL;
  • произволно четене на файлове;
  • очевиден XSS в админ страницата.
Плъгина не цели да създава дупки в сигурността и главоболие за магазинерите , а да помогне за превенция на поведението на недобросъвестни клиенти, за които има отделно добавена опция за блокиране (така че некоректен клиент да не може да поръчва от други магазини ползващи същата услуга).

Затова оценката ми е:

Malware: не изглежда да е malware.
Качество на кода: средно/ниско.
Security design: слаб.
Подходящ за публичен production WooCommerce: не в сегашния вид.


Най-опасният сценарий е прост: ако някой получи този ZIP или token-а, може да направи заявка към известен магазин с /pbx_api.php, да получава телефоните на клиентите му и да променя статуси на поръчки.

Преди да го сложа бих изискал минимум: уникален secret за всеки магазин, authentication в HTTP header вместо GET, никакво логване на secret/телефон, endpoint през WordPress REST API вместо root PHP файл, HPOS CRUD, atomic locking и нормална деинсталация.

Имате ли магазин , на които да го сложите? :)

Все пак може да не работи за всички магазинери и всички магазини, но е предвиден безплатен тест - всеки може да си пробва и да си прецени дали работи или е прищявка на програмиста.

Написах горепосочените коментари, като участничка в тестването/QA на плъгина с демо магазини. Работеше перфектно.

По принцип мисля че е редно да се коментира един проект, едва когато познавате напълно цялата система (напр. тук сте тествали и панела и функционалността). Ще предам (а и "брокера" ще прочете частта от оценката, по която сте изложили според мен валиден аргумент и ако реши ще ги коригира). :)
 
А вместо да пишете глупости можеше да каже ок, ще погледнем…
Да ви имам маркетинга
 
На кого да имаш маркетинга ? Мислех да не ти отговарям защото не го правиш за първи път. Явно си тъп по рождение или гена ти е сбъркан. Няколко пъти вече си даваш мнението без да съм ти го искал а това говори вместо мен зле за тебе господин критик. Хубаво е да не коментираш нещо което не познаваш в детайли. Само се излагаш.
 
ние не продаваме защото си имаме пари - това е разликата
Разликата е че може и да нямаш какво да продаваш а аз знам защо продавам, по финансови причини разбирай спекула, купил съм на евтино и продавам на хора с пари като тебе.
 
Разликата е че може и да нямаш какво да продаваш а аз знам защо продавам, по финансови причини разбирай спекула, купил съм на евтино и продавам на хора с пари като тебе.
нямаш стока която бих купил .... особенно като гледам какъв аматьор си.... прав е @Sky и не можеш на малкия му пръст да стъпиш.... човека има много за показване и продаване , но ти като си прост това е за цял живот
 
Олигофрените като вас двама изпъкват с простотията си. Във есеки пост си турвяте задниците да серете .
незнам в случая кой е олигофрена.... айде бегом марш от форума
 
Ето за пореден път показваш истинското си комплексарско мислене, този форум не е на баща ти че да гониш хората.
на вуйчо ми е... а те гоня защото те знаем кой си и си безполезен като цяло...
 

Горе