PuntoPagos Python API Documentation — PuntoPagos Python 0.1 documentation

### Navigation

- index
- PuntoPagos Python 0.1 documentation »

# PuntoPagos Python API Documentation

## PuntopagosRequest class

For any operation with puntopagos you need a request object, this object provide 2 methods to create a transaction and retrieve the status. Creating a PuntopagosRequest object is as simple as next example.

    >>> from puntopagos.request import PuntopagosRequest
    >>> request = PuntopagosRequest(key='API-KEY', secret='API-SECRET')

The request instanciated above use a HTTPSConnection from httplib, if you want to use a different kind of connection, you need to emulate the API of this class and pass it as a parameter.

    >>> request = PuntopagosRequest(key='API-KEY', secret='API-SECRET', connection=MyOwnConnection('www.puntopagos.com'))

An useful implementation of this API is HTTPConnection (without the S), if you don’t want SSL encryption.

    >>> request = PuntopagosRequest(key='API-KEY', secret='API-SECRET', connection=HTTPConnection('www.puntopagos.com'))

We provide an useful function to create connections for puntopagos.

    >>> from puntopagos.util import get_connection
    >>> connection = get_connection(ssl=True, sandbox=True, debug=3)
    <httplib.HTTPSConnection instance at 0x1748ef0>
    >>> connection.host
    'sandbox.puntopagos.com'
    >>> connection.debuglevel
    3

## Create a transaction

Creating a transaction needs 4 arguments, `[trx_id, medio_pago, monto, detalle]` as detailed in PuntoPagos - Manual Técnico (REST API) v0.99, p. 3.

    >>> from decimal import Decimal
    >>> from puntopagos.request import PuntopagosRequest
    >>> request = PuntopagosRequest(key='API=KEY', secret='API-SECRET')
    >>> response = request.create(trx_id='123', medio_pago='3', monto=Decimal('2000'), detalle='Foo bar product')

Note the `monto` is a Decimal from built-in module decimal.

## Retrieving the status of a transaction

To retrieve a transaction’s status, you need 3 arguments `[trx_id, monto, token]` as detailed in PuntoPagos - Manual Técnico (REST API) v0.99, p. 7.

    >>> response = request.status(trx_id='123', monto=Decimal('2000'), token='ABF56SDCL2345')

## PuntopagosResponse class

The create and status method both returns a PuntopagosResponse instance. This class provide several attributes for understanding the response of puntopagos.

For instance, if you don’t provide a correct combination between `trx_id`, `monto` and `token` for a status request, puntopagos will return a 400 Bad Request response. You can check the `complete`, if `False` then `http_error` exists and contains the http error code.

    >>> response = request.status(trx_id='123', monto=Decimal('2000'), token='ABF56SDCL2345')
    >>> response.complete
    False
    >>> response.http_error
    400

In case the response is success you will have an immutable attribute `_data` for the info retrieved by puntopagos, and a get_data() method for a `dict` with the same information.

    >>> response = request.status(trx_id='79', monto=Decimal('15000'), token='LY26HNR6XNG8KN9W')
    >>> response.complete
    True
    >>> response.get_data()
    {u'medio_pago': u'3', u'codigo_autorizacion': u'281172', u'medio_pago_descripcion': u'WebPay Transbank', u'tipo_pago': None, u'respuesta': u'00', u'monto': Decimal('15000.00'), u'num_cuotas': 0, u'tipo_cuotas': u'Sin Cuotas', u'fecha_aprobacion': u'2012-01-19T17:07:47', u'primer_vencimiento': None, u'numero_operacion': u'6998364387', u'token': u'LY26HNR6XNG8KN9W', u'trx_id': u'79', u'error': None, u'numero_tarjeta': u'6623', u'valor_cuota': 0}

## Puntopagos known codes

> respuesta | meaning
> --- | ---
> 00 | Transaccion completada OK
> 1 | Transaccion rechazada
> 2 | Transaccion anulada
> 3 | Transaccion ya existe
> 4 | Transaccion no existe
> 5 | Transaccion ya procesada
> 6 | Transaccion incompleta
> 7 | Error del financiador
> 8 | Error del sistema
> 9 | IP no autorizada para realizar esta accion
> 11 | Cargo realizado con problemas, revise su estado de cuenta

### Navigation

- index
- PuntoPagos Python 0.1 documentation »