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) >>> 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 ========= =================================