Package: transbank-pos-sdk
Transbank Python POS SDKSDK Oficial de Transbank para POS integradoRequisitos:Python 3.4+InstalaciónPuedes instalar el SDK directamentepipinstalltransbank-pos-sdk¿Cómo se usa?Como se explica más abajo, la documentación oficial está enTransbank developers, pero como una breve introducción:listPorts()Devuelve una lista de los puertos disponibles.fromtransbankimportPOSIntegradoPOS=POSIntegrado()ports=POS.list_ports()print(ports)open_port(port: str)Abre el puerto indicado. RetornaTruesi logra abrir el puerto, en caso contrario retornaFalse.port="/dev/cu.usbmodem0123456789ABCD1"print(POS.open_port(port))close_port()Cierra el puerto que se haya abierto previamente.print(POS.close_port())poll()Ejecuta el comandoPOLLen el POS. RetornaTruesi el POS se encuentra conectado.print(POS.poll())load_keys()Ejecuta el comandoload keysen el POS.print(POS.load_keys())sale(amount: int, ticket: str, send_status=False, callback=None)Ejecuta el comandosaleen el POS.amountes el integer que representa el monto a pagar.ticketes un número de ticket  que te permita
referenciar la venta internamente.SisendStatusesfalseel POS solo enviará un mensaje cuando se termine el proceso de venta. SisendStatusesfalseel POS enviará mensajes a medida que se va avanzando en el proceso  (se selecciona método de pago,
el usuario pasa la tarjeta, se ingresa la clave, etc). Estos mensajes de estados intermedios se pueden capturar
definiendo una función en el parámetrocallback# Venta con mensajes intermediosdefintermediate_message_callback(response):print("Intermediate message:{}".format(str(response['response_message'])))print(POS.sale(25000,"abcd12",True,callback=intermediate_message_callback))# Venta sin mensajes intermediosprint(POS.sale(25000,"123456"))multicode_sale(amount: int, ticket: str, commerce_code: int, send_status=False, callback=None)Ejecuta el comandomulticode saleen el POS.amountes el integer que representa el monto a pagar.ticketes un número de ticket  que te permita
referenciar la venta internamente.commerce_codees el código de comercio que ejecutara la ventaSisendStatusesfalseel POS solo enviará un mensaje cuando se termine el proceso de venta. SisendStatusesfalseel POS enviará mensajes a medida que se va avanzando en el proceso  (se selecciona método de pago,
el usuario pasa la tarjeta, se ingresa la clave, etc). Estos mensajes de estados intermedios se pueden capturar
definiendo una función en el parámetrocallback# Venta con mensajes intermediosdefintermediate_message_callback(response):print("Intermediate message:{}".format(str(response['response_message'])))print(POS.multicode_sale(1200,"Tic123",597029414301,send_status=True,callback=intermediate_message_callback))# Venta sin mensajes intermediosprint(POS.multicode_sale(1200,"Tic123",597029414301))last_sale()Ejecuta el comandolast saleen el POS.print(POS.last_sale())multicode_last_sale(send_voucher=False)Ejecuta el comandomulticode last saleen el POS.send_voucherindica si el comprobante de la ultima venta debe ser enviado a la caja.print(POS.multicode_last_sale(True))refund(operation_id: int)Ejecuta el comandorefunden el POS.operation_ides el número de operación que se quiere anular.print(POS.refund(83))totals()Ejecuta el comandototalsen el POS.print(POS.totals())details(print_on_pos=False)Ejecuta el comandodetailsen el POS.print_on_posindica si la información se debe imprimir en el POS o en la caja.print(POS.details(False))close()Ejecuta el comandocloseen el POS.print(POS.close())DocumentaciónPuedes encontrar toda la documentación de cómo usar este SDK en el sitiohttps://www.transbankdevelopers.cl.La documentación relevante para usar este SDK es:Información para contribuir y desarrollar este SDKRequerimientosPipenvPlugin de editorconfig para tu editor favorito.StandaresPara los commits respetamos las siguientes normas:https://chris.beams.io/posts/git-commit/Usamos ingles, para los mensajes de commit.Se pueden usar tokens como WIP, en el subject de un commit, separando el token con:, por ejemplo:WIP: This is a useful commit messagePara los nombres de ramas también usamos ingles.Se asume, que una rama de feature no mezclada, es un feature no terminado.El nombre de las ramas va en minúsculas.Las palabras se separan con-.Las ramas comienzan con alguno de los short lead tokens definidos, por ejemplo:feat/tokens-configurationShort lead tokensCommitsWIP = Trabajo en progreso.Ramasfeat = Nuevos featureschore = Tareas, que no son visibles al usuario.bug = Resolución de bugs.Todas las mezclas a master se hacen mediante Pull Request.Deploy de una nueva versión.Para generar una nueva versión, se debe crear un PR (con un título "Prepare release X.Y.Z" con los valores que correspondan paraX,YyZ). Se debe seguir el estándar semver para determinar si se incrementa el valor deX(si hay cambios no retrocompatibles),Y(para mejoras retrocompatibles) oZ(si sólo hubo correcciones a bugs).En ese PR deben incluirse los siguientes cambios:Modificar el archivoCHANGELOG.mdpara incluir una nueva entrada (al comienzo) paraX.Y.Zque explique en español los cambiosde cara al usuario del SDK.Modificarversion.pypara que apunte a la nueva versiónX.Y.Z.Luego de obtener aprobación del pull request, debe mezclarse a master e inmediatamente generar un release en GitHub con el tagvX.Y.Z. En la descripción del release debes poner lo mismo que agregaste al changelog.Con eso Travis CI generará automáticamente una nueva versión de la librería y la publicará en PyPI.