payway-ar / sdk-php-ventaonline

SDK de BackEnd para Gateway de pago Payway
MIT License
20 stars 17 forks source link

[CRITICAL]: Error en monto a cobrarse en 1.7.2 #57

Open facundocapua opened 1 year ago

facundocapua commented 1 year ago

En el último commit que pertenece al release 1.7.2 se eliminan las llamadas a $this->rmDecAmount que hace amount*100 para deshacerse de los decimales como indica la documentación: https://decidirv2.api-docs.io/1.0/transacciones-simples/ejecucion-del-pago-1

Esto genera que todos los pagos se hagan por un 1% del valor real de la transacción. Por ejemplo si quiero cobrar 2000, el pago se termina haciendo por 20.00.

Esto es un error que puede generar pérdidas millonarias.

NO UTILIZAR ESTA VERSIÓN EN PRODUCCIÓN

Nanod10 commented 1 year ago

@facundocapua Coincido totalmente... creo que deberían haber aumentado el numero de versión principal y advertir de "breaking changes". Estuve con algunos problemas de redondeos de decimales, y cuando revise los commits de la nueva version observe eso y decidi no actualizar. Genere el issue #56

¡¡Genial que hayas advertido al resto!! el problema estaria segun el caso en el manejo de paquetes, la sintaxis de la versión, luego de un "update en composer" pueden llegar a tener este problema si especifican rangos de versiones por ej:

~1.3 que significa: >= 1.3.0.0 y < 2.0.0.0 1.* que significa: >= 1.0.0.0 y < 2.0.0.0

Composer: manejo de versiones por rango

Saludos!

facundocapua commented 1 year ago

Si, tal cual. Lo más seguro para evitar problemas con el composer upgrade sería poner directamente la versión exacta a utilizar. En este caso:

composer require payway-ar/php-sdk-venta-online:1.7.1
nicolaspar commented 1 year ago

Nos encontramos con el mismo inconveniente y vemos que son varios métodos los que cambian en esta versión removiendo este comportamiento del decimal. También notamos extraño que este cambio se contradice con la documentación oficial, que no respete compatibilidades ni cambiaron el major, o como dice Nanod10 implementar un breaking changes.

https://decidirv2.api-docs.io/1.0/transacciones-simples/solicitud-de-token-de-pago-1

image

Levantamos un ticket interno para comprender este alcance pero aún estamos sin novedades.

Si ya estaban integrados y se actualizan sin hacer pruebas sería un gran problema para el negocio instalar la versión 1.7.2!

eugetiendup commented 1 year ago

Hola @Nanod10 ! Estoy teniendo problemas con el formato de los montos porque en la documentacion https://decidirv2.api-docs.io/1.0/prevencion-de-fraude-by-cybersource/1-vertical-retail para transacciones usando el servicio cybersource indica que se manden con el decimal, pero después el monto de la transacción en si hay que mandarlo sin decimales segun lo ultimo que agregaron.. Hicimos una prueba en produccion y terminó cobrando 10 mil pesos para un monto de 100.. y si sigo la docu ahi el monto de la transaccion se envia con decimales: https://github.com/payway-ar/sdk-php-ventaonline#payment

image

No se entiende que se tiene que respetar...

Nanod10 commented 1 year ago

Si, tal cual. Lo más seguro para evitar problemas con el composer upgrade sería poner directamente la versión exacta a utilizar. En este caso:

composer require payway-ar/php-sdk-venta-online:1.7.1

@facundocapua Totalmente especificar la versión exacta para produccion es lo mejor, por suerte es algo que se expone en la documentación, y... quien no cambio eso... no le afecta un composer update

Nos encontramos con el mismo inconveniente y vemos que son varios métodos los que cambian en esta versión removiendo este comportamiento del decimal. También notamos extraño que este cambio se contradice con la documentación oficial, que no respete compatibilidades ni cambiaron el major, o como dice Nanod10 implementar un breaking changes.

https://decidirv2.api-docs.io/1.0/transacciones-simples/solicitud-de-token-de-pago-1 image

Levantamos un ticket interno para comprender este alcance pero aún estamos sin novedades.

Si ya estaban integrados y se actualizan sin hacer pruebas sería un gran problema para el negocio instalar la versión 1.7.2!

@nicolaspar Genial que lo advertiste también! @facundocapua fue el valiente jaja En tu caso citas la documentación de decidir (la cual creería que se corresponde hasta las versiones 1.5.5 y 1.5.6) Habría que ver cual es la "documentación oficial" realmente, porque parece que hay una nueva Doc y Versión de la API, ya bajo el nombre de PayWay y con este tipo de cosas, la Doc Oficial es "relativa" a la versión que implementes... o algo así podría decirse...

No se entiende que se tiene que respetar...

@eugetiendup intentare ayudar aclarando algunos puntos

No confundas las documentaciones.

En este Repo de Github, se hace referencia al SDK de PHP (los ejemplos se muestran con decimales porque el SDK maneja internamente a través del método "rmDecAmount" el correcto formateo para enviarlo a la API como se requiere)

En estas las Urls decidirv2.api-docs.io v1 y v2 se hace referencia a la API (Los ejemplos no tienen decimales, es para cuando implementas directamente la api con CURL o Guzzle o alguna otra librería HTTP y le pegas directo sin usar el SDK)

Por lo que fui aprendiendo sobre Decidir (ex nombre de payway) y Payway, hay varias documentaciones:

WARNING: SI usas el SDK, hasta la versión 1.5.6 DEBES construir los objetos enviando importes con decimales, ya que el método "rmDecAmount" del SDK se encarga de formatear el importe acorde a los requerimientos de la API. Luego en la versiones siguientes quitaron ese método y esta ocasionando problemas...

En mi caso utilizo el SDK v1.5.6 y seteo los importes con decimales. Pero ademas arregle un bug de error de redondeo en las clases que construyen y formatean los objetos para CyberSource, para eso revisa este issue #56 y la solucion esta en este pull request #55

eugetiendup commented 1 year ago

Hola @Nanod10 ! si, el tema es que el sdk tambien menciona a la api para tener en cuenta codigos de referencia, por eso la mencione.

Pero ya lo solucione poniendo fija la version en el composer. Gracias por responder!