# Pay Gateway

# Antes de comenzar

Para iniciar la integración de cualquier servicio de PayGateway API, es necesario poseer credenciales de acceso (una cuenta y llaves) generadas por un técnico de soporte de PayGateway API.

Todos los servicios manejados por PayGateway API funcionan a través de peticiones HTTP en formato **JSON**.

![paygateway_api.png](https://read.pygateway.com/uploads/images/gallery/2023-12/scaled-1680-/paygateway-api.png)

# Puntos de acceso (endpoints)

El punto de conexión o endpoint para los servicios son los siguientes:

**Punto de enlace para entorno de producción:**

##### [https://latam.paygateway-api.com](https://latam.paygateway-api.com)

**Punto de enlace para entorno de desarrollo:**

##### [https://dev-latam.paygateway-api.com](https://dev-latam.paygateway-api.com)

# Comprobación de conexión

Puede comprobar que su conexión funciona haciendo uso del siguiente servicio:

**GET:** /extra/api/status

Dicha petición funcionará únicamente bajo autenticación. Obtendrá de respuesta el estado del API, así como información de su usuario y la región en la cual se encuenta el servidor que respondió su petición.

[![image.png](https://read.pygateway.com/uploads/images/gallery/2023-12/scaled-1680-/WWQimage.png)](https://read.pygateway.com/uploads/images/gallery/2023-12/WWQimage.png)

# Autenticación



# Autenticación

En todos los servicios protegidos (no públicos) es necesaria realizar autenticación. Para ello, se proveen llaves de API, las cuales constan de dos partes:

**API Key:** Token identificador de la llave.

**Secret Key**: Token secreto de la llave.

Para el envío de solicitudes, debe concatenar el API key y Secret Key separados por dos puntos ":", dicho token debe enviarlo en el header de todas las solicitudes que necesiten autenticación utilizando el header http "Authorization" bajo el tipo de autenticación "Bearer".

**Por ejemplo:**

Incluya en el header de su petición:

[![image.png](https://read.pygateway.com/uploads/images/gallery/2023-12/scaled-1680-/image.png)](https://read.pygateway.com/uploads/images/gallery/2023-12/image.png)

# Servicios disponibles



# Descripción de servicios y parámetros

Puede validar el listado servicios disponibles en el siguiente enlace:

##### [https://docs.pygateway.com/](https://docs.pygateway.com/)

*NOTA: Los servicios disponibles pueden variar basado en la cuenta, contratación o niveles de acceso. Para corroborar esto, por favor consulte con su agente de servicio asignado.*

# Ejemplos de integración

A continuación encontrarás ejemplos de integración para los servicios más utilizados en PayGateway

# Pago y creación de ordenes

Permite crear ordenes, pagarlas y facturarlas (si aplica).

`<strong>POST:</strong> /payments/create-pay-order`

***Creación de ordenes mediante link de pago (pago posterior)***

```json
{
	"clienteDireccion": "Ciudad",
	"clienteEmail": "demo@demo.com",
	"clienteNombre": "Nombre de cliente",
	"clienteTaxId": "CF",
	"clienteTelefono": "55555555",
	"ordenDetalle": {
		"0": {
			"productoCantidad": 1,
			"productoId": 0,
			"productoPrecio": "7.91",
			"productoDescMontoDirecto": "Pago de monto directo, pruebas"
		}
	},
	"ordenMonto": "7.91",
	"ordenTiendaDomain": "__DOMINIO_DE_TIENDA__",
	"pagoMetodo": "later_on_store"
}
```

***Creación de ordenes mediante pago en efectivo***

```json
{
	"clienteDireccion": "Ciudad",
	"clienteEmail": "demo@demo.com",
	"clienteNombre": "Nombre de cliente",
	"clienteTaxId": "CF",
	"clienteTelefono": "55555555",
	"ordenDetalle": {
		"0": {
			"productoCantidad": 1,
			"productoId": 0,
			"productoPrecio": "7.91",
			"productoDescMontoDirecto": "Pago de monto directo, pruebas"
		}
	},
	"ordenMonto": "7.91",
	"ordenTiendaDomain": "__DOMINIO_DE_TIENDA__",
	"pagoMetodo": "cash"
}
```

***Creación de ordenes mediante pago con tarjeta***

*NOTA: Para realizar una orden mediante pago con tarjeta, es necesario poseer configurada una afiliación de pago\*.*

```json
{
	"clienteDireccion": "Ciudad",
	"clienteEmail": "demo@demo.com",
	"clienteNombre": "Nombre de cliente",
	"clienteTaxId": "CF",
	"clienteTelefono": "55555555",
	"ordenDetalle": {
		"0": {
			"productoCantidad": 1,
			"productoId": 0,
			"productoPrecio": "10",
			"productoDescMontoDirecto": "Pago de monto directo, PRUEBA"
		}
	},
	"ordenMonto": "10",
	"ordenTiendaDomain": "__DOMINIO_DE_TIENDA__",
	"pagoMetodo": "card",
	"pagoTcExp": "07/24",
	"pagoTcNombre": "Nombre en TC",
	"pagoTcNumero": "4111111111111111"
}
```

# Validación de pagos

Permite validar si una orden es válida y su estado de pago.

`<strong>POST:</strong> /payments/validate-pay`

**Request:**

```json
{
	"token": "4385509296a6fvz",
	"ordenTiendaDomain": "__DOMINIO_DE_TIENDA___"
}
```

# Cancelar ordenes (con sus pagos y facturas)

Permite cancelar una orden, incluyendo todos los pagos y facturas asociados. En el caso de pagos, se realizará la reversa (si el procesador de pagos aún no ha realizado corte). En el caso de facturas, se realizará la anulación de la misma.

`<strong>POST:</strong> /payments/cancel-order`

**Request:**

```json
{
	"orderId": "__ID DE LA ORDEN__"
}
```

# Inicio de sesión mediante SSO

Permite Iniciar sesión por medio del API de ingreso SSO.

`<strong>POST:</strong> /users/sso/authorize`

**Request:**

```json
{
    "username": "__NOMBRE_DE_USUARIO__",
    "password": "testPassword",
    "storeDomain": "__DOMINIO_DE_TIENDA__"
}
```

# Validar sesión iniciada desde SSO

Permite validar si un token es una sesión válida, el token debe haber sido creado mediante el API para ingreso SSO.

`<strong>POST:</strong> /users/sso/check-session`

Request:

```json
{
    "storeDomain": "__DOMINIO_DE_TIENDA__",
    "token": "ayJ0evZiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwic3RpZCI6MTIwLCJleHAiOjE2NzcxOTYwNzUsInQiOiJzc286fF.1_q643etS-d3LVIU6mZUPc6jsI6LnfUCv9Qhvv6QR6V"
}
```