Mostrar un QR CoDi
Este tutorial muestra cómo crear un QR CoDi usando la API y mostrarlo como una imagen escaneable.
Necesitas una API key con una cuenta de pago codi. Consulta Crear una API key.
1. Crea un QR CoDi
Envía una solicitud POST al endpoint /codi/qr. Para más información revisa la Referencia de la API.
import requests
import json
url = "https://api.pey.mx/codi/qr"
payload = json.dumps({
"amount": 150,
"concept": "Order #9423",
"expiration": 0,
"numRef": "9423"
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer <your-api-key>'
}
response = requests.request("POST", url, headers=headers, data=payload)
La respuesta contendrá el qrString que necesitas codificar en una imagen QR:
{
"id": "35f8361d2b",
"qrString": "{\"TYP\":20,\"v\":{\"DEV\":\"29442719514356328159/0\"},\"ic\":{\"IDC\":\"35f8361d2b\",\"SER\":996909821,\"ENC\":\"p1+9ZlUiJWYlrCqtWbwHPiHjFKvgZmsdl7tGXzjxzN70SOyCr+efacdJeCyzfm0M+WW5TGq0wfKmhiYGjBo3Z6Ty95jNlnwL0mCKOzKUn8pYM2zCV6y3viWSHyX6oURLc6SGK1/A9+bS71ctkfxMHEKaZoUpndPbSJJ1meTCkSkoi+e67J83yjpuX33afYGdCboEvfUp5mxjFv9df1s+/IcnnPV5loGTnRZBoZJZg3Z3x2GSN8oYipDXA1oFYLdR00kmMLpPhpJo6zWrBrqvhIh1/NDw5bqYTrLca5nCI/A=\"},\"CRY\":\"r5pqoWD6NVO/UsuQKuGDZMwmsXfXBbzk2xP0dAJYV84=\"}"
}
Si usaste el parámetro generateImage y quieres visualizar el qrImage en base64 directamente en línea, te recomendamos usar base64.guru.
2. Genera la imagen del QR
Usa el qrString de la respuesta para generar una imagen QR escaneable. Instala la librería qrcode:
pip install qrcode
Después genera la imagen:
import qrcode
response_body = response.json()
qr_string = response_body['qrString']
qr = qrcode.QRCode(
version=None,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=10,
border=4,
)
qr.add_data(qr_string)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("codi-qr.png")
La imagen guardada puede escanearse desde cualquier app bancaria compatible con CoDi para completar el pago.
3. Recibe la notificación del pago
Una vez que el QR se escanea y el pago se completa, recibirás un evento de webhook codi.qr.payment_received. Para más información revisa la documentación del webhook Pago de QR CoDi recibido.