Skip to content

feat: add transaction status constants - #165

Open
jowyto wants to merge 1 commit into
TransbankDevelopers:developfrom
jowyto:feat/transaction-status-constants
Open

jowyto wants to merge 1 commit into
TransbankDevelopers:developfrom
jowyto:feat/transaction-status-constants

Conversation

@jowyto

@jowyto jowyto commented Oct 6, 2026 •

Copy link
Copy Markdown

Este aporte lo realiza @jowyto en nombre de la organización Capitalizarme, que usa transbank-sdk (Webpay Plus) en producción.

Closes #160

Cambios

  • Nuevo transbank/common/transaction_status.py con TransactionStatus(str, Enum) y los siete estados documentados para el campo status en Confirmar una transacción y Obtener estado de una transacción: INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED, PARTIALLY_NULLIFIED, CAPTURED.
  • Sigue el estilo de IntegrationType (@unique).
  • Hereda de str (en lugar de StrEnum, que no existe en las versiones de Python anteriores a 3.11 que declara setup.py). Por eso, TransactionStatus.AUTHORIZED == "AUTHORIZED" es verdadero, se serializa en JSON como string plano y se puede construir con TransactionStatus(response["status"]). __str__ devuelve el valor, para que formatear un miembro dé AUTHORIZED y no TransactionStatus.AUTHORIZED.
  • No cambia commit(), status(), los schemas, CHANGELOG.md ni la versión.

Uso

from transbank.common.transaction_status import TransactionStatus

response = tx.commit(token)
if response["status"] == TransactionStatus.AUTHORIZED:
    ...

Tests

Nuevo tests/common/test_transaction_status.py. Cubre que los valores coinciden con la lista documentada, la igualdad con str, str() y json.dumps, la construcción desde una respuesta de la API, ValueError para un valor desconocido y que un commit mockeado devuelve el mismo dict de antes.

Antes del cambio: 75 passed. Después:

$ pipenv run tests
============================= test session starts ==============================
platform darwin -- Python 3.12.3, pytest-8.4.1, pluggy-1.6.0
plugins: cov-6.2.1, requests-mock-1.12.1
collected 81 items

tests/common/test_transaction_status.py ......                           [  7%]
tests/patpass_comercio/test_inscription.py ..                            [  9%]
tests/webpay/oneclick/test_mall_bin_info.py ...                          [ 13%]
tests/webpay/oneclick/test_mall_inscription.py .........                 [ 24%]
tests/webpay/oneclick/test_mall_transaction.py ..................        [ 46%]
tests/webpay/plus/test_mall_transaction.py ......................        [ 74%]
tests/webpay/plus/test_transaction.py ...................                [ 97%]
tests/webpay/transaccion_completa/test_mall_transaction.py .             [ 98%]
tests/webpay/transaccion_completa/test_transaction.py .                  [100%]

============================== 81 passed in 0.29s ==============================

Add TransactionStatus enum with the status values documented for the
Webpay Plus API (INITIALIZED, AUTHORIZED, REVERSED, FAILED, NULLIFIED,
PARTIALLY_NULLIFIED, CAPTURED). Members inherit from str, so they compare
equal to the raw values returned by commit and status, which are left
unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants