Saltar al contenido principal

Mostrar un QR CoDi

Este tutorial muestra cómo crear un QR CoDi usando la API y mostrarlo como una imagen escaneable.

aviso

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=\"}"
}
info

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.

Ejemplo de QR CoDi

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.