{"id":22433165,"url":"https://github.com/andresweitzel/microservice_paypal_orders_express","last_synced_at":"2026-04-06T21:31:53.386Z","repository":{"id":196398970,"uuid":"696015319","full_name":"andresWeitzel/Microservice_Paypal_Orders_Express","owner":"andresWeitzel","description":"Microservice for the integration of Paypal API Orders implemented with ExpressJs, Nodejs, Typescript, nodemon, morgan, dotenv, cors, others.","archived":false,"fork":false,"pushed_at":"2024-03-29T09:32:32.000Z","size":338,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T07:48:35.877Z","etag":null,"topics":["axios","cors","dotenv","expressjs","git","microservice","morgan","nodejs","nodemon","paypal-integration","paypal-rest-api","postman","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andresWeitzel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-24T22:11:14.000Z","updated_at":"2023-11-04T03:59:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"b9d8fcef-6550-4461-a70d-f9ad01329203","html_url":"https://github.com/andresWeitzel/Microservice_Paypal_Orders_Express","commit_stats":null,"previous_names":["andresweitzel/module_paypal_integration_expressjs","andresweitzel/microservice_paypal_integration_expressjs","andresweitzel/microservice_paypal_orders_express"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/andresWeitzel/Microservice_Paypal_Orders_Express","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FMicroservice_Paypal_Orders_Express","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FMicroservice_Paypal_Orders_Express/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FMicroservice_Paypal_Orders_Express/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FMicroservice_Paypal_Orders_Express/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andresWeitzel","download_url":"https://codeload.github.com/andresWeitzel/Microservice_Paypal_Orders_Express/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FMicroservice_Paypal_Orders_Express/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31491096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["axios","cors","dotenv","expressjs","git","microservice","morgan","nodejs","nodemon","paypal-integration","paypal-rest-api","postman","typescript"],"created_at":"2024-12-05T22:14:08.426Z","updated_at":"2026-04-06T21:31:53.378Z","avatar_url":"https://github.com/andresWeitzel.png","language":"TypeScript","funding_links":["https://developer.paypal.com/home","https://demo.paypal.com/us/demo/code_samples?","https://developer.paypal.com/home/","https://developer.paypal.com/dashboard/applications/sandbox","https://sandbox.paypal.com","https://developer.paypal.com/dashboard/accounts","https://developer.paypal.com/api/rest/current-resources/","https://developer.paypal.com/api/rest/","https://api-m.sandbox.paypal.com/v1/oauth2/token","https://uri.paypal.com/services/invoicing","https://uri.paypal.com/services/disputes/read-buyer","https://uri.paypal.com/services/payments/realtimepayment","https://uri.paypal.com/services/disputes/update-seller","https://uri.paypal.com/services/payments/payment/authcapture","https://uri.paypal.com/services/disputes/read-seller","https://uri.paypal.com/services/payments/refund","https://api-m.paypal.com/v1/vault/credit-card","https://api-m.paypal.com/v1/payments/","https://uri.paypal.com/payments/payouts","https://api-m.paypal.com/v1/vault/credit-card/","https://uri.paypal.com/services/subscriptions","https://uri.paypal.com/services/applications/webhooks"],"categories":[],"sub_categories":[],"readme":"![Index app](./doc/assets/img/paypal_api.png)\n  \u003cdiv align=\"right\"\u003e\n    \u003cimg width=\"24\" height=\"24\" src=\"./doc/assets/icons/backend/javascript-typescript/png/typescript.png\" /\u003e\n    \u003cimg width=\"24\" height=\"24\" src=\"./doc/assets/icons/integrations/png/paypal.png\" /\u003e\n    \u003cimg width=\"25\" height=\"25\" src=\"./doc/assets/icons/backend/javascript-typescript/png/express-js.png\" /\u003e\n    \u003cimg width=\"27\" height=\"27\" src=\"./doc/assets/icons/backend/javascript-typescript/png/nodejs.png\" /\u003e\n    \u003cimg width=\"27\" height=\"27\" src=\"./doc/assets/icons/devops/png/postman.png\" /\u003e\n    \u003cimg width=\"29\" height=\"27\" src=\"./doc/assets/icons/devops/png/git.png\" /\u003e\n  \u003c/div\u003e\n\n\u003cbr\u003e    \n\n# Microservice_PayPal_Integration_ExpressJs\nMicroservicio para la integración de Paypal implementado con ExpressJs, Nodejs, Typescript, nodemon, morgan, dotenv, cors, etc.\n\n### Documentación\n\n*   [Ejemplo básico de integración paypal](https://www.youtube.com/watch?v=sBenKZqEzpQ)\n*   [PayPal developer doc](https://developer.paypal.com/home)\n\n### Códigos de integración Paypal\n\n*   [Demo checkout, buttons, etc](https://demo.paypal.com/us/demo/code_samples?)\n\n### Pasos Paypal\n\n1.  [Crear cuenta en la app de paypal (btn Login in dashboard)](https://developer.paypal.com/home/)\n2.  [Ver o actualizar credenciales de usuario](https://developer.paypal.com/dashboard/applications/sandbox)\n3.  [Click en btn `crear app` para validar registro, keys, realizar la integración, etc](https://developer.paypal.com/dashboard/applications/sandbox)\n4.  [Ingresar al dashboard y ver la app creada con credenciales. Ingresar a la app para ejecuciones en el entorno sandbox.](https://developer.paypal.com/dashboard/applications/sandbox)\n5.  Copiar ClientId y secret key de usuario app en archivo `.env` para interactuar con la api de paypal\n\n```env\nPAYPAL_API_CLIENT = \"AY6UZg4...\"\nPAYPAL_API_SECRET_KEY =\"EJMm8IN...\"\nPAYPAL_API_SANDBOX_URL = \"https://sandbox.paypal.com\"\n```\n\n6.  [Visualizar cuentas sandbox](https://developer.paypal.com/dashboard/accounts)\n7.  [Recursos de la api de paypal](https://developer.paypal.com/api/rest/current-resources/)\n8.  [Obtener un access token para las operaciones con curl](https://developer.paypal.com/api/rest/)\n\n```curl\ncurl -v -X POST \"https://api-m.sandbox.paypal.com/v1/oauth2/token\"\\\n -u \"CLIENT_ID:CLIENT_SECRET\"\\\n -H \"Content-Type: application/x-www-form-urlencoded\"\\\n -d \"grant_type=client_credentials\"\n```\n\n[Obtener un access token para las operaciones desde postman](https://developer.paypal.com/api/rest/)\n\n```postman\n    Set the verb to POST.\n    Enter https://api-m.sandbox.paypal.com/v1/oauth2/token as the request URL.\n    Select the Authorization tab.\n    From the TYPE list, select Basic Auth.\n    In the Username field, enter your client ID.\n    In the Password field, enter your client secret.\n    Select the Body tab.\n    Select the x-www-form-urlencoded option.\n    In the KEY field, enter grant_type.\n    In the VALUE field, enter client_credentials.\n    Select Send.\n```\n\n*   Response\n\n```git\n{\n\n  \"scope\": \"https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/update-seller https://uri.paypal.com/services/payments/payment/authcapture openid https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://api-m.paypal.com/v1/vault/credit-card https://api-m.paypal.com/v1/payments/.* https://uri.paypal.com/payments/payouts https://api-m.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks\",\n\n  \"access_token\": \"A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg\",\n\n  \"token_type\": \"Bearer\",\n\n  \"app_id\": \"APP-80W284485P519543T\",\n\n  \"expires_in\": 31668,\n\n  \"nonce\": \"2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg\"\n\n}\n```\n\n\u003cbr\u003e\n\n## Índice 📜\n\n\u003cdetails\u003e\n \u003csummary\u003e Ver \u003c/summary\u003e\n\n \u003cbr\u003e\n\n### Sección 1) Descripción, configuración y tecnologías.\n\n*   [1.0) Descripción del Proyecto.](#10-descripción-)\n*   [1.1) Ejecución del Proyecto.](#11-ejecución-del-proyecto-)\n*   [1.2) Configuración del proyecto desde cero](#12-configuración-del-proyecto-desde-cero-)\n*   [1.3) Comandos de utilidad.](#13-comandos-de-utilidad)\n*   [1.4) Tecnologías.](#14-tecnologías-)\n\n### Sección 2) Endpoints y Ejemplos\n\n*   [2.0) EndPoints y recursos.](#20-endpoints-y-recursos-)\n*   [2.1) Ejemplos.](#21-ejemplos-)\n\n### Sección 3) Prueba de funcionalidad y Referencias\n\n*   [3.0) Prueba de funcionalidad.](#30-prueba-de-funcionalidad-)\n*   [3.1) Referencias.](#31-referencias-)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Sección 1) Descripción, configuración y tecnologías.\n\n### 1.0) Descripción [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n \u003cbr\u003e\n\n### 1.0.0) Descripción General\n\n### 1.0.1) Descripción Arquitectura y Funcionamiento\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.1) Ejecución del Proyecto [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\u003cbr\u003e\n\n#### 1.1.0) Configuraciones iniciales\n\n*   Una vez creado un entorno de trabajo a través de algún ide, clonamos el proyecto\n\n```git\ngit clone https://github.com/andresWeitzel/Module_PayPal_Integration_ExpressJs\n```\n\n*   Nos posicionamos sobre el proyecto\n\n```git\ncd 'projectName'\n```\n\n*   Instalamos la última versión LTS de [Nodejs(v18)](https://nodejs.org/en/download).\n*   Instalamos todas las librerías necesarias\n\n```git\nnpm i\n```\n\n*   Las variables de entorno utilizadas en el proyecto se mantienen para simplificar el proceso de configuración de las mismas. Es recomendado agregar el archivo correspondiente (.env) al .gitignore.\n*   El siguiente script configurado en el package.json del proyecto es el encargado de\n    *   Levantar el servidor con express (entorno productivo)\n    *   Levantar el servidor con express y nodemon (entorno local dev)\n\n```git\n\"scripts\": {\n   \"dev\": \"nodemon src/server.js\",\n   \"start\": \"node src/server.js\"\n },\n```\n\n*   Ejecutamos la app desde terminal para entorno local.\n\n```git\nnpm run dev\n```\n\n*   Ejecutamos la app desde terminal para entorno productivo.\n\n```git\nnpm start\n```\n\n*   Si se presenta algún mensaje indicando qué el puerto 8080 ya está en uso, podemos terminar todos los procesos dependientes y volver a ejecutar la app\n\n```git\nnpx kill-port 8080\nnpm run dev o npm start\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### 1.2) Configuración del proyecto desde cero [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n\u003cbr\u003e\n\n*   Una vez creado un entorno de trabajo a través de algún ide, clonamos el proyecto\n\n```git\ngit clone https://github.com/andresWeitzel/Module_PayPal_Integration_ExpressJs\n```\n\n*   Nos posicionamos sobre el proyecto\n\n```git\ncd 'projectName'\n```\n\n*   Instalamos la última versión LTS de [Nodejs(v18)](https://nodejs.org/en/download)\n*   Abrimos una terminal desde vsc\n*   Inicializamos un proyecto nodejs\n\n```git\nnpm init\n```\n\n*   Creamos un archivo .gitignore y agregamos los files necesarios (por el momento node\\_modules)\n\n```git\nnode_modules\n```\n\n*   Creamos un direct source (src) para agregar toda la lógica de nuestra app\n*   Instalamos el paquete para el uso de Nodejs con Typescript\n\n```git\nnpm i --save-dev @types/node\n```\n\n*   Instalamos lo necesario para usar typescript\n\n```git\n# Locally in your project.\nnpm install -D typescript\nnpm install -D ts-node\n\n# Or globally with TypeScript.\nnpm install -g typescript\nnpm install -g ts-node\n\n# Depending on configuration, you may also need these\nnpm install -D tslib @types/node\n```\n\n*   Instalamos los plugins para [express (framework)](https://www.npmjs.com/package/express) para ts y nodejs\n\n```git\nnpm i --save-dev @types/express\nnpm i express\n```\n\n*   Instalamos el plugin para [cors (gestión de recursos)](https://www.npmjs.com/package/cors)\n\n```git\nnpm i --save-dev @types/cors\nnpm i cors\n```\n\n*   Instalamos el plugin para [dotenv (variables de entorno)](https://www.npmjs.com/package/dotenv)\n\n```git\nnpm i --save-dev @types/dotenv\n```\n\n*   Instalamos el plugin para [morgan-middleware (errores, formatos, etc)](https://levelup.gitconnected.com/better-logs-for-expressjs-using-winston-and-morgan-with-typescript-1c31c1ab9342)\n\n```git\nnpm i morgan @types/morgan\n```\n\n*   Instalamos el plugin para [nodemon (autoreload server)](https://www.npmjs.com/package/nodemon) de forma global y local\n\n```git\nnpm i -g nodemon\nnpm i nodemon\n```\n\n*   Las variables de entorno utilizadas en el proyecto se mantienen para simplificar el proceso de configuración de las mismas. Es recomendado agregar el archivo correspondiente (.env) al .gitignore.\n*   El siguiente script configurado en el package.json del proyecto es el encargado de\n    *   Levantar el servidor con express (entorno productivo)\n    *   Levantar el servidor con express y nodemon (entorno local dev)\n\n```git\n\"scripts\": {\n   \"start\": \"node src/server.ts\",\n   \"start:dev\": \"nodemon src/server.ts\"\n },\n```\n\n*   Ejecutamos la app desde terminal para entorno local.\n\n```git\nnpm run start:dev\n```\n\n*   Ejecutamos la app desde terminal para entorno productivo.\n\n```git\nnpm start\n```\n\n*   Si se presenta algún mensaje indicando qué el puerto 8080 ya está en uso, podemos terminar todos los procesos dependientes y volver a ejecutar la app\n\n```git\nnpx kill-port 8080\nnpm run start:dev o npm start\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.3) Comandos de utilidad [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n \u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.4) Tecnologías [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n \u003cbr\u003e\n\n| **Tecnologías** | **Versión** | **Finalidad** |\\\n| ------------- | ------------- | ------------- |\n| [NodeJS](https://nodejs.org/en/) | 14.18.1  | Librería JS |\n| [Typescript](https://www.typescriptlang.org/) | 3.8.3  | Lenguaje con alto tipado basado en JS |\n| [VSC](https://code.visualstudio.com/docs) | 1.72.2  | IDE |\n| [Postman](https://www.postman.com/downloads/) | 10.11  | Cliente Http |\n| [CMD](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd) | 10 | Símbolo del Sistema para linea de comandos |\n| [Git](https://git-scm.com/downloads) | 2.29.1  | Control de Versiones |\n\n\u003c/br\u003e\n\n| **Extensión** |\\\n| -------------  |\n| Prettier - Code formatter |\n| Typescript Toolbox - generate setters, getters, constrc, etc |\n| Otras |\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Sección 2) Endpoints y Ejemplos.\n\n### 2.0) Endpoints y recursos [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 2.1) Ejemplos [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Sección 3) Prueba de funcionalidad y Referencias.\n\n### 3.0) Prueba de funcionalidad [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 3.1) Referencias [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\n \u003cbr\u003e\n\n#### Documentación\n\n*   [Ejemplo básico de integración paypal](https://www.youtube.com/watch?v=sBenKZqEzpQ)\n*   [PayPal developer doc](https://developer.paypal.com/home)\n\n#### Códigos de integración Paypal\n\n*   [Demo checkout, buttons, etc](https://demo.paypal.com/us/demo/code_samples?)\n\n#### Herramientas\n\n*   [Convert cURL para node-axios](https://curlconverter.com/node-axios/)\n\n#### Remark\n\n*   [remark-inline-links](https://github.com/remarkjs/remark-inline-links)\n*   [remark-lint-list-item-indent](https://www.npmjs.com/package/remark-lint-list-item-indent)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fmicroservice_paypal_orders_express","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandresweitzel%2Fmicroservice_paypal_orders_express","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fmicroservice_paypal_orders_express/lists"}