Skip to content

API Unipay para comercios agente

Esta pagina es una referencia completa de integracion. Puede completar la integracion sin descargar el archivo YAML.

Resumen

Modelo de comercio

Los comercios agente usan enrutamiento ascendente transparente. No envie campos de ruta ascendente; el backend selecciona un canal ISV habilitado.

sign en los ejemplos es un marcador. Debe generarse con los campos reales segun las reglas de firma.

Estructura de respuesta

CampoTipoRequeridoDescripcion
codeinteger(int32)SiCodigo de respuesta de negocio.
msgstringSiMensaje de respuesta de negocio.
dataobject|nullNoCarga util de respuesta.
signstringNoResponse signature signed by the platform.
resTimestring(date-time)NoHora de respuesta.
traceIdstringNoTrace ID para diagnostico.

Lista de APIs

RutaAPIDescripcion
POST /unipay/payPagoCrea una orden de pago de cuenta virtual Mexico e inicia el procesamiento.
POST /unipay/options/pay-methodsListar metodos de pagoLista los metodos de pago disponibles para el comercio actual.
POST /unipay/options/payee-typesListar tipos de beneficiarioLista los tipos de beneficiario disponibles para transferencias.
POST /unipay/options/payee-codesListar codigos de beneficiarioLista los codigos publicos de Ginx disponibles para un payeeType.
POST /unipay/closeCerrar o cancelar pagoCierra una orden de pago no finalizada, opcionalmente usando cancelacion.
POST /unipay/inquryConsulta previa de transferenciaValida la cuenta receptora antes de crear una transferencia.
POST /unipay/transferTransferenciaCrea y envia una orden de transferencia.
POST /unipay/query/payOrderConsultar orden de pagoConsulta el estado actual y los detalles de una orden de pago.
POST /unipay/query/transferOrderConsultar transferenciaConsulta el estado actual y los detalles de una transferencia.
POST /unipay/sync/order/paySincronizar pagoSincroniza el estado de pago desde el upstream y ajusta la orden local.

Pago

Crea una orden de pago de cuenta virtual Mexico e inicia el procesamiento.

Llamelo despues de crear la orden del comercio. Use mex_virtual_account como metodo. La respuesta devuelve el numero de orden, estado y cuerpo de pago de cuenta virtual.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/pay
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
bizOrderNostringSiminLength=1, maxLength=100Numero de orden del comercio.
titlestringSiminLength=1, maxLength=100Titulo del pago.
descriptionstringNomaxLength=50Descripcion del pago.
expiredTimestring(date-time)NoNingunaHora de expiracion.
methodstringSiminLength=1, maxLength=32Codigo de metodo de pago.
limitPaystringNomaxLength=128Codigo de restriccion de pago.
amountnumber(double)Siminimum=0.01Importe de la transaccion.
extraParamstringNomaxLength=2048Parametros extendidos en formato JSON string.
attachstringNomaxLength=500Datos adjuntos del comercio devueltos en callbacks.
returnUrlstringNomaxLength=200URL de retorno del navegador.
quitUrlstringNomaxLength=200URL de salida.
notifyUrlstringNomaxLength=200URL de callback asincrono.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "bizOrderNo": "BIZ-PAY-20260414-001",
  "title": "Order Payment",
  "description": "Payment for order #001",
  "expiredTime": "2026-04-14 12:00:00",
  "method": "mex_virtual_account",
  "limitPay": "string",
  "amount": 12.5,
  "extraParam": "{\"scene\":\"mobile\"}",
  "attach": "{\"orderTag\":\"vip\"}",
  "returnUrl": "https://merchant.example.com/return",
  "quitUrl": "https://merchant.example.com/quit",
  "notifyUrl": "https://merchant.example.com/callback"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
bizOrderNostringNoNumero de orden del comercio.
orderNostringNoNumero de orden de pago de plataforma.
statusstringNoEstado de negocio.
payBodystringNoCuerpo de pago para iniciar el pago.

Valores comunes

Metodo de pago

valueDescripcion
mex_virtual_accountMEX 虚拟账户入金

Restriccion de pago

valueDescripcion
no_credit限制信用卡支付

Estado de pago

valueDescripcion
wait待支付
progress支付中
success成功
close支付关闭
cancel支付撤销
fail失败
timeout支付超时

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizOrderNo": "BIZ-PAY-20260414-001",
    "orderNo": "P202604140001",
    "status": "success",
    "payBody": "{\"qrCode\":\"https://...\"}"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Callback

Callback de orden de pago

La plataforma envia un callback POST a notifyUrl cuando cambia el estado de la orden. Content-Type es application/json.

El cuerpo es DaxNoticeResult<PayOrderResult>. data usa los mismos campos que la respuesta de consulta de orden.

La plataforma firma sign con su llave privada. El comercio verifica con la llave publica de la plataforma y debe devolver texto plano SUCCESS cuando procese correctamente.

El timeout es 15 segundos. Los callbacks fallidos se reintentan hasta 16 veces. Procese el callback de forma idempotente por numero de orden de plataforma o numero de negocio del comercio.

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizOrderNo": "BIZ-PAY-20260414-001",
    "orderNo": "P202604140001",
    "title": "Order Payment",
    "description": "Payment for order #001",
    "method": "mex_virtual_account",
    "limitPay": "string",
    "amount": 12.5,
    "fee": 0.01,
    "realAmount": 0.01,
    "status": "success",
    "settleStatus": "not_settle",
    "settleType": "D+1",
    "settleTime": "2026-04-14 12:00:00",
    "payTime": "2026-04-14 12:00:00",
    "closeTime": "2026-04-14 12:00:00",
    "expiredTime": "2026-04-14 12:00:00",
    "attach": "{\"orderTag\":\"vip\"}"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a",
  "noticeType": "order_status_changed",
  "mchNo": "M2026000001",
  "appId": "APP20260001"
}

Respuesta del comercio

text
SUCCESS

Listar metodos de pago

Lista los metodos de pago disponibles para el comercio actual.

Use antes de mostrar metodos de pago o construir una solicitud de pago. Los comercios agente no reciben detalles del canal ascendente.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/options/pay-methods
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

Ninguna

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
codestringNoCodigo de respuesta de negocio.
namestringNo名称

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "code": "mex_virtual_account",
      "name": "MEX虚拟账户入金"
    }
  ],
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Listar tipos de beneficiario

Lista los tipos de beneficiario disponibles para transferencias.

Use antes de mostrar tipos de beneficiario o construir solicitudes de inqury/transferencia.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/options/payee-types
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

Ninguna

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
codestringNoCodigo de respuesta de negocio.
namestringNo名称

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "code": "spei_transfer",
      "name": "SPEI 转账"
    }
  ],
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Listar codigos de beneficiario

Lista los codigos publicos de Ginx disponibles para un payeeType.

Use cuando el tipo de beneficiario requiere codigo de banco o institucion. Use los codigos devueltos por Ginx en inqury y transferencia; no envie codigos upstream de OPM/Fintoc.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/options/payee-codes
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
payeeTypestringSiminLength=1, maxLength=32Tipo de cuenta receptora.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "payeeType": "spei_transfer"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
codestringNoCodigo de respuesta de negocio.
namestringNo名称

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "code": "mx_banxico",
      "name": "BANXICO"
    }
  ],
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Cerrar o cancelar pago

Cierra una orden de pago no finalizada, opcionalmente usando cancelacion.

Use esta API cuando la orden expire, el usuario cancele o el comercio detenga el pago. Envie al menos un identificador.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/close
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
orderNostringNomaxLength=100Numero de orden de pago de plataforma.
bizOrderNostringNomaxLength=100Numero de orden del comercio.
useCancelbooleanNoNingunaIndica si se usa modo cancelacion.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "orderNo": "P202604140001",
  "bizOrderNo": "BIZ-PAY-20260414-001",
  "useCancel": true
}

Campo data de respuesta

data es null cuando la operacion es exitosa.

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Consulta previa de transferencia

Valida la cuenta receptora antes de crear una transferencia.

Use esta API para tarjeta bancaria, SPEI u otros escenarios que requieren validar la cuenta.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/inqury
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
bizInquryNostringSiminLength=1, maxLength=100Numero de consulta del comercio.
payeeTypestringSiminLength=1, maxLength=32Tipo de cuenta receptora.
payeeAccountstringSiminLength=1, maxLength=100Cuenta receptora.
payeeNamestringNomaxLength=50Nombre del receptor.
payeeCodestringNomaxLength=64Codigo publico de Ginx devuelto por la API de payee-codes. No envie codigos upstream de banco o institucion.
extraParamstringNomaxLength=2048Parametros extendidos en formato JSON string.
attachstringNomaxLength=500Datos adjuntos del comercio devueltos en callbacks.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "bizInquryNo": "BIZ-INQURY-20260414-001",
  "payeeType": "spei_transfer",
  "payeeAccount": "6222020202020202",
  "payeeName": "ZHANG SAN",
  "payeeCode": "mx_banxico",
  "extraParam": "{\"scene\":\"mobile\"}",
  "attach": "{\"orderTag\":\"vip\"}"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
bizInquryNostringNoNumero de consulta del comercio.
inquryNostringNoNumero de consulta de plataforma.
statusstringNoEstado de negocio.
accountValidbooleanNoIndica si la cuenta receptora es valida.
uploadPayeeNamestringNoNombre del receptor enviado por el comercio.

Valores comunes

Tipo de receptor

valueDescripcion
user_id用户 ID
open_idOpenId
login_name用户账号
bank_card银行卡
spei_transferSPEI 转账

Estado de consulta previa

valueDescripcion
valid账户有效
invalid账户无效
unknown未知

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizInquryNo": "BIZ-INQURY-20260414-001",
    "inquryNo": "string",
    "status": "valid",
    "accountValid": true,
    "uploadPayeeName": "ZHANG SAN"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Transferencia

Crea y envia una orden de transferencia.

Use esta API para pagos salientes como retiros, transferencia bancaria o SPEI. Se recomienda consulta previa.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/transfer
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
bizTransferNostringSiminLength=1, maxLength=100Numero de transferencia del comercio.
amountnumber(double)Siminimum=0.01Importe de la transaccion.
titlestringNomaxLength=100Titulo del pago.
reasonstringNomaxLength=50Motivo o comentario.
payeeTypestringSiminLength=1, maxLength=32Tipo de cuenta receptora.
payeeAccountstringSiminLength=1, maxLength=100Cuenta receptora.
payeeNamestringNomaxLength=50Nombre del receptor.
payeeCodestringNomaxLength=64Codigo publico de Ginx devuelto por la API de payee-codes. No envie codigos upstream de banco o institucion.
extraParamstringNomaxLength=2048Parametros extendidos en formato JSON string.
attachstringNomaxLength=500Datos adjuntos del comercio devueltos en callbacks.
notifyUrlstringNomaxLength=200URL de callback asincrono.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "bizTransferNo": "BIZ-TRANSFER-20260414-001",
  "amount": 12.5,
  "title": "Order Payment",
  "reason": "Manual operation remark",
  "payeeType": "spei_transfer",
  "payeeAccount": "6222020202020202",
  "payeeName": "ZHANG SAN",
  "payeeCode": "mx_banxico",
  "extraParam": "{\"scene\":\"mobile\"}",
  "attach": "{\"orderTag\":\"vip\"}",
  "notifyUrl": "https://merchant.example.com/callback"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
bizTransferNostringNoNumero de transferencia del comercio.
transferNostringNoNumero de transferencia de plataforma.
statusstringNoEstado de negocio.

Valores comunes

Tipo de receptor

valueDescripcion
user_id用户 ID
open_idOpenId
login_name用户账号
bank_card银行卡
spei_transferSPEI 转账

Estado de transferencia

valueDescripcion
progress转账中
success转账成功
close转账关闭
fail转账失败

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizTransferNo": "BIZ-TRANSFER-20260414-001",
    "transferNo": "T202604140001",
    "status": "progress"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Callback

Callback de transferencia

La plataforma envia un callback POST a notifyUrl cuando cambia el estado de la orden. Content-Type es application/json.

El cuerpo es DaxNoticeResult<TransferOrderResult>. data usa los mismos campos que la respuesta de consulta de orden.

La plataforma firma sign con su llave privada. El comercio verifica con la llave publica de la plataforma y debe devolver texto plano SUCCESS cuando procese correctamente.

El timeout es 15 segundos. Los callbacks fallidos se reintentan hasta 16 veces. Procese el callback de forma idempotente por numero de orden de plataforma o numero de negocio del comercio.

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizTransferNo": "BIZ-TRANSFER-20260414-001",
    "transferNo": "T202604140001",
    "amount": 12.5,
    "fee": 0.01,
    "title": "Order Payment",
    "reason": "Manual operation remark",
    "payeeType": "spei_transfer",
    "payeeAccount": "6222020202020202",
    "payeeName": "ZHANG SAN",
    "payeeCode": "mx_banxico",
    "status": "success",
    "finishTime": "2026-04-14 12:00:00",
    "attach": "{\"orderTag\":\"vip\"}"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a",
  "noticeType": "order_status_changed",
  "mchNo": "M2026000001",
  "appId": "APP20260001"
}

Respuesta del comercio

text
SUCCESS

Consultar orden de pago

Consulta el estado actual y los detalles de una orden de pago.

Use esta API cuando el estado sea incierto, el callback se retrase o se requiera conciliacion.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/query/payOrder
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
orderNostringNomaxLength=100Numero de orden de pago de plataforma.
bizOrderNostringNomaxLength=100Numero de orden del comercio.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "orderNo": "P202604140001",
  "bizOrderNo": "BIZ-PAY-20260414-001"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
bizOrderNostringNoNumero de orden del comercio.
orderNostringNoNumero de orden de pago de plataforma.
titlestringNoTitulo del pago.
descriptionstringNoDescripcion del pago.
methodstringNoCodigo de metodo de pago.
limitPaystringNoCodigo de restriccion de pago.
amountnumber(double)NoImporte de la transaccion.
feenumber(double)NoImporte de comision.
realAmountnumber(double)NoImporte neto recibido.
statusstringNoEstado de negocio.
settleStatusstringNoEstado de liquidacion.
settleTypestringNoTipo de liquidacion.
settleTimestring(date-time)NoHora de liquidacion.
payTimestring(date-time)NoHora de pago.
closeTimestring(date-time)NoHora de cierre.
expiredTimestring(date-time)NoHora de expiracion.
attachstringNoDatos adjuntos del comercio devueltos en callbacks.

Valores comunes

Estado de pago

valueDescripcion
wait待支付
progress支付中
success成功
close支付关闭
cancel支付撤销
fail失败
timeout支付超时

Estado de liquidacion

valueDescripcion
not_settle未结算
settled已结算

Tipo de liquidacion

valueDescripcion
REALTIME实时
D+1D+1
D+2D+2
D+3D+3

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizOrderNo": "BIZ-PAY-20260414-001",
    "orderNo": "P202604140001",
    "title": "Order Payment",
    "description": "Payment for order #001",
    "method": "mex_virtual_account",
    "limitPay": "string",
    "amount": 12.5,
    "fee": 0.01,
    "realAmount": 0.01,
    "status": "success",
    "settleStatus": "not_settle",
    "settleType": "D+1",
    "settleTime": "2026-04-14 12:00:00",
    "payTime": "2026-04-14 12:00:00",
    "closeTime": "2026-04-14 12:00:00",
    "expiredTime": "2026-04-14 12:00:00",
    "attach": "{\"orderTag\":\"vip\"}"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Consultar transferencia

Consulta el estado actual y los detalles de una transferencia.

Use esta API cuando el estado sea incierto, el callback se retrase o se requiera conciliacion.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/query/transferOrder
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
bizTransferNostringNomaxLength=100Numero de transferencia del comercio.
transferNostringNomaxLength=32Numero de transferencia de plataforma.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "bizTransferNo": "BIZ-TRANSFER-20260414-001",
  "transferNo": "T202604140001"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
bizTransferNostringNoNumero de transferencia del comercio.
transferNostringNoNumero de transferencia de plataforma.
amountnumber(double)NoImporte de la transaccion.
feenumber(double)NoImporte de comision.
titlestringNoTitulo del pago.
reasonstringNoMotivo o comentario.
payeeTypestringNoTipo de cuenta receptora.
payeeAccountstringNoCuenta receptora.
payeeNamestringNoNombre del receptor.
payeeCodestringNoCodigo publico de Ginx devuelto por la API de payee-codes. No envie codigos upstream de banco o institucion.
statusstringNoEstado de negocio.
finishTimestring(date-time)NoHora de finalizacion.
attachstringNoDatos adjuntos del comercio devueltos en callbacks.

Valores comunes

Tipo de receptor

valueDescripcion
user_id用户 ID
open_idOpenId
login_name用户账号
bank_card银行卡
spei_transferSPEI 转账

Estado de transferencia

valueDescripcion
progress转账中
success转账成功
close转账关闭
fail转账失败

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "bizTransferNo": "BIZ-TRANSFER-20260414-001",
    "transferNo": "T202604140001",
    "amount": 12.5,
    "fee": 0.01,
    "title": "Order Payment",
    "reason": "Manual operation remark",
    "payeeType": "spei_transfer",
    "payeeAccount": "6222020202020202",
    "payeeName": "ZHANG SAN",
    "payeeCode": "mx_banxico",
    "status": "success",
    "finishTime": "2026-04-14 12:00:00",
    "attach": "{\"orderTag\":\"vip\"}"
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Sincronizar pago

Sincroniza el estado de pago desde el upstream y ajusta la orden local.

Use esta API para callbacks retrasados, estados en proceso por mucho tiempo o recuperacion manual.

Solicitud

CampoDescripcion
MetodoPOST
Ruta/unipay/sync/order/pay
Content-Typeapplication/json

Parametros comunes

CampoTipoRequeridoRestriccionDescripcion
mchNostringSimaxLength=32Numero de comercio.
appIdstringNomaxLength=32ID de aplicacion.
reqTimestring(date-time)Siyyyy-MM-dd HH:mm:ssHora de solicitud en formato yyyy-MM-dd HH:mm:ss.
nonceStrstringNomaxLength=32Nonce aleatorio. Use un valor unico por solicitud.
signstringSimaxLength=1024Firma de la solicitud.
clientIpstringNomaxLength=64Direccion IP del cliente.

Parametros de negocio

CampoTipoRequeridoRestriccionDescripcion
orderNostringNomaxLength=100Numero de orden de pago de plataforma.
bizOrderNostringNomaxLength=100Numero de orden del comercio.

Ejemplo de solicitud

json
{
  "clientIp": "127.0.0.1",
  "nonceStr": "nonce-20260414-001",
  "sign": "<BASE64_RSA_SIGNATURE>",
  "reqTime": "2026-04-14 12:00:00",
  "mchNo": "M2026000001",
  "appId": "APP20260001",
  "orderNo": "P202604140001",
  "bizOrderNo": "BIZ-PAY-20260414-001"
}

Campo data de respuesta

CampoTipoRequeridoDescripcion
orderStatusstringNoEstado de orden despues de sincronizacion.
adjustbooleanNoIndica si los datos locales fueron ajustados.

Valores comunes

Estado de pago

valueDescripcion
wait待支付
progress支付中
success成功
close支付关闭
cancel支付撤销
fail失败
timeout支付超时

Ejemplo de respuesta exitosa

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "orderStatus": "success",
    "adjust": true
  },
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Ejemplo de error

json
{
  "code": 20052,
  "msg": "验签失败",
  "data": null,
  "sign": "<BASE64_RSA_SIGNATURE>",
  "resTime": "2026-04-14 12:00:01",
  "traceId": "f8e44de6f6a1467bb9cbf9be92f0ff3a"
}

Descarga YAML