Redirect
En lugar de mostrar el formulario directamente en tu página, puedes redirigir a los usuarios a una página externa para completar el proceso de pago. El SDK web facilita la generación de la URL de redireccionamiento y el envío de los datos necesarios.
Objetivo
Aprenderás a:
- Crear el objeto de configuración
- Inicializar el formulario de pago.
- Mostrar el Checkout.
1. Creando el objeto configuración
A continuación se muestra un ejemplo de configuración del formulario de redireccionamiento.
const iziConfig = {
action: 'pay',
merchantCode: '{MERCHANT_CODE}',
transactionId: '{TRANSACTION_ID}',
order: {
orderNumber: '{ORDER_NUMBER}',
currency: 'PEN',
amount: '149.00',
processType: 'AT',
merchantBuyerId: '{MERCHANT_BUYER_ID}',
dateTimeTransaction: '{DATETIME_TRANSACTION}'
},
billing: {
firstName: 'Lucho',
lastName: 'Torres',
email: 'luchotorres@izipay.pe',
phoneNumber: '989897960',
street: 'Av. Jorge Chávez 275',
city: 'Lima',
state: 'Lima',
country: 'PE',
postalCode: '15000',
documentType: 'DNI',
document: '12345678'
},
shipping: {
firstName: 'Lucho',
lastName: 'Torres',
email: 'luchotorres@izipay.pe',
phoneNumber: '989897960',
street: 'Av. Jorge Chávez 275',
city: 'Lima',
state: 'Lima',
country: 'PE',
postalCode: '15000',
documentType: 'DNI',
document: '12345679'
},
render: {
typeForm: 'redirect',
redirectUrls: {
onSuccess: '{URL_SUCCESS}',
onError: '{URL_ERROR}',
onCancel: '{URL_CANCEL}'
}
}
};
Puedes configurar los atributos correspondientes para personalizar su apariencia y comportamiento aquí.
2. Instanciando la clase
const checkout = new Izipay({config: iziConfig});
3. Mostrando el checkout
try {
checkout &&
checkout.LoadForm({
authorization: '{TOKEN_SESSION}',
keyRSA: '{KEY_RSA}',
});
} catch (error) {
console.log(error.message, error.Errors, error.date);
};
-
En esta modalidad, la respuesta será enviada al comercio mediante un
POSTa la url enviada en el parámetro onSuccess|onError|onCancel. Los datos se enviarán en formatoapplication/x-www-form-urlencoded. -
Asegurate de tener una página que pueda recibir este tipo de datos, puedes utilizar tecnologías como
PHP,ASPo algún tipo de lenguajes del lado del servidor. -
En esta modalidad no aplica el parámetro
callbackResponse.
A continuación, se explica cómo recibir y procesar estos datos en diferentes lenguajes y frameworks:
- Express
- PHP
- .NET (C#)
- Java (Spring Boot)
- Python (Flask)
- Otros
Para recibir datos en formato application/x-www-form-urlencoded en Express, debes usar el middleware express.urlencoded(). Esto parseará automáticamente los datos y los convertirá en un objeto JSON en req.body.
const express = require('express');
const app = express();
// Middleware para parsear application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));
app.post('/webhook', (req, res) => {
console.log(req.body); // Los datos estarán en req.body
const { firstName, transactionId } = req.body;
console.log('Nombre:', firstName);
console.log('ID de transacción:', transactionId);
res.send('Datos recibidos');
});
app.listen(3000, () => {
console.log('Servidor escuchando en el puerto 3000');
});
En PHP, los datos enviados en formato application/x-www-form-urlencoded se reciben automáticamente en la superglobal $_POST. Puedes acceder a los campos directamente por su nombre.
<?php
// Ejemplo de recepción de datos en PHP
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$firstName = $_POST['firstName'];
$transactionId = $_POST['transactionId'];
echo "Nombre: $firstName, ID de transacción: $transactionId";
} else {
echo "Método no permitido";
}
?>
En .NET, puedes usar [FromForm] para recibir datos en formato application/x-www-form-urlencoded.
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class WebhookController : ControllerBase
{
[HttpPost]
public IActionResult HandleWebhook(
[FromForm] string firstName,
[FromForm] string transactionId)
{
Console.WriteLine($"Nombre: {firstName}, ID de transacción: {transactionId}");
return Ok("Datos recibidos");
}
}
En Spring Boot, puedes usar la anotación @RequestParam para recibir datos en formato application/x-www-form-urlencoded.
import org.springframework.web.bind.annotation.*;
@RestController
public class WebhookController {
@PostMapping("/webhook")
public String handleWebhook(
@RequestParam String firstName,
@RequestParam String transactionId) {
System.out.println("Nombre: " + firstName);
System.out.println("ID de transacción: " + transactionId);
return "Datos recibidos";
}
}
En Flask, puedes usar request.form para acceder a los datos enviados en formato application/x-www-form-urlencoded.
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def handle_webhook():
first_name = request.form['firstName']
transaction_id = request.form['transactionId']
print(f"Nombre: {first_name}, ID de transacción: {transaction_id}")
return 'Datos recibidos'
if __name__ == '__main__':
app.run(port=3000)
Si estás utilizando otro lenguaje o framework, consulta la documentación oficial para recibir datos en formato application/x-www-form-urlencoded.
Demo
A continuación, te invitamos a explorar nuestra demo interactiva.
const config = { render: { typeForm: 'redirect' } } render ( <Izipay config={config} /> )