Desarrolladores
Puntos de Venta (POS)
5 min
las siguientes apis te permitirán interactuar con tus puntos de venta y solicitar operaciones de pago el device del pos se puede obtener en la pantalla de configuración => información del sistema => referencia o tomando el serial number del dispositivo ( etiqueta en la parte posterior ) y agregando el identificador de la marca separado por dos puntos marcas ingenico ing ej "ing 123aaa1235566" urovo uro ej "uro 123aaa1235566" { "name" "solicitar operación en punto de venta", "method" "post", "url" "https //api unicobros com ar/p/pos/\ device/operation", "description" "esta api te permitirá generar una intención de cobro sobre un punto de venta", "tab" "examples", "examples" { "languages" \[ { "id" "8mbbdjwniyyr8magqfzcq", "language" "curl", "code" "curl location globoff 'https //api unicobros com ar/p/pos/\ uid/operation/{uid}' \\\\\n header 'accept application/json' \\\\\n header 'content type application/json' \\\\\n data '{\\"total\\" \\"number\\",\\"currency\\" \\"string\\",\\"description\\" \\"string\\",\\"reference\\" \\"string\\",\\"test\\" \\"boolean\\",\\"webhook\\" \\"string\\",\\"intent\\" \\"string\\",\\"installments\\" \\"array\\",\\"sources\\" \\"array\\",\\"timeout\\" \\"number\\"}'", "customlabel" "" }, { "id" "dqp2yq1sthcux3umvl3iy", "language" "nodejs", "code" "var request = require('request');\nvar options = {\n 'method' 'post',\n 'url' 'https //api unicobros com ar/p/pos/\ uid/operation/{uid}',\n 'headers' {\n 'accept' 'application/json',\n 'content type' 'application/json'\n },\n body json stringify({\n \\"total\\" \\"number\\",\n \\"currency\\" \\"string\\",\n \\"description\\" \\"string\\",\n \\"reference\\" \\"string\\",\n \\"test\\" \\"boolean\\",\n \\"webhook\\" \\"string\\",\n \\"intent\\" \\"string\\",\n \\"installments\\" \\"array\\",\n \\"sources\\" \\"array\\",\n \\"timeout\\" \\"number\\"\n })\n\n};\nrequest(options, function (error, response) {\n if (error) throw new error(error);\n console log(response body);\n});\n", "customlabel" "" }, { "id" "vj0vpw4rvaqqpimerk2 h", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({\n \\"total\\" \\"number\\",\n \\"currency\\" \\"string\\",\n \\"description\\" \\"string\\",\n \\"reference\\" \\"string\\",\n \\"test\\" \\"boolean\\",\n \\"webhook\\" \\"string\\",\n \\"intent\\" \\"string\\",\n \\"installments\\" \\"array\\",\n \\"sources\\" \\"array\\",\n \\"timeout\\" \\"number\\"\n});\n\nvar requestoptions = {\n method 'post',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"https //api unicobros com ar/p/pos/\ uid/operation/{uid}\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "mhfacfdr1uablcsjw4lx6", "language" "python", "code" "import requests\nimport json\n\nurl = \\"https //api unicobros com ar/p/pos/\ uid/operation/{uid}\\"\n\npayload = json dumps({\n \\"total\\" \\"number\\",\n \\"currency\\" \\"string\\",\n \\"description\\" \\"string\\",\n \\"reference\\" \\"string\\",\n \\"test\\" \\"boolean\\",\n \\"webhook\\" \\"string\\",\n \\"intent\\" \\"string\\",\n \\"installments\\" \\"array\\",\n \\"sources\\" \\"array\\",\n \\"timeout\\" \\"number\\"\n})\nheaders = {\n 'accept' 'application/json',\n 'content type' 'application/json'\n}\n\nresponse = requests request(\\"post\\", url, headers=headers, data=payload)\n\nprint(response text)\n", "customlabel" "" }, { "id" "sfkrjoo8kca9zrcnrcgrd", "language" "ruby", "code" "require \\"uri\\"\nrequire \\"json\\"\nrequire \\"net/http\"\n\nurl = uri(\\"https //api unicobros com ar/p/pos/\ uid/operation/{uid}\\")\n\nhttps = net http new(url host, url port)\nhttps use ssl = true\n\nrequest = net http post new(url)\nrequest\[\\"accept\\"] = \\"application/json\\"\nrequest\[\\"content type\\"] = \\"application/json\\"\nrequest body = json dump({\n \\"total\\" \\"number\\",\n \\"currency\\" \\"string\\",\n \\"description\\" \\"string\\",\n \\"reference\\" \\"string\\",\n \\"test\\" \\"boolean\\",\n \\"webhook\\" \\"string\\",\n \\"intent\\" \\"string\\",\n \\"installments\\" \\"array\\",\n \\"sources\\" \\"array\\",\n \\"timeout\\" \\"number\\"\n})\n\nresponse = https request(request)\nputs response read body\n", "customlabel" "" } ], "selectedlanguageid" "sfkrjoo8kca9zrcnrcgrd" }, "results" { "languages" \[ { "id" "n9fbuefajubqxp7ag qsb", "language" "200", "customlabel" "", "code" "{\n \\"result\\" true,\n \\"data\\" {\n \\"intent\\" {\n \\"type\\" \\"payment v2\\",\n \\"token\\" \\"620198a7 291e 4bde 9248 43b34d59e8c9\\"\n },\n \\"test\\" true\n }\n}" }, { "id" "on09lzuoprkhuvubgwdwn", "language" "404", "customlabel" "", "code" "{\n \\"message\\" \\"ain't no cake like that \\"\n }" } ], "selectedlanguageid" "n9fbuefajubqxp7ag qsb" }, "request" { "pathparameters" \[ { "name" "device", "kind" "required", "type" "string", "description" "id del dispositivo sobre el que se solicita una operación ", "children" \[] } ], "queryparameters" \[], "headerparameters" \[ { "name" "x api key", "kind" "required", "type" "string", "description" "api key de la entidad", "children" \[] }, { "name" "x access token", "kind" "required", "type" "string", "description" "access token de la entidad", "children" \[] }, { "name" "content type", "kind" "required", "type" "string", "description" "application/json", "children" \[] } ], "bodydataparameters" \[ { "name" "total", "kind" "required", "type" "number", "description" "monto de la operación a solicitar" }, { "name" "currency", "kind" "required", "type" "string", "description" "moneda de la operación formato letras iso 4217", "children" \[] }, { "name" "description", "kind" "optional", "type" "string", "description" "descripción de la operación", "children" \[] }, { "name" "reference", "kind" "optional", "type" "string", "description" "reference externa de la operación asignada por el consumidor del servicio el servicio no permite 2 operaciones aprobadas con el mismo reference", "children" \[] }, { "name" "test", "kind" "optional", "type" "boolean", "description" "indica si la operación se realiza en modo de pruebas", "children" \[] }, { "name" "webhook", "kind" "optional", "type" "string", "description" "url donde se realizará la notificación de las diferentes actualizaciones sobre el cobro solicitado ", "children" \[] }, { "name" "intent", "kind" "optional", "type" "string", "description" "flujo de la operación, permite soportar operaciones en 2 pasos valores posibles \\"payment 2 step\\", \\"payment v2\\" por defecto la captura de la operación es automática", "children" \[] }, { "name" "installments", "kind" "optional", "type" "array", "description" "permite la limitación de los planes activos al pagar la orden para realizar dicha limitación se debe enviar un array de referencias/códigos de planes los ejemplos puedes encontrarlos más abajo en la documentación ", "children" \[] }, { "name" "sources", "kind" "optional", "type" "array", "description" "permite la limitación de los medios de pago aceptados de esta forma, podrán utilizarse los medios aquí definidos ", "children" \[] }, { "name" "timeout", "kind" "optional", "type" "number", "description" "tiempo de vida en minutos durante el cual podrá ser utilizada la intención de cobro, luego de este tiempo no tendrá validez por defecto son 15 minutos ", "children" \[] }, { "name" "customer", "kind" "optional", "type" "object", "description" "objeto con los datos del cliente", "children" \[ { "name" "email", "kind" "required", "type" "string", "description" "email del cliente este parámetro es necesario para la notificación al cliente " }, { "name" "name", "kind" "required", "type" "string", "description" "nombre del cliente este parámetro es necesario " }, { "name" "identification", "kind" "optional", "type" "string", "description" "dni del cliente este parámetro es necesario si desea agregar seguridad a la operación " }, { "name" "phone", "kind" "optional", "type" "string", "description" "número de teléfono del cliente " } ], "schema" \[ { "name" "email", "kind" "required", "type" "string", "description" "email del cliente este parámetro es necesario para la notificación al cliente " }, { "name" "name", "kind" "required", "type" "string", "description" "nombre del cliente este parámetro es necesario " }, { "name" "identification", "kind" "optional", "type" "string", "description" "dni del cliente este parámetro es necesario si desea agregar seguridad a la operación " }, { "name" "phone", "kind" "optional", "type" "string", "description" "número de teléfono del cliente " } ] }, { "name" "split", "kind" "optional", "type" "array", "description" "permite dividir el cobro del checkout en varias entidades de unicobros ver ejemplo seccion \\"split de pagos\\" ", "" "permite dividir el cobro del checkout en varias entidades de unicobros ver ejemplo seccion \\"split de pagos\\" " } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } cancelar una operación en progreso si una operación está en progreso en el pos se puede cancelar la misma utilizando la api sólo se puede cancelar una operación a la vez { "name" "cancelar operación", "method" "delete", "url" "https //api unicobros com ar/p/pos/\ device/operation", "description" "cancelar operación en progreso en el pos", "tab" "examples", "examples" { "languages" \[ { "id" "zsm2rh8rqtqvvm9bupy o", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({\n \\"id\\" \\"string\\"\n});\n\nvar requestoptions = {\n method 'get',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"https //api cakes com\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" } ], "selectedlanguageid" "zsm2rh8rqtqvvm9bupy o" }, "results" { "languages" \[ { "id" "uh7lsecopeeedfoozg9sf", "language" "200", "customlabel" "", "code" "{\n \\"name\\" \\"cake's name\\",\n }" }, { "id" "cet4dmp6lypaa4em3eirk", "language" "404", "customlabel" "", "code" "{\n \\"message\\" \\"ain't no cake like that \\"\n }" } ], "selectedlanguageid" "uh7lsecopeeedfoozg9sf" }, "request" { "pathparameters" \[ { "name" "device", "kind" "required", "type" "string", "description" "id del dispositivo sobre el que se solicita una operación ", "children" \[] } ], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[], "formdataparameters" \[] }, "currentnewparameter" { "label" "path parameter", "value" "pathparameters" } } webhooks { "type" "pos", "data" { "result" true, "view" { "type" "card" }, "payment" { "created" "2024 04 16t23 04 40 523z", "currency" { "code" "ars", "locale" "es ar", "symbol" "$", "text" "peso argentino" }, "description" "orden 11111111111", "id" "3z6d9yf71l0lggrr8drt3w", "operation" { "type" "payment v2" }, "reference" "1111111111", "requestedcurrency" { "code" "ars", "locale" "es ar", "symbol" "$", "text" "peso argentino" }, "requestedtotal" 145170, "riskanalysis" { "band" "n/a", "level" "n/a" }, "source" { "cardholder" { "identification" "12123123", "name" "bruce wayne" }, "expiration" { "month" "06", "year" "24" }, "installment" { "amount" 145170, "count" 1, "description" "1 cuota", "reference" "1", "tags" \[], "uid" "nzqwp58ga" }, "name" "visa banco santander", "number" "46600000 4601", "reference" "visa santanderrio", "transaction" { "authorizationcode" "004288", "batchno" "", "resultcode" "0", "retrievalreferenceno" "410723133668", "ticketno" "", "transactionid" "3z6d9yf71l0lggrr8drt3w" }, "type" "card", "variant" "credit" }, "status" { "code" "200", "data" {}, "message" "transacción aprobada", "resultcode" "0", "text" "aprobado", "view" "default" }, "total" 145170, "updated" "2024 04 16t23 04 42 146z" }, "entity" { "name" "wayne inc", "uid" "iambatman" }, "customer" { "uid" "12123123", "name" "juan perez wayne", "phone" "12123123", "identification" "110303456", "email" "soybatman\@wayneinc com" }, "user" { "name" "juan perez wayne", "email" "soybatman\@wayneinc com" }, "source" { "name" "visa banco santander", "reference" "visa santanderrio", "type" "card" }, "pos" { "name" "pos nombre", 	 "description" " ", 	 "mode" "normal", 	 "reference" "pos\ my ref", 	 "terminal" { 	 "uid" "gdq3v8l4ee6aae5l9nwck5", 	 "reference" "ing 123aaa1235566", 	 "serialnumber" "123aaa1235566" 	 } } } } modo de pruebas para probar en el pos cree una operación con la variable "test" en true para poder simular los diferentes estados debe utilizar el "total" de la operación, por ejemplo si desea que la transacción se apruebe el total debe ser 200 vea la documentación de "códigos de estado" para mayor detalle y posibilidades de prueba importante si la terminal es productiva, no admite la variable "test" en true luego de crear la transacción con las condiciones indicadas proceda a utilizar cualquier tarjeta real, la operación no será cobrada sino que será simulada de acuerdo a lo indicado modos del punto de venta actualmente se soportan 2 modos modo normal en este modo quien opera el pos puede ingresar el monto de la operación con el teclado en pantalla modo esclavo en este modo el pos se transforma en un dispositivo que debe ser controlado 100% desde la api sin que el usuario pueda intervenir en todos los modos soportados la api aquí documentada puede ser utilizada permitiendo integrar el pos al 100% a su sistema de caja