skeeks / cms-shop-paysystem-yapay
Способ оплаты yapay и сплит для SkeekS CMS
Package info
github.com/skeeks-cms/cms-shop-paysystem-yapay
Type:yii2-extension
pkg:composer/skeeks/cms-shop-paysystem-yapay
Requires
- skeeks/cms-shop: ^3.0 || dev-master
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Повторная оплата
При открытии оплаты обработчик берёт MySQL mutex по заказу и читает актуальный
статус попытки в Яндекс Пэй. PENDING повторно использует действующую ссылку,
включая период охлаждения Сплита. Только подтверждённые FAILED и VOIDED
закрывают старый счёт и создают новый; старые внешний ID, ссылка и ответ
сохраняются для истории и уведомлений. Новый счёт даёт новый внешний ID.
Внешний ID новой попытки сохраняется до POST. Потерянный ответ восстанавливается
GET по тому же ID; ORDER_ALREADY_EXISTS также проверяется GET. Ошибка API,
неизвестный статус, оплаченный заказ, авторизация или списание не разрешают
создать ещё одну попытку. Нельзя определять истечение оплаты только по локальному
TTL: статус Яндекса и период охлаждения имеют приоритет.
Проверка без сети и списаний:
php tests/payment-retry.php src/YapayPaysystemHandler.php
Тесты проверяют ротацию истёкшей попытки, сохранение суммы и состава корзины, повторное открытие действующей ссылки, защиту оплаченных заказов, потерянные ответы, ошибки API, период охлаждения и блокировку параллельного запуска.