{"id":16350514,"url":"https://github.com/eusonlito/redsys-tpv","last_synced_at":"2025-04-10T00:18:54.907Z","repository":{"id":18505374,"uuid":"21701788","full_name":"eusonlito/redsys-TPV","owner":"eusonlito","description":"Controlador en PHP para pasarelas de pago (TPV) Redsys / Sermepa / Servired","archived":false,"fork":false,"pushed_at":"2022-10-19T21:10:51.000Z","size":104,"stargazers_count":61,"open_issues_count":1,"forks_count":22,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-10T00:18:54.046Z","etag":null,"topics":["php","redsys","sermepa","tpv"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eusonlito.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-10T16:33:08.000Z","updated_at":"2025-02-25T20:53:00.000Z","dependencies_parsed_at":"2022-07-30T14:09:24.342Z","dependency_job_id":null,"html_url":"https://github.com/eusonlito/redsys-TPV","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eusonlito%2Fredsys-TPV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eusonlito%2Fredsys-TPV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eusonlito%2Fredsys-TPV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eusonlito%2Fredsys-TPV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eusonlito","download_url":"https://codeload.github.com/eusonlito/redsys-TPV/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248131379,"owners_count":21052828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","redsys","sermepa","tpv"],"created_at":"2024-10-11T01:05:15.637Z","updated_at":"2025-04-10T00:18:54.888Z","avatar_url":"https://github.com/eusonlito.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Redsys TPV\n=====\n\nEste script te permitirá generar los formularios para la integración de la pasarela de pago de Redsys (antes Sermepa / Servired).\n\n## Instalación\n\nAñade las dependencias vía composer: `\"redsys/tpv\": \"2.*\"`\n\n```bash\ncomposer update\n```\n\n## Ejemplo de pago instantáneo\n\nEste proceso se realiza para pagos en el momento, sin necesidad de confirmación futura (TransactionType = 0)\n\n```php\n# Incluye tu arquivo de configuración (copia config.php para config.local.php)\n\n$config = require (__DIR__.'/config.local.php');\n\n# Cargamos la clase con los parámetros base\n\n$TPV = new Redsys\\Tpv\\Tpv($config);\n\n# Indicamos los campos para el pedido\n\n$TPV-\u003esetFormHiddens(array(\n    'TransactionType' =\u003e '0',\n    'MerchantData' =\u003e 'Televisor de 50 pulgadas',\n    'Order' =\u003e '012121323',\n    'Amount' =\u003e '568,25',\n    'UrlOK' =\u003e 'http://dominio.com/direccion-todo-correcto/',\n    'UrlKO' =\u003e 'http://dominio.com/direccion-error',\n    'MerchantURL' =\u003e 'http://dominio.com/direccion-control-pago'\n));\n\n# Imprimimos el pedido el formulario y redirigimos a la TPV\n\necho '\u003cform action=\"'.$TPV-\u003egetPath('/realizarPago').'\" method=\"post\"\u003e'.$TPV-\u003egetFormHiddens().'\u003c/form\u003e';\n\ndie('\u003cscript\u003edocument.forms[0].submit();\u003c/script\u003e');\n```\n\nPara realizar el control de los pagos, la TPV se comunicará con nosotros a través de la url indicada en **MerchantURL**.\n\nEste script no será visible ni debe responder nada, simplemente verifica el pago.\n\nEl banco siempre se comunicará con nosotros a través de esta url, sea correcto o incorrecto.\n\nPodemos realizar un script (Lo que en el ejemplo sería http://dominio.com/direccion-control-pago) que valide los pagos de la siguiente manera:\n\n```php\n# Incluye tu arquivo de configuración (copia config.php para config.local.php)\n\n$config = require (__DIR__.'/config.local.php');\n\n# Cargamos la clase con los parámetros base\n\n$TPV = new Redsys\\Tpv\\Tpv($config);\n\n# Realizamos la comprobación de la transacción\n\ntry {\n    $datos = $TPV-\u003echeckTransaction($_POST);\n    $success = true;\n    $message = '';\n} catch (Exception $e) {\n    $datos = $TPV-\u003egetTransactionParameters($_POST);\n    $success = false;\n    $message = $e-\u003egetMessage();\n}\n\n# Actualización del registro en caso de pago (ejemplo usando mi framework)\n\n$Db-\u003eupdate(array(\n    'table' =\u003e 'tpv',\n    'limit' =\u003e 1,\n    'data' =\u003e array(\n        'pagado' =\u003e $success,\n        'mensaje' =\u003e $message,\n        'operacion' =\u003e $datos['Ds_TransactionType'],\n        'fecha_pago' =\u003e date('Y-m-d H:i:s'),\n        'variables' =\u003e json_encode($datos),\n        'post' =\u003e json_encode($_POST)\n    ),\n    'conditions' =\u003e array(\n        'id' =\u003e $datos['Ds_Order']\n    )\n));\n\ndie();\n```\n\n## Ejemplo de pago en diferido\n\nEste proceso se realiza para pagos mediante autorización inicial y posterior confirmación del pago sin que el cliente se encuentre presente (TransactionType = 1)\n\nEl proceso es exactamente igual que el anterior, sólamente se debe cambiar el valor de inicalización de `TransactionType` de `0` a `1`.\n\nUna vez completado todo el proceso anterior, debemos crear dos scripts en nuestro proyecto, uno para iniciar la confirmación del pago y otro para verificar el proceso.\n\n```php\n# Incluye tu arquivo de configuración (copia config.php para config.local.php)\n\n$config = require (__DIR__.'/config.local.php');\n\n# Cargamos la clase con los parámetros base\n\n$TPV = new Redsys\\Tpv\\Tpv($config);\n\n# Indicamos los campos para la confirmación del pago\n\n$response = $TPV-\u003esendXml(array(\n    'TransactionType' =\u003e '2', // Código para la Confirmación del cargo\n    'MerchantURL' =\u003e 'http://dominio.com/direccion-control-pago-xml', // A esta URL enviará el banco la confirmación del cobro\n    'Amount' =\u003e '568,25', // La cantidad final a cobrar\n    'Order' =\u003e '012121323', // El número de pedido, que debe existir en el sistema bancario a través de una autorización previa\n    'MerchantData' =\u003e 'Televisor de 50 pulgadas',\n));\n```\n\nEsta ejecución nos devolverá un XML con una respuesta sobre este envío, pero la respuesta sobre el resultado de la operación serán enviada desde el banco a la URL indicada en MerchantURL.\n\nPara verificar que el envío se ha realizado correctamente, el banco devuelve un XML con un valor para la etiqueta de  de `CODIGO` que devemos verificar para saber si el envío ha sido correcto.\n\nAhora vamos a por el script de `http://dominio.com/direccion-control-pago-xml` en que recogemos el resultado del pago:\n\n```php\n# Incluye tu arquivo de configuración (copia config.php para config.local.php)\n\n$config = require (__DIR__.'/config.local.php');\n\n# Cargamos la clase con los parámetros base\n\n$TPV = new Redsys\\Tpv\\Tpv($config);\n\n# Realizamos la comprobación de la transacción\n\ntry {\n    $datos = $TPV-\u003echeckTransactionXml($_POST);\n} catch (Exception $e) {\n    die(file_put_contents(__DIR__.'/logs/errores-tpv.log', $e-\u003egetMessage(), FILE_APPEND));\n}\n\n# Actualización del registro en caso de pago (ejemplo usando mi framework)\n\n$Db-\u003eupdate(array(\n    'table' =\u003e 'tpv',\n    'limit' =\u003e 1,\n    'data' =\u003e array(\n        'pagado' =\u003e 1,\n        'operacion' =\u003e $datos['Ds_TransactionType'],\n        'fecha_pago' =\u003e date('Y-m-d H:i:s')\n    ),\n    'conditions' =\u003e array(\n        'id' =\u003e $datos['Ds_Order']\n    )\n));\n\ndie();\n```\n\n--------\n\nSi deseas más información sobre parámetros u opciones, Google puede echarte una mano https://www.google.es/search?q=manual+instalaci%C3%B3n+redsys+php+filetype%3Apdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feusonlito%2Fredsys-tpv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feusonlito%2Fredsys-tpv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feusonlito%2Fredsys-tpv/lists"}