SPEI

(payProduct=15)

Proceso de pago

  1. El usuario realiza un pedido en el sitio web del comerciante y elige el pago por SPEI.

  2. El comerciante inicia una solicitud de pago por SPEI a Supefina.

  3. Supefina devuelve la referencia de pago (número CLABE); si "checkOut" es "true", se devuelve una página de caja con el número CLABE; si "checkOut" es "false", solo se devuelve el número CLABE.

  4. El comerciante muestra esa referencia de pago (número CLABE) al usuario.

  5. El usuario copia esa referencia de pago (número CLABE).

  6. El usuario abre la app del banco, selecciona transferencia, ingresa la referencia de pago copiada (número CLABE) y el monto para completar la transferencia.

  7. Supefina notifica al comerciante que el pedido fue exitoso.

Dirección de solicitud

Nombre del entorno
URL

SandBox

POST https://api.supefina.tech/api/supefina/transactions/payin

Producción

POST https://api.supefina.net/api/supefina/transactions/payin

Parámetros de solicitud

Encabezado de solicitud

Key
Value

Content-Type

application/json

Cuerpo de solicitud

Nombre de variable
Tipo
Obligatorio
Descripción

countryId

String

Código del país Referencia:Tabla de diccionario-Código del país Mexico:MEX

currency

String

Moneda Referencia:Tabla de diccionario-Moneda Peso mexicano:MXN

payProduct

String

Tipo de pago SPEI:15

maxOrderAmount

String

Monto máximo

Debe ser mayor o igual al monto de pedido

minOrderAmount

String

Monto mínimo

Debe ser menor o igual al monto de pedido

orderAmount

String

Monto del pedido

  1. Si no se ingresan (máximo y mínimo) montos del pedido, se validará el orderAmount; si el monto pagado no es igual a orderAmount, se rechazará el pago.

  2. Si se ingresan (máximo y mínimo) montos del pedido, se validará dentro de ese rango.

  3. Unidad en pesos, se pueden ingresar decimales, soporta hasta dos decimales.

  4. Si se utilizan los parámetros orderAmount, repeat, maxOrderAmount, minOrderAmount, y el monto de pago no cumple con los requisitos, la transacción será rechazada; el canal cobrará una tarifa fija de 6 pesos, y las tarifas generadas por el rechazo serán asumidas por el comerciante. Por favor, considere cuidadosamente.

repeat

Boolean

Si se reutiliza Clabe true:uso múltiple false:uso único

merId

String

ID del comerciante

Ruta para obtener el ID del comerciante: Panel de comerciante Supefina - Gestión de comerciantes - Información básica - ID del comerciante

merOrderNo

String

Número de pedido del comerciante

nonceStr

String

Cadena aleatoria

La longitud no puede exceder 32 caracteres

callbackUrl

String

No

Dirección de callback

Consulte la explicación de notificación de callback

Ejemplo de solicitud

{
	"callbackUrl": "https://test.com",
	"countryId": "MEX",
	"currency": "MXN",
	"maxOrderAmount": "15000.00",
	"merId": "8302921196770572",
	"merOrderNo": "2025072419233923321993765",
	"minOrderAmount": "10.00",
	"nonceStr": "737eb662f1384c4490c77d7565518d22",
	"orderAmount": "30",
	"payProduct": "15",
	"repeat": true,
	"sign": "C7AC1590DCFF78529C5B433F4500CC8A"
}

ensamblar una cadena de firma

callbackUrl=https://test.com&countryId=MEX&currency=MXN&maxOrderAmount=15000.00&merId=8302921196770572&merOrderNo=2025072419233923321993765&minOrderAmount=10.00&nonceStr=737eb662f1384c4490c77d7565518d22&orderAmount=30&payProduct=15&repeat=true&key=de53650e1a6b494087d8c472516cc1cb

Parámetros de respuesta

Nombre de variable
Tipo
Descripción

code

String

Código de respuesta Referencia específica: Códigos de estado de respuesta

data

Object

Datos de respuesta

amount

BigDecimal

Monto del pedido

channelName

String

Banco correspondiente a Clabe

identifier

String

Identificador de referencia del pago Clabe

merCode

String

ID de comerciante

merOrderNo

String

Número de pedido del comerciante

transactionStatus

String

Estado del pedido. Este estado indica si la solicitud fue exitosa, sin relación con el estado real de la transacción.

00: Pedido exitoso;

04: Pedido fallido.

url

String

Enlace de la transacción

msg

String

Descripción de la respuesta

Ejemplo de respuesta

{
	"code": "200",
	"msg": "success ",
	"data": {
		"merCode": "8302921196770572",
		"merOrderNo": "2025072419233923321993765",
		"amount": 30,
		"transactionStatus": "00",
		"url": "https://h5.supefina.net/clabe?token=tg3njqvv98nvml8i",
		"identifier": "736869302197372480",
		"channelName": "DEMO"
	}
}

Notificación de callback

Método de envío: POST

Nombre de variable
Tipo
Descripción

payerName

String

Nombre del pagador

payerAccount

String

Número de cuenta del pagador

amount

String

Monto del pedido

countryId

String

Código del país.

Referencia: Tabla de diccionario - Códigos de país

México: MEX

fee

String

Comisión anticipada

identifier

String

Referencia de pago Clabe

merId

String

ID del comerciante

merOrderId

String

Número de pedido del comerciante

msg

String

Descripción de la respuesta

nonceStr

String

Cadena aleatoria

La longitud no puede exceder 32 caracteres

realityAmount

String

Monto recibido

realityFee

String

Comisión recibida

reference

String

Identificador

sign

String

Firma

successTime

Date

Tiempo de éxito de la transacción

Hora UTC

supefinaOrderId

String

Número del pedido de Supefina

transactionType

String

Tipo de transacción 01:Payin 02:Payout

Ejemplo de notificación de callback

{
	"amount": "30.00",
	"countryId": "MEX",
	"fee": "1.00",
	"identifier": "736869302197372480",
	"merId": "8302921196770572",
	"merOrderId": "2025072419233923321993765",
	"msg": "交易成功",
	"nonceStr": "b607adb6-bec4-44cc-a60a-7d3c4c",
	"realityAmount": "30",
	"realityFee": "1.00",
	"reference": "CRTYPODPDYJW4V2XK5QZ6LGSNYRPG5R",
	"sign": "1A341F36DE64A915D62A11721DEC0EB1",
	"status": "01",
	"successTime": 1753356221224,
	"supefinaOrderId": "202507b926c36081de43ee9a1cfb9ade91ef5a",
	"transactionType": "01"
}

ensamblar una cadena de firma

callbackUrl=https://test.com&countryId=MEX&currency=MXN&maxOrderAmount=15000.00&merId=8302921196770572&merOrderNo=2025072419233923321993765&minOrderAmount=10.00&nonceStr=737eb662f1384c4490c77d7565518d22&orderAmount=30&payProduct=15&repeat=true&key=de53650e1a6b494087d8c472516cc1cb

Respuesta de notificación de callback

Después de que el comerciante reciba correctamente la notificación de callback, debe devolver la cadena especificada: SUCCESS. Si no se devuelve o se devuelve otro contenido, se considerará que la notificación ha fallado. Por ejemplo:

public String test(){
	return "SUCCESS";
}

Atención

Después de que el usuario complete el pago, el sistema de pago enviará los resultados relacionados a través de un flujo de datos al comerciante, quien deberá recibir y procesar esta información, y devolver una respuesta conforme a la normativa del documento.

  1. La misma notificación puede ser enviada varias veces al sistema del comerciante. El sistema del comerciante debe ser capaz de manejar correctamente las notificaciones duplicadas.

  2. Durante la interacción de notificaciones en segundo plano, si el sistema de pago recibe una respuesta del comerciante que no cumple con la normativa o si hay un tiempo de espera, el sistema de pago considerará que la notificación ha fallado y volverá a enviar la notificación (si la notificación sigue sin tener éxito, el sistema de pagos realizará múltiples intentos, con una frecuencia de 0min/3min/6min/9min/12min), pero el sistema de pago no garantiza que la notificación finalmente tenga éxito.

  3. En caso de que el estado del pedido sea incierto o no se haya recibido la notificación del resultado del pago, se recomienda que el comerciante llame proactivamente a la [API de consulta] para confirmar el estado del pedido.

  4. En caso de pagos duplicados, SPEI puede presentar situaciones de múltiples pagos; por favor, tenga en cuenta cómo manejar las notificaciones de múltiples pagos recibidas. En caso de múltiples pagos, Supefina creará varios pedidos y notificará al comerciante varias veces; el comerciante puede determinar si se trata del mismo pedido a través del supefinaOrderId en la notificación. Al realizar múltiples pagos, el identifier permanece igual, mientras que el supefinaOrderId y el reference son diferentes cada vez (en el caso del banco HSBC, puede haber múltiples pagos con el mismo reference).

Última actualización