Hola @miguelhub. El problema que describes es muy común con módulos de pago personalizados en PrestaShop 1.7.x. Tu código para el método install() está casi correcto, pero como bien ha apuntado @pabloiberia17, te falta registrar el hook paymentReturn.
Este hook es crucial porque es el que se encarga de procesar la respuesta final del proveedor de pago (en este caso, Perfect Money) y de actualizar el estado del pedido en tu tienda. Sin él, el flujo de pago se interrumpe y PrestaShop no sabe qué hacer una vez que el cliente regresa de la pasarela. Además, revisa las restricciones de módulos de pago por país, divisa y grupo de clientes en Pagos > Preferencias en el Back Office, como sugiere @maria96.
Aquí tienes el install() corregido con el hook paymentReturn:
public function install()
{
if (!parent::install() ||
!$this->registerHook('paymentOptions') ||
!$this->registerHook('paymentReturn') || // <-- Esto es lo que faltaba
!Configuration::updateValue('PM_ACCOUNT_ID', '') ||
!Configuration::updateValue('PM_MEMO', 'Pago de pedido PrestaShop')
) {
return false;
}
Con esta modificación, tu módulo debería poder manejar el retorno de la pasarela de pago. Para una integración más robusta y sin tener que mantener código personalizado que puede romperse con las actualizaciones de PrestaShop, te sugiero que eches un vistazo al módulo Perfect Money. Está diseñado para funcionar sin problemas y ofrece todas las características necesarias.