Microservicio para la integraci贸n de Paypal implementado con ExpressJs, Nodejs, Typescript, nodemon, morgan, dotenv, cors, etc.
- Crear cuenta en la app de paypal (btn Login in dashboard)
- Ver o actualizar credenciales de usuario
- Click en btn
crear app
para validar registro, keys, realizar la integraci贸n, etc - Ingresar al dashboard y ver la app creada con credenciales. Ingresar a la app para ejecuciones en el entorno sandbox.
- Copiar ClientId y secret key de usuario app en archivo
.env
para interactuar con la api de paypal
PAYPAL_API_CLIENT = "AY6UZg4..."
PAYPAL_API_SECRET_KEY ="EJMm8IN..."
PAYPAL_API_SANDBOX_URL = "https://sandbox.paypal.com"
- Visualizar cuentas sandbox
- Recursos de la api de paypal
- Obtener un access token para las operaciones con curl
curl -v -X POST "https://api-m.sandbox.paypal.com/v1/oauth2/token"\
-u "CLIENT_ID:CLIENT_SECRET"\
-H "Content-Type: application/x-www-form-urlencoded"\
-d "grant_type=client_credentials"
Obtener un access token para las operaciones desde postman
Set the verb to POST.
Enter https://api-m.sandbox.paypal.com/v1/oauth2/token as the request URL.
Select the Authorization tab.
From the TYPE list, select Basic Auth.
In the Username field, enter your client ID.
In the Password field, enter your client secret.
Select the Body tab.
Select the x-www-form-urlencoded option.
In the KEY field, enter grant_type.
In the VALUE field, enter client_credentials.
Select Send.
- Response
{
"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",
"access_token": "A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg",
"token_type": "Bearer",
"app_id": "APP-80W284485P519543T",
"expires_in": 31668,
"nonce": "2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg"
}
Ver
- 1.0) Descripci贸n del Proyecto.
- 1.1) Ejecuci贸n del Proyecto.
- 1.2) Configuraci贸n del proyecto desde cero
- 1.3) Comandos de utilidad.
- 1.4) Tecnolog铆as.
1.0) Descripci贸n 馃敐
1.1) Ejecuci贸n del Proyecto 馃敐
Ver
- Una vez creado un entorno de trabajo a trav茅s de alg煤n ide, clonamos el proyecto
git clone https://github.com/andresWeitzel/Module_PayPal_Integration_ExpressJs
- Nos posicionamos sobre el proyecto
cd 'projectName'
- Instalamos la 煤ltima versi贸n LTS de Nodejs(v18).
- Instalamos todas las librer铆as necesarias
npm i
- 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.
- El siguiente script configurado en el package.json del proyecto es el encargado de
- Levantar el servidor con express (entorno productivo)
- Levantar el servidor con express y nodemon (entorno local dev)
"scripts": {
"dev": "nodemon src/server.js",
"start": "node src/server.js"
},
- Ejecutamos la app desde terminal para entorno local.
npm run dev
- Ejecutamos la app desde terminal para entorno productivo.
npm start
- 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
npx kill-port 8080
npm run dev o npm start
1.2) Configuraci贸n del proyecto desde cero 馃敐
Ver
- Una vez creado un entorno de trabajo a trav茅s de alg煤n ide, clonamos el proyecto
git clone https://github.com/andresWeitzel/Module_PayPal_Integration_ExpressJs
- Nos posicionamos sobre el proyecto
cd 'projectName'
- Instalamos la 煤ltima versi贸n LTS de Nodejs(v18)
- Abrimos una terminal desde vsc
- Inicializamos un proyecto nodejs
npm init
- Creamos un archivo .gitignore y agregamos los files necesarios (por el momento node_modules)
node_modules
- Creamos un direct source (src) para agregar toda la l贸gica de nuestra app
- Instalamos el paquete para el uso de Nodejs con Typescript
npm i --save-dev @types/node
- Instalamos lo necesario para usar typescript
# Locally in your project.
npm install -D typescript
npm install -D ts-node
# Or globally with TypeScript.
npm install -g typescript
npm install -g ts-node
# Depending on configuration, you may also need these
npm install -D tslib @types/node
- Instalamos los plugins para express (framework) para ts y nodejs
npm i --save-dev @types/express
npm i express
- Instalamos el plugin para cors (gesti贸n de recursos)
npm i --save-dev @types/cors
npm i cors
- Instalamos el plugin para dotenv (variables de entorno)
npm i --save-dev @types/dotenv
- Instalamos el plugin para morgan-middleware (errores, formatos, etc)
npm i morgan @types/morgan
- Instalamos el plugin para nodemon (autoreload server) de forma global y local
npm i -g nodemon
npm i nodemon
- 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.
- El siguiente script configurado en el package.json del proyecto es el encargado de
- Levantar el servidor con express (entorno productivo)
- Levantar el servidor con express y nodemon (entorno local dev)
"scripts": {
"start": "node src/server.ts",
"start:dev": "nodemon src/server.ts"
},
- Ejecutamos la app desde terminal para entorno local.
npm run start:dev
- Ejecutamos la app desde terminal para entorno productivo.
npm start
- 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
npx kill-port 8080
npm run start:dev o npm start
1.3) Comandos de utilidad 馃敐
Ver
1.4) Tecnolog铆as 馃敐
Ver
| Tecnolog铆as | Versi贸n | Finalidad |
| ------------- | ------------- | ------------- |
| NodeJS | 14.18.1 | Librer铆a JS |
| Typescript | 3.8.3 | Lenguaje con alto tipado basado en JS |
| VSC | 1.72.2 | IDE |
| Postman | 10.11 | Cliente Http |
| CMD | 10 | S铆mbolo del Sistema para linea de comandos |
| Git | 2.29.1 | Control de Versiones |
| Extensi贸n |
| ------------- |
| Prettier - Code formatter |
| Typescript Toolbox - generate setters, getters, constrc, etc |
| Otras |