open-pay / openpay-php

Openpay PHP bindings
Apache License 2.0
60 stars 29 forks source link

Bug en versión 2.2 Attempted to load class "OpenPay" from the global namespace. Did you forget a “use” statement? #53

Closed glavrjk closed 2 years ago

glavrjk commented 3 years ago

Buenas Tardes, estoy presentando inconvenientes con el mapeado de clases en la implementación del SDK en la plataforma. Verificando pude evidenciar que se hizo una actualización de las librerías y haciendo rollback la versión a 2.1.1 el problema desaparece. Se tiene que cambiar algo en los Controladores (en la 2.1.1 se utiliza "use OpenPay" en el encabezado) para que funcione con la nueva versión? Adjunto capturas del problema y cambio de versionado de las mismas

WhatsApp Image 2021-07-02 at 1 55 50 PM

WhatsApp Image 2021-07-02 at 1 06 11 PM

hectordommo commented 3 years ago

Mismo problema.

glavrjk commented 3 years ago

Mismo problema.

Mientras solucionan lo que hice fue un Revert y dejar la versión fija en el Composer

"require": {
      "php": "^8.0.0",  
      "openpay/sdk": "2.1.1"
}
wrtisans commented 2 years ago

Tengo un problema similar, estoy usando la 2.1.1 pero me da este error Class "Openpay\Data\Openpay" not found

¿alguna idea de cómo solucionarlo?

glavrjk commented 2 years ago

Tengo un problema similar, estoy usando la 2.1.1 pero me da este error Class "Openpay\Data\Openpay" not found

¿alguna idea de cómo solucionarlo?

Asegúrate que estes llamando bien a la clase. Porque cuando llamas desde un controlador debe quedar de la siguiente manera:

<?php

namespace App\Controller;

use Openpay;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class HelloController extends AbstractController {

    /**
     * GENERA UNA TRANSACCION OPENPAY
     * @param string $idCustomer
     * @param array $chargeData
     * @return void
     */
    public function transaction($idCustomer, $chargeData) {
        try {
            Openpay::setProductionMode(filter_var($_ENV['OPENPAY_PRODUCTION'], FILTER_VALIDATE_BOOLEAN));
            $openpay = Openpay::getInstance($_ENV['OPENPAY_MERCHANT'], $_ENV['OPENPAY_SECRET']);
            $customer = $openpay->customers->get($idCustomer);
            $charge = $customer->charges->create($chargeData);
        } catch (\OpenpayApiTransactionError | \OpenpayApiRequestError | \OpenpayApiConnectionError | \OpenpayApiAuthError | \OpenpayApiError | \Exception $e) {
            /** @var Exception $e  */
            error_log('ERROR ' . $e->getCategory() . ': ' . $e->getMessage(), 0);
            return $e;
        }
        return $charge;
    }

}

Según la documentación o mis propios códigos, yo nunca importo una clase llamada "Openpay\Data\Openpay"

antonioreyna commented 2 years ago

Tengo un problema similar, estoy usando la 2.1.1 pero me da este error Class "Openpay\Data\Openpay" not found

¿alguna idea de cómo solucionarlo?

tengo el mismo problema me acaba de pasar antes funcionaba bien, lo solucionaste?

jose-openpay commented 2 years ago

Se hizo la actualización de la librería con versión 2.2.1, donde se resolvieron los problemas descritos anteriormente. Favor de actualizar la librería vía composer, quedamos atentos a sus comentarios.

Saludos !

jose-openpay commented 2 years ago

Favor de revisar la documentación basada en la versión liberada.

https://github.com/open-pay/openpay-php/tree/sdkphpv21

glavrjk commented 2 years ago

El bug continua en la versión 2.2.1

Captura de pantalla 2021-10-11 022938

willvrd commented 2 years ago

Yo probé y ya no me esta apareciendo el error, lo agregue como dice la documentación que menciono @jose-openpay use Openpay\Data\Client as Openpay;

glavrjk commented 2 years ago

Yo probé y ya no me esta apareciendo el error, lo agregue como dice la documentación que menciono @jose-openpay use Openpay\Data\Client as Openpay;

Esa es la solución, no había notado el cambio en la importación. Gracias

jhoanborges commented 2 years ago

Openpay\Data\Openpay as Openpay;

Esto fue lo que me funcionó

Mexicodemilcolorgithub commented 1 year ago

Openpay\Data\Openpay as Openpay;

Esto fue lo que me funcionó

si yo tambien. Fue una problema con namespace.