{ "info": { "author": "Sipay Plus SL", "author_email": "develop@sipay.es", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# 1. Introducci\u00f3n\nEl siguiente proyecto constituye una SDK en python, que simplifica la ejecuci\u00f3n de llamadas al servicio Ecommerce de Sipay.\n\n# 2. Quickstart\nCon el siguiente ejemplo podr\u00e1s, en pocos pasos, instalar la SDK y efectuar una venta desde una terminal.\n```bash\n $ git clone https://github.com/sipay/python-sdk\n $ pip install ./python-sdk\n $ cd python-sdk\n $ python\n >>> from sipay import Ecommerce\n >>> ecommerce = Ecommerce('etc/config.ini') # Establecer la configuraci\u00f3n como se indica en la secci\u00f3n 4.Configuraci\u00f3n\n >>> from sipay.paymethod.card import Card\n >>> from sipay.amount import Amount\n >>> amount = Amount(100, 'EUR') # 1.00 EUR\n >>> card = Card('4242424242424242', 2050, 1)\n >>> auth = ecommerce.authorization(card, amount)\n >>> if auth.code == 0:\n >>> print(\"Autorizaci\u00f3n aceptada, el pago ha sido completado!\")\n```\n\n# 3. Instalaci\u00f3n\n## Pre-requisitos\n * Versi\u00f3n de python 3.5 o superior.\n\n## Pasos\n ```bash\n $ git clone https://github.com/sipay/python-sdk\n $ pip install ./python-sdk\n ```\n\n# 4. Configuraci\u00f3n\nUna vez que se ha instalado la SDK, se deben actualizar los par\u00e1metros de configuraci\u00f3n asociados a:\n* Sistema de trazas.\n* Credenciales de acceso (Se gestionan con el departamento de integraciones de Sipay).\n* Entorno y versi\u00f3n de la API.\n* Tiempo m\u00e1ximo de espera de respuestas (Timeout).\n\nUn ejemplo de configuraciones se muestra a continuaci\u00f3n:\n```ini\n# **************************************************************\n# LOGGER\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n# Configuraci\u00f3n asociada al sistema de trazas.\n#\n# file: Nombre y ruta del archivo de logs. (Nota: Aconsejable usar rutas absolutas\n# para que se pueda ejecutar el m\u00f3dulo desde diferentes localizaciones).\n# level: Nivel m\u00ednimo de trazas [debug, info, warning, error, critical]\n# max_file_size: Tama\u00f1o m\u00e1ximo del fichero de trazas [bytes]\n# backup_file_rotation: N\u00famero de ficheros de backup\n# ------------------------------------------------------------//\n\n[logger]\nfile=logs/info.log\nlevel=warning\nmax_file_size = 51200000\nbackup_file_rotation = 5\n\n# **************************************************************\n# CREDENTIALS\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n# Credenciales para obtener acceso al recurso.\n#\n# key: Key del cliente\n# secret: Secret del cliente\n# resource: Recurso al que se quiere acceder\n# ------------------------------------------------------------//\n\n[credentials]\nkey=api-key\nsecret=api-secret\nresource=resource\n\n# **************************************************************\n# API\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n# Configuraci\u00f3n de la API.\n#\n# environment: Entorno al que se deben enviar las peticiones ['sandbox', 'staging', 'live']\n# version: Versi\u00f3n de la api a usar actualmente solo existe v1\n# mode: Modo de cifrado de la firma, [sha256, sha512]\n# ------------------------------------------------------------//\n\n[api]\nenvironment=sandbox\nversion=v1\nmode=sha256\n\n# **************************************************************\n# TIMEOUT\n# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n# Configuraci\u00f3n de los tiempos de timeout.\n#\n# connection: Timeout de connexi\u00f3n en segundos\n# process: Timeout de procesamiento en segundos\n# ------------------------------------------------------------//\n\n[timeout]\nconnection=3\nprocess=27\n```\n\n# 5. Documentaci\u00f3n extendida\n\nA trav\u00e9s de peticiones a Sipay mediante Ecommerce, se pueden realizar operativas de:\n* Autorizaciones (secci\u00f3n 5.2.1).\n* Cancelaciones (secci\u00f3n 5.2.2).\n* Devoluciones (secci\u00f3n 5.2.3).\n* B\u00fasquedas de operaciones o querys (secci\u00f3n 5.2.4).\n* Tokenizaci\u00f3n* de tarjetas (secci\u00f3n 5.2.5).\n* B\u00fasqueda de tarjetas tokenizadas (secci\u00f3n 5.2.6).\n* Dar de baja una tarjeta tokenizada (secci\u00f3n 5.2.7).\n* Preautorizaci\u00f3n (secci\u00f3n 5.2.8).\n* Confirmaci\u00f3n de una preautorizaci\u00f3n (secci\u00f3n 5.2.9).\n* Desbloqueo de una preautorizaci\u00f3n (secci\u00f3n 5.2.10).\n\n_* Tokenizaci\u00f3n_: Es un proceso por el cual el PAN (_Primary Account Number_ \u2013 N\u00famero Primario de Cuenta) de la tarjeta se sustituye por un valor llamado token. Esta funcionalidad permite que Sipay guarde los datos de la tarjeta del cliente, para agilizar el proceso de pagos y evitar que se deba introducir, cada vez, los datos de tarjeta, en pagos repetitivos. Sipay realiza el almacenamieno de los datos de forma segura, cumpliendo con las normativas PCI.\n\nPara llevar a cabo de forma correcta las operativas Ecommerce, se requiere el dominio de los objetos `Amount`, `Card`, `StoredCard` y `FastPay`, los cuales identifican el importe y el m\u00e9todo de pago a utilizar.\n\n## 5.1. Objetos necesarios en las operativas de Ecommerce\n\n### **5.1.1. `Amount(amount,currency)`**\n\n#### Definici\u00f3n\n Este objeto representa una cantidad monetaria, por tanto esta cantidad debe ser mayor que cero (0). Para instanciar un objeto de este tipo se necesita una cantidad (amount) y una moneda (currency) en formato ISO4217 (https://en.wikipedia.org/wiki/ISO_4217).\n La cantidad se puede especificar de dos formas:\n * Con un `string` con la cantidad estandarizada y con el caracter punto (`.`) como separador de decimales , o\n * Con un `int` que represente la cantidad en la unidad b\u00e1sica e indivisible de la moneda (por ejemplo de la moneda Euro ser\u00eda el c\u00e9ntimo).\n\n#### Par\u00e1metros\n* **`amount`:** [_obligatorio_] Es la cantidad de dinero a procesar. Se puede representar con un `string` o un `int`. Supongamos que queremos procesar 1.56 \u20ac, la cantidad (1.56) como un `string` ser\u00eda `'1.56'` ; como un `int` ser\u00eda `156`.\n* **`currency`:** [_obligatorio_] Es un `string` que representa el c\u00f3digo de la moneda (ISO4217).\n\n#### Atributos\n* **`amount`:** `int` que representa la cantidad de procesamiento. Ser\u00e1 este tipo de dato, independientemente de si se ha instanciado con un `string` previamente.\n* **`currency`:** `string` que representa el c\u00f3digo de la moneda (ISO4217).\n\n#### Ejemplo\n ```python\n from sipay.amount import Amount\n\n # Con string\n amount = Amount('1.56', 'EUR')\n\n print(amount)\n # Imprime 1.56EUR\n print(amount.amount)\n # Imprime 156\n print(amount.currency)\n # Imprime EUR\n\n # Con unidad indivisible\n amount = Amount(156, 'EUR')\n\n print(amount)\n # Imprime 1.56EUR\n print(amount.amount)\n # Imprime 156\n print(amount.currency)\n # Imprime EUR\n ```\n\n**Nota:** En el caso de iniciarlo con el `string` es imprescindible que tenga el n\u00famero de decimales que indica el est\u00e1ndar ISO4217.\n\n### **5.1.2. `Card(card_number, year, month)`**\n\n#### Definici\u00f3n\nEste objeto representa una tarjeta que se puede utilizar en las diferentes operativas de Ecommerce. Para obtener una instancia de `Card`, los par\u00e1metros se indican a continuaci\u00f3n.\n\n#### Par\u00e1metros\n* **`card_number`:** [_obligatorio_] Es un `string` con longitud entre 14 y 19 d\u00edgitos. Representa el n\u00famero de la tarjeta.\n* **`year`:** [_obligatorio_] Es un `int` de 4 d\u00edgitos que indica el a\u00f1o de caducidad de la tarjeta.\n* **`month`:** [_obligatorio_] Es un `int` de 2 d\u00edgitos con valores entre 1 y 12 que correspondiente al mes de caducidad de la tarjeta.\n\n#### Atributos\n* **`card_number`:** Es el n\u00famero de la tarjeta en una instancia de `Card`. Es un `string` con longitud entre 14 y 19 d\u00edgitos.\n* **`year`:** Es al a\u00f1o de caducidad de la tarjeta en una instancia de `Card`. Es un `int` de 4 d\u00edgitos.\n* **`month`:** Es el mes de caducidad de la tarjeta en una instancia de `Card`. Es un `int` de 2 d\u00edgitos entre 1 y 12.\n\n#### M\u00e9todos\n* **`set_expiration_date(year, month)`:** Permite asignar una fecha de caducidad sobre una instancia de `Card`. Los par\u00e1metros `year` y `month` son obligatorios.\n* **`is_expired()`:** Permite evaluar si una instancia de `Card` tiene una fecha de caducidad v\u00e1lida. Retorna `True` si la tarjeta est\u00e1 expirada. \n\n#### Ejemplo\n```python\n from sipay.paymethod.card import Card\n\n card = Card('4242424242424242', 2050, 2)\n print(card.card_number)\n print(card.year)\n print(card.month)\n\n card.card_number='123451234512345'\n print(card.card_number)\n\n card.set_expiration_date(2021, 12)\n print(card.year)\n print(card.month)\n\n result = card.is_expired()\n print(result)\n\n```\n\n### **5.1.3. `StoredCard(token)`**\n#### Definici\u00f3n\nEste objeto representa una tarjeta almacenada en Sipay que puede utilizarse en operativas Ecommerce. Para obtener una instancia de `StoredCard` se requieren los siguiente par\u00e1metros.\n\n#### Par\u00e1metros\n* **`token`:** [_obligatorio_] Es un `string` de longitud entre 6 y 128 caracteres de tipo alfanum\u00e9ricos y guiones.\n\n#### Atributos\n* **`token`:** `string` de longitud entre 6 y 128 caracteres.\n\n#### Ejemplo\n ```python\n from sipay.paymethod.storedcard import StoredCard\n\n card = StoredCard('token-card')\n print(card.token)\n # Imprime token-card\n\n card.token = 'new-token-card'\n print(card.token)\n # Imprime new-token-card\n\n ```\n### **5.1.4. `FastPay(token)`**\n\n#### Definici\u00f3n\nEste objeto representa una tarjeta obtenida mediante el m\u00e9todo de pago FastPay. Se utiliza en los consecutivos pasos de la operativas de pago de este m\u00e9todo.\n\n#### Par\u00e1metros\n* **`token`:** [_obligatorio_] Es un `string` de longitud 32 con caracteres de tipo hexadecimal.\n\n#### Atributos\n* **`token`:**`string` de longitud 32 caracteres de tipo hexadecimal.\n\n#### Ejemplo\n```python\n from sipay.paymethod.fastpay import FastPay\n\n fp = FastPay('token-fast-pay')\n print(fp.token)\n\n fp = FastPay('new-token-fast-pay')\n print(fp.token)\n\n```\n\n## 5.2. Operativas de Ecommerce - `Ecommerce(config_file)`\n\n#### Descripci\u00f3n\nLas operativas de Ecommerce forman parte de los m\u00e9todos definidos en la clase `Ecommerce`. Para instanciar un objeto de este tipo se requiere el archivo de configuraci\u00f3n.\n\n#### Par\u00e1metros\n* **`config_file`** [_obligatorio_] Es un `string` con la ruta del archivo de configuraciones.\n\n#### Ejemplo\n```python\n from sipay import Ecommerce\n ecommerce = Ecommerce('etc/config.ini')\n```\n#### Atributos\nLos siguientes atributos se asignan en el archivo de configuraciones. Sin embargo, son accesibles en instancias de `Ecommerce`. Se sugiere que sean utilizados en modo de consulta.\n* **`key`:** corresponde al key de las credenciales.\n* **`secret`:** corresponde al secret de las credenciales.\n* **`resource`:** corresponde al resource de las credenciales.\n* **`environment`:** corresponde al entorno al cual se est\u00e1 apuntando.\n* **`mode`:** corresponde el modo de cifrado de las peticiones.\n* **`version`:** corresponde a la versi\u00f3n de la API a la cual se apunta.\n* **`conn_timeout`:** Corresponde al tiempo de espera m\u00e1ximo en establecer una conexi\u00f3n.\n* **`process_timeout`:** Corresponde al tiempo de espera m\u00e1ximo en esperar la respuesta de un proceso.\n\n#### M\u00e9todos\n* **`authorization(parameters)`:** Permite hacer peticiones de autorizaci\u00f3n haciendo uso de los diferentes m\u00e9todos de pago (ver secci\u00f3n 5.2.1).\n* **`cancellation(parameters)`:** Permite enviar peticiones de cancelaciones (ver secci\u00f3n 5.2.2).\n* **`refund(parameters)`:** Permite hacer devoluciones (ver secci\u00f3n 5.2.3).\n* **`query(parameters)`:** Permite hacer peticiones de b\u00fasqueda de operaciones (ver secci\u00f3n 5.2.4).\n* **`register(parameters)`:** Permite tokenizar una tarjeta (ver secci\u00f3n 5.2.5).\n* **`card(parameters)`:** Se utiliza para buscar una tarjeta que fue tokenizada (ver secci\u00f3n 5.2.6).\n* **`unregister(parameters)`:** Se utiliza para dar de baja una tarjeta tokenizada (ver secci\u00f3n 5.2.7).\n\n\n## 5.2.1 **`authorization(paymethod, amount, order='order', reconciliation='reconciliation', custom_01='custom_01', custom_02='custom_02', token='token')`**\n\n### Definici\u00f3n\n Este m\u00e9todo de `Ecommerce` permite enviar una petici\u00f3n de venta a Sipay.\n### Par\u00e1metros\n* **`pay_method`:**[_obligatorio_] Corresponde a una instancia `Card`, `StoredCard` o `FastPay` que indica el m\u00e9todo de pago a utilizar.\n* **`amount `:** [_obligatorio_] Corresponde a una instancia de `Amount` que representa el importe de la operaci\u00f3n.\n* **`order `:** [_opcional_] Es un `string` que representa el ticket de la operaci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n* **`custom_01` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`custom_02` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`token`:** [_opcional_] Es un `string` que representa un token a almacenar. Se utiliza cuando el m\u00e9todo de pago es de tipo `Card` o `Fpay`, y se desea asignar un token espec\u00edfico a la tarjeta utilizada.\n\n### Salida\nEl m\u00e9todo `authorization` devuelve un objeto `Authorization`.\n\n### Ejemplo\n **- Autorizaci\u00f3n con tarjeta**\n ```python\n from sipay.paymethod.card import Card\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n card = Card('4242424242424242', 2050, 2)\n\n auth = ecommerce.authorization(card, amount)\n ```\n\n**- Autorizaci\u00f3n con FastPay**\n ```python\n from sipay.paymethod.fastpay import FastPay\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n fp = FastPay('830dc0b45f8945fab229000347646ca5')\n\n auth = ecommerce.authorization(fp, amount)\n ```\n\n## 5.2.2 `cancellation(transaction_id)`\n\n### Definici\u00f3n\nEste m\u00e9todo permite enviar una petici\u00f3n de cancelaci\u00f3n a Sipay.\n\n### Par\u00e1metros\n* **`transaction_id`:** [_obligatorio_] Es un `string` con el identificador de la transacci\u00f3n.\n\n### Salida\nEl m\u00e9todo `cancellation` devuelve un objeto `Cancellation`.\n\n### Ejemplo\n**- Cancelaci\u00f3n de operaci\u00f3n**\n ```python\n cancel = ecommerce.cancellation('transaction_id')\n ```\n\n## 5.2.3 `refund(identificator, amount, order='order', reconciliation='reconciliation', custom_01='custom_01', custom_02='custom_02', token='token')`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n de devoluci\u00f3n a Sipay.\n\n### Par\u00e1metros\n* **`identificator`:** [_obligatorio_] Es una instancia del m\u00e9todo de pago (`Card`, `StoredCard` o `FastPay`) o, un `string` que representa el identificador de transacci\u00f3n.\n* **`amount `:** [_obligatorio_] Corresponde a una instancia de `Amount` con el importe de la operaci\u00f3n.\n* **`order `:** [_opcional_] Es un `string` que representa el n\u00famero de ticket o boleta de la operaci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n* **`custom_01` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`custom_02` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`token`:** [_opcional_] Corresponde a un `string` que representa un token a almacenar. Se utiliza cuando el identificador es de tipo `Card` o `FastPay`, y se desea asignar un token espec\u00edfico para la tarjeta utilizada.\n\n### Salida\nEl m\u00e9todo `refund` devuelve un objeto `Refund`.\n\n### Ejemplo\n**- Devoluci\u00f3n con tarjeta**\n ```python\n from sipay.paymethod.storedcard import StoredCard\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n card = StoredCard('bd6613acc6bd4ac7b6aa96fb92b2572a')\n\n refund = ecommerce.refund(card, amount)\n ```\n\n**- Devoluci\u00f3n con transaction_id**\n ```python\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n\n refund = ecommerce.refund('transaction_id', amount)\n ```\n\n## 5.2.4 `query(order='order', transaction_id='transaction_id')`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n a Sipay para buscar de una operaci\u00f3n concreta.\n\n### Par\u00e1metros\n El m\u00e9todo requiere al menos uno de los siguientes par\u00e1metros:\n* **`order`:** [_opcional_] `string` que representa el ticket de la operaci\u00f3n.\n* **`transaction_id`:** [_opcional_] `string` que representa el identificador de la transacci\u00f3n.\n\n### Salida\nEl m\u00e9todo `query` devuelve un objeto `Query`.\n\n### Ejemplo\n**- B\u00fasqueda de transacciones**\n\n ```python\n query = ecommerce.query(order='order')\n query = ecommerce.query(transaction_id='transaction_id')\n ```\n\n## 5.2.5 `register(card, token)`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n de tokenizaci\u00f3n de tarjeta a Sipay.\n\n### Par\u00e1metros\n * **`card`:** [_obligatorio_] Instancia de tipo `Card` con la tarjeta a tokenizar.\n * **`token`:**[_obligatorio_] `string` que representa el token que se asociar\u00e1 a la tarjeta.\n\n### Salida\n El m\u00e9todo `register` devuelve un objeto `Register`.\n\n### Ejemplo\n\n**- Registro de tarjeta**\n ```python\n from sipay.paymethod.card import Card\n\n card = Card('4242424242424242', 2050, 2)\n\n masked_card = ecommerce.register(card, 'newtoken')\n ```\n\n## 5.2.6 `card(token)`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n a Sipay con la finalidad de obtener informaci\u00f3n de una tarjeta que est\u00e1 tokenenizada.\n\n### Par\u00e1metros\n* **`token`:**[_obligatorio_] `string` que representa el token asociado a la tarjeta.\n\n### Salida\nEl m\u00e9todo `card` devuelve un objeto `Card` del apartado Responses.\n\n### Ejemplo\n**- B\u00fasqueda de tarjeta**\n ```python\n masked_card = ecommerce.card('newtoken')\n ```\n\n## 5.2.7 `unregister(token)`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n a Sipay con la finalidad de dar de baja una tarjeta tokenizada.\n\n### Par\u00e1metros\n* **`token`:**[_obligatorio_] `string` que representa el token asociado a la tarjeta.\n\n### Salida\nEl m\u00e9todo `unregister` devuelve un objeto `Unregister`.\n\n### Ejemplo\n**- Borrar una tarjeta del registro**\n\n ```python\n unregister = ecommerce.unregister('token')\n ```\n\n## 5.2.8 **`preauthorization(paymethod, amount, order='order', reconciliation='reconciliation', custom_01='custom_01', custom_02='custom_02', token='token')`**\n\n### Definici\u00f3n\n Este m\u00e9todo de `Ecommerce` permite enviar una petici\u00f3n de preautorizaci\u00f3n a Sipay.\n### Par\u00e1metros\n* **`pay_method`:**[_obligatorio_] Corresponde a una instancia `Card`, `StoredCard` o `FastPay` que indica el m\u00e9todo de pago a utilizar.\n* **`amount `:** [_obligatorio_] Corresponde a una instancia de `Amount` que representa el importe de la operaci\u00f3n.\n* **`order `:** [_opcional_] Es un `string` que representa el ticket de la operaci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n* **`custom_01` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`custom_02` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`token`:** [_opcional_] Es un `string` que representa un token a almacenar. Se utiliza cuando el m\u00e9todo de pago es de tipo `Card` o `Fpay`, y se desea asignar un token espec\u00edfico a la tarjeta utilizada.\n\n### Salida\nEl m\u00e9todo `preauthorization` devuelve un objeto `Preauthorization`.\n\n### Ejemplo\n **- Preautorizaci\u00f3n con tarjeta**\n ```python\n from sipay.paymethod.card import Card\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n card = Card('4242424242424242', 2050, 2)\n\n preauth = ecommerce.preauthorization(card, amount)\n ```\n\n**- Preautorizaci\u00f3n con FastPay**\n ```python\n from sipay.paymethod.fastpay import FastPay\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n fp = FastPay('830dc0b45f8945fab229000347646ca5')\n\n preauth = ecommerce.preauthorization(fp, amount)\n ```\n\n## 5.2.9 `confirmation(identificator, amount, order='order', reconciliation='reconciliation', custom_01='custom_01', custom_02='custom_02')`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n de confirmaci\u00f3n sobre una preautorizaci\u00f3n a Sipay.\n\n### Par\u00e1metros\n* **`identificator`:** [_obligatorio_] Puede ser o bien un `string` con el identificador de la transacci\u00f3n o una instacia de la clase Preautorizaci\u00f3n\n* **`amount `:** [_obligatorio_] Corresponde a una instancia de `Amount` con el importe de la operaci\u00f3n.\n* **`order `:** [_opcional_] Es un `string` que representa el n\u00famero de ticket o boleta de la operaci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n* **`custom_01` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`custom_02` :** [_opcional_] Es un `string` que representa un campo personalizable.\n\n### Salida\nEl m\u00e9todo `confirmation` devuelve un objeto `Confirmation`.\n\n### Ejemplo\n**- Confirmaci\u00f3n con transaction_id**\n ```python\n from sipay.amount import Amount\n\n amount = Amount(100, 'EUR') # 1\u20ac\n\n conf = ecommerce.confirmation('transaction_id', amount)\n ```\n **- Confirmaci\u00f3n con una instancia de Preautorizaci\u00f3n**\n ```python\n from sipay.amount import Amount\n\n conf = ecommerce.confirmation('preauth.transaction_id', amount)\n ```\n\n## 5.2.10 `unlock(identificator, amount, order='order', custom_01='custom_01', custom_02='custom_02')`\n\n### Definici\u00f3n\nEste m\u00e9todo `Ecommerce` permite enviar una petici\u00f3n de desbloqueo sobre una preautorizaci\u00f3n a Sipay.\n\n### Par\u00e1metros\n* **`identificator`:** [_obligatorio_] Puede ser o bien un `string` con el identificador de la transacci\u00f3n o una instacia de la clase Preautorizaci\u00f3n\n* **`amount `:** [_obligatorio_] Corresponde a una instancia de `Amount` con el importe de la operaci\u00f3n.\n* **`order `:** [_opcional_] Es un `string` que representa el n\u00famero de ticket o boleta de la operaci\u00f3n.\n* **`custom_01` :** [_opcional_] Es un `string` que representa un campo personalizable.\n* **`custom_02` :** [_opcional_] Es un `string` que representa un campo personalizable.\n\n### Salida\nEl m\u00e9todo `unlock` devuelve un objeto `Unlock`.\n\n### Ejemplo\n**- Desbloqueo con transaction_id**\n```python\n unlock = ecommerce.unlock('transaction_id', amount)\n```\n\n**- Desbloqueo con una instancia de Preautorizaci\u00f3n**\n ```python\n from sipay.amount import Amount\n\n unlock = ecommerce.unlock('preauth.transaction_id', amount)\n ```\n### 5.3 Responses\nTodos los objetos obtenidos como respuestas de operativas `Ecommerce` tienen los siguientes atributos.\n\n#### 5.3.1 Atributos comunes\n* **`type`:** Es un `enum[string]` que identifica el tipo de respuesta:\n * success\n * warning\n * error\n* **`code`:** Es un `int` con el c\u00f3digo identificador del resultado. Es un c\u00f3digo orientativo y no est\u00e1 ligado estrictamente con motivo de la respuesta, es decir, el c\u00f3digo no identifica un\u00edvocamente la respuesta.\n - si `code` es `0`, implica que el resultado es un _success_\n - si `code` es mayor a `0`, implica que el resultado es un _warning_\n - si `code` es menor a `0`, implica que el resultado es un _error_\n* **`detail`:** Es un `string` con el c\u00f3digo alfanum\u00e9rico separado con guiones bajos y sin may\u00fasculas que identifica un\u00edvocamente la respuesta. \u00datil para la gesti\u00f3n de los diferentes casos de uso de una operaci\u00f3n.\n* **`description`:** Es un `string` con la descripci\u00f3n literal del mensaje de respuesta.\n* **`uuid`:** Es un `string` con el identificador \u00fanico de la petici\u00f3n, imprescindible para la trazabilidad.\n* **`request_id`:** Es un `string` utilizado en la finalizaci\u00f3n de algunas operaciones. Se indicar\u00e1n aquellas en las que sea necesario.\n* **`_request`:** Es un `dictionary` que contiene los datos de la petici\u00f3n que se ha hecho al servidor.\n* **`_response`:** Es un `dictionary` que contiene los datos 'raw' de respuesta.\n\n#### 5.3.2 `Authorization`\nEste objeto a\u00f1ade los siguientes atributos:\n* **`amount`:** Objeto de de tipo `Amount` con el importe de la operaci\u00f3n.\n* **`order`:** Es un `string` con el ticket de la operaci\u00f3n.\n* **`card_trade`:** Es un `string` que describe el emisor de la tarjeta.\n* **`card_type`:** Es un `string` con el tipo de la tarjeta.\n* **`masked_card`:** Es un `string` con el n\u00famero de la tarjeta enmascarado.\n* **`reconciliation`:** Es un `string` identificador para la conciliaci\u00f3n bancaria (p37).\n* **`transaction_id`:** Es un `string` identificador de la transacci\u00f3n.\n* **`aproval`:** Es un `string` con el c\u00f3digo de aprobaci\u00f3n de la entidad.\n* **`authorizator`:** Es un `string` con la entidad autorizadora de la operaci\u00f3n.\n\n#### 5.3.3 `Refund`\nEste objeto a\u00f1ade los atributos:\n* **`amount`** Objeto de tipo `Amount` con el importe de la operaci\u00f3n.\n* **`order`:** Es un `string` con el ticket de la operaci\u00f3n.\n* **`card_trade`:** Es un `string` con el emisor de la tarjeta.\n* **`card_type`:** Es un `string` con el tipo de la tarjeta.\n* **`masked_card`:** Es un `string` con con el n\u00famero de la tarjeta enmascarado.\n* **`reconciliation`:** Es un `string` identificador para la conciliaci\u00f3n bancaria (p37).\n* **`transaction_id`:** Es un `string` identificador de la transacci\u00f3n.\n* **`aproval`:** Es un `string` con el c\u00f3digo de aprobaci\u00f3n de la entidad.\n* **`authorizator`:** Es un `string` con la entidad autorizadora de la operaci\u00f3n.\n\n#### 5.3.4 `Query`\nEste objeto a\u00f1ade una lista de transacciones, cada objeto transacci\u00f3n tiene:\n\n**`Transaction`**\n* **`description`:** Es un `string` con descripci\u00f3n literal del estado de la operaci\u00f3n.\n* **`date`:** Es un `datetime` con fecha y hora de la operaci\u00f3n.\n* **`order`:** Es un `string` con el ticket de la operaci\u00f3n.\n* **`masked_card`:** Es un `string` con el n\u00famero de la tarjeta enmascarado.\n* **`operation_name`:** Es un `string` con el nombre literal del tipo de operaci\u00f3n.\n* **`operation`:** Es un `string` identificador del tipo de operaci\u00f3n.\n* **`transaction_id`:** Es un `string` identificador de la transacci\u00f3n.\n* **`status`:** Es un `string` identificador del estado de la operaci\u00f3n.\n* **`amount`:** Es un objeto `Amount` con el importe de la operaci\u00f3n.\n* **`authorization_id`:** Es un `string` identificador de la entidad autorizadora.\n* **`channel_name`:** Es un `string` con el nombre literal del canal de pago.\n* **`channel`:** Es un `string` identificador del canal de pago.\n* **`method`:** Es un `string` identificador del m\u00e9todo de pago.\n* **`method_name`:** Es un `string` identificador literal del m\u00e9todo de pago.\n\n#### 5.3.5 `Register`\nEste objeto a\u00f1ade los siguientes atributos:\n* **`card_mask`:** Es un `string` con el n\u00famero de la tarjeta enmascarado.\n* **`expired_at`:** Es un `date` con fecha de la expiraci\u00f3n.\n* **`token`:** Es un `string` identificador de la tarjeta.\n* **`card`:** Es un objeto `StoredCard` con la tarjeta asociada.\n\n#### 5.3.6 `Cancellation`\nEste objeto no a\u00f1ade nada a lo indicado en los atributos comunes.\n\n#### 5.3.7 `Card`\nEste objeto a\u00f1ade los siguientes atributos:\n* **`card_mask`:** Es un `string` con el n\u00famero de la tarjeta enmascarado.\n* **`expired_at`:** Par\u00e1metro de tipo `date` con la fecha de expiraci\u00f3n de la tarjeta.\n* **`token`:** Es un `string` identificador de la tarjeta.\n* **`card`:** Objeto de tipo `StoredCard` con los datos asociados a la tarjeta devuelta.\n\n#### 5.3.8 `Unregister`\nEste objeto no a\u00f1ade nada a lo descrito en los atributos comunes.\n\n#### 5.3.9 `Preauthorization`\nEste objeto a\u00f1ade los siguientes atributos:\n* **`amount`:** Es un objeto `Amount` con el importe de la operaci\u00f3n.\n* **`order`:** Es un `string` con el ticket de la operaci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n* **`card_trade`:** Es un `string` con el emisor de la tarjeta.\n* **`card_type`:** Es un `string` con el tipo de la tarjeta.\n* **`transaction_id`:** Es un `string` identificador de la transacci\u00f3n.\n* **`card_mask`:** Es un `string` con el n\u00famero de la tarjeta enmascarado.\n* **`aproval`:** Es un `string` con el c\u00f3digo de aprobaci\u00f3n de la entidad.\n* **`authorizator`:** Es un `string` con la entidad autorizadora de la operaci\u00f3n.\n* **`token`:** Es un `string` identificador de la tarjeta.\n\n#### 5.3.10 `Confirm`\nEste objeto a\u00f1ade los siguientes atributos:\n* **`amount`:** Es un objeto `Amount` con el importe de la operaci\u00f3n.\n* **`order`:** Es un `string` con el ticket de la operaci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n* **`card_trade`:** Es un `string` con el emisor de la tarjeta.\n* **`card_type`:** Es un `string` con el tipo de la tarjeta.\n* **`transaction_id`:** Es un `string` identificador de la transacci\u00f3n.\n* **`card_mask`:** Es un `string` con el n\u00famero de la tarjeta enmascarado.\n* **`aproval`:** Es un `string` con el c\u00f3digo de aprobaci\u00f3n de la entidad.\n* **`authorizator`:** Es un `string` con la entidad autorizadora de la operaci\u00f3n.\n* **`sequence`:** Es un `string` con la secuencia de la operaci\u00f3n.\n\n#### 5.3.11 `Unlock`\nEste objeto a\u00f1ade los siguientes atributos:\n* **`order`:** Es un `string` con el ticket de la operaci\u00f3n.\n* **`transaction_id`:** Es un `string` identificador de la transacci\u00f3n.\n* **`reconciliation `:** [_opcional_] Es un `string` que identifica la conciliaci\u00f3n bancaria.\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/sipay/python-sdk", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sipay/python-sdk", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sipay", "package_url": "https://pypi.org/project/sipay/", "platform": "linux", "project_url": "https://pypi.org/project/sipay/", "project_urls": { "Download": "https://github.com/sipay/python-sdk", "Homepage": "https://github.com/sipay/python-sdk" }, "release_url": "https://pypi.org/project/sipay/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "Python SDK", "version": "1.1.0" }, "last_serial": 3875830, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c82fee879e8af82ba33ab5b66a59aa8f", "sha256": "ed0e1827250f0d2f96a9f132777bd90195940ae3d453f4f602aca746c56a3e70" }, "downloads": -1, "filename": "sipay-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c82fee879e8af82ba33ab5b66a59aa8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 28910, "upload_time": "2018-02-26T09:14:27", "url": "https://files.pythonhosted.org/packages/a9/25/830f2c0268d4001588f7ba425fd6b3516395907211aa4a4ab5944bb657dd/sipay-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a809bd854f159faee2188bf28c7a0402", "sha256": "09209fddb918b9ba11b2d8c96d19898972f088b6d119f9cea7cb2e33645215cd" }, "downloads": -1, "filename": "sipay-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a809bd854f159faee2188bf28c7a0402", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24674, "upload_time": "2018-02-26T09:14:28", "url": "https://files.pythonhosted.org/packages/72/34/007d2d19737f624cc6edd7c430f626ad7863fb744c87ccb80111d9e6498a/sipay-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "0b36faad82e2df0c7850ca4fb7185b48", "sha256": "6e9f0e6fd12bac7492535759f872ae64ac34196d7affd75d12e29249ac1a71f4" }, "downloads": -1, "filename": "sipay-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0b36faad82e2df0c7850ca4fb7185b48", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 25056, "upload_time": "2018-05-18T12:40:13", "url": "https://files.pythonhosted.org/packages/63/f6/04c9563572ce3c25ce0eae04d95323c9913a9a8cb1fab1431a156e540588/sipay-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26d704d019f571d869c9d4b66736b7c3", "sha256": "9c510005d31c4c00147b53e0066c080ed3ed8c4a0c1f0ebff56b1b4bb8929e3f" }, "downloads": -1, "filename": "sipay-1.1.0.tar.gz", "has_sig": false, "md5_digest": "26d704d019f571d869c9d4b66736b7c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30207, "upload_time": "2018-05-18T12:40:11", "url": "https://files.pythonhosted.org/packages/91/24/89733840b58c3dd5474a025a4b817591aba1485d81d8fb64dee11a3e1e6b/sipay-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0b36faad82e2df0c7850ca4fb7185b48", "sha256": "6e9f0e6fd12bac7492535759f872ae64ac34196d7affd75d12e29249ac1a71f4" }, "downloads": -1, "filename": "sipay-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0b36faad82e2df0c7850ca4fb7185b48", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 25056, "upload_time": "2018-05-18T12:40:13", "url": "https://files.pythonhosted.org/packages/63/f6/04c9563572ce3c25ce0eae04d95323c9913a9a8cb1fab1431a156e540588/sipay-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26d704d019f571d869c9d4b66736b7c3", "sha256": "9c510005d31c4c00147b53e0066c080ed3ed8c4a0c1f0ebff56b1b4bb8929e3f" }, "downloads": -1, "filename": "sipay-1.1.0.tar.gz", "has_sig": false, "md5_digest": "26d704d019f571d869c9d4b66736b7c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30207, "upload_time": "2018-05-18T12:40:11", "url": "https://files.pythonhosted.org/packages/91/24/89733840b58c3dd5474a025a4b817591aba1485d81d8fb64dee11a3e1e6b/sipay-1.1.0.tar.gz" } ] }