H Honor
ES
DiDi finanzas

Documentos

Proporciona pautas de integración, documentación de API, instrucciones de prueba y otra información necesaria a lo largo del proceso de integración

2.3 Create Payment Order

2.3 Crear orden de pago

  • Ruta: /external/checkout/V1

  • Método: POST

  • Descripción API: Esta API es la principal API para crear la Orden. Cuando los usuarios seleccionan el método de pago DiDi Paga Después en su página de pago, su sistema debe activar la API Crear Orden de Pago.

Mensaje de solicitud

Encabezados de la solicitud

Nombre del campo Descripción del campo Valor del parámetro Presente(Obligatorio / Opcional / Condicional) Observaciones
Content-Type Tipo de contenido aplicación/json Obligatorio
Authorization Este es el valor de autenticación de la identidad del socio. Portador {ACCESS-TOKEN} Obligatorio Para más detalles, consulte la "Parte 2 Configuración de socio de DiDi BNPL y Env. Configuración".
El socio puede obtener el valor del TOKEN DE ACCESO mediante la llamada a la API de tokens.
Cuando caduque el acceso, vuelva a llamar a la API de tokens para obtener el nuevo token de acceso.
X-Paylater-Request-Id UUID UUID.
Ejemplo: 550e8400-e29b-41d4-a716-446655440000
Obligatorio Cadena UUID v4 obligatoria. DiDi rechazará las solicitudes con formato no válido.

Cuerpo de la solicitud

Nombre del campo Tipo Descripción del campo Presente(Obligatorio / Opcional / Condicional) Observaciones
partnerUid Cadena ID de usuario del comerciante Obligatorio Esperar el UID del lado del comerciante
partnerOrderId Cadena ID del pedido de pago del comerciante (Clave idempotente). Obligatorio Clave idempotente.
El número de serie de pago único generado por el comerciante para esta transacción específica.
⚠ESSENCIAL PARA LAS OPERACIONES:
Este identificador debe ser claramente visible y consultable en su sistema de atención al cliente (CS) y en su sistema de gestión de pedidos (OMS).
Servirá como el número de referencia principal para la conciliación entre plataformas, la resolución de problemas y la gestión de las quejas de los clientes.
Por favor, NO utilice identificadores ocultos en el backend ni claves primarias de la base de datos, ya que esto provocará serios inconvenientes y altos costos de comunicación durante las escaladas de incidencias.
orderCreateTime Cadena Hora de creación del pedido Obligatorio Este campo debe representar el momento exacto en que el usuario final hace clic para realizar el pedido (es decir, el tiempo de generación del pedido original).
Formato: ISO 8601 aaaa-MM-dd'T'HH:mm:ss.SSSXXX. (Nota: SSS representa milisegundos de 3 dígitos, y XXX representa el desplazamiento de la zona horaria).
Zona horaria: El Desplazamiento de zona horaria es estrictamente necesario. DiDi lo normalizará automáticamente a la hora local según el desplazamiento proporcionado. Ejemplos:
  • Tiempo de Ciudad de México: 2025-12-08T14:30:15.123-06:00

  • Hora de Pekín: 2025-12-08T14:30:15.123 + 08:00
partnerOrderAmount Largo Monto del pedido Obligatorio El importe real del pago después de aplicar todos los descuentos del comerciante.
Cálculo: La cantidad bruta debe multiplicarse por 100. (NO pasar números de punto flotante/decimales).
Moneda y unidad: Debe corresponder al peso mexicano (MXN). La unidad requerida es el centavo (la unidad monetaria mínima).
Ejemplo:> Para un valor de pedido de 99,99 MXN, el valor debe ser transmitido 9999.
redirectUrl Cadena Redirigir URL Obligatorio Después de que se complete la operación de pago en la página de DiDi Paga Después, independientemente de su éxito o fracaso, esta URL será analizada y devuelta.
Esto es principalmente una interacción de página a página.
No verificará si la URL puede ser redirigida.
redirectAppLink Cadena App redirigir enlace Condicional El enlace utilizado para despertar y redirigir al usuario a la APP nativa del comerciante desde la APP de DiDi al finalizar el pago.
Reglas de uso:
-Si operateSource = APP, este campo es obligatorio.
-Si operateSource = WEB/WAP, este campo es Opcional.
Formato de enlace:
-Fórmula Deep Link: [de la marca Nombre] [Enlace]
-Ejemplo: globalOneTravel:// One/webpage?weburl = HTTPS % 3A % 2F %2Fpay.didiglobal.com%2Fpaga-despues%2Flanding
-Desglose:
> Marca- [globalOneTravel]
Enlace- :// One/webpage?weburl = HTTPS % 3A % 2F %2Fpay.didiglobal.com%2Fpaga-despues%2Flanding]
-Ejemplos> de marca:
** Cliente A: sheme:// webview/load?target = HTTPS % 3A % 2F %2Fpay.merchant-b.com% 2Fgateway % 2Fcallback
expireTime Cadena Tiempo de caducidad Opcional El tiempo de expiración para el enlace de pago.
-Business Logic: Si el usuario no hace clic en "Confirmar pago" antes de esta marca de tiempo, el pedido caduca automáticamente.
-Estrategia de respaldo: si se deja en blanco/no se proporciona, DiDi calculará automáticamente el tiempo de vencimiento como Tiempo actual + N horas según las configuraciones del sistema.
-Formato y zona horaria: ISO 8601 'aaaa-MM-dd 'T'HH:mm:ss.SSSXXX'. El desfase horario es estrictamente obligatorio.
-Ejemplo: 2025-12-08T01:11:33.000-06:00
currency Cadena Moneda Obligatorio México MXN
test Booleano Indicador de observación del pedido de prueba. Opcional Este campo es un indicador de observación de orden de prueba.
**** Entorno de prueba ****
Para el entorno de prueba, el valor debe ser uno de los siguientes:
  • No existe: Este campo no existe.

  • Cierto: es una transacción de prueba. El mismo efecto que el campo vacío.


Entonces, no se realizará ninguna reconciliación y DiDi no limpiará el dinero al cliente.
**** Entorno de producción ****
Para el entorno de producción, solo puede ser uno de los siguientes valores:
  • No existe: Este campo no existe. Esta es una transacción normal de producción.

  • False: es una transacción normal de producción.

  • True: Esta es una transacción de prueba en la producción ENV. Esta transacción no se liquidará y no se incluirá en el archivo de reconciliación.
extendInfo Objeto Información ampliada Obligatorio
deviceInfo Obligatorio
deviceId Cadena Identificador del dispositivo Condicional El identificador del dispositivo utilizado para la prevención del fraude y la evaluación del riesgo crediticio.
  • Lógica de Negocio:

  • SioperateSource = APP: Obligatorio. Debe pasar el identificador de hardware nativo real (por ejemplo, IDFA/IDFV para iOS, o Android ID/OAID para Android).

  • SioperateSource = WEB/WAP: Opcional.
androidId Cadena identificador de dispositivo Android Opcional Se utiliza para la identificación de dispositivos Android.
iosId Cadena ID del dispositivo iOS Opcional IDFA/idfv
Se utiliza para la identificación de dispositivos iOS.
gps Cadena coordenadas de latitud y longitud Opcional Las coordenadas geográficas en tiempo real del usuario final al realizar el pago.
ip Cadena IP pública Obligatorio La dirección IP pública del usuario final en el momento del pago, crucial para la validación regional contra el fraude.
Lógica de Negocio:
-Si operateSource = APP: La dirección IP pública actual del dispositivo móvil del consumidor.
-Si operateSource = WEB/WAP: La dirección IP pública actual del ordenador o navegador del usuario.
CRÍTICO:
NO envíe la dirección IP de su servidor backend ni direcciones IP de la red local interna (por ejemplo, 127.0.0.1, 192.168.x.x), ya que esto provocará un rechazo inmediato por motivos de prevención del fraude.
operateSource Cadena Operación fuente (página web/aplicación) Obligatorio El contexto del canal o de la plataforma donde el usuario final inicia la transacción.
Formato y reglas: Debe coincidir con uno de los siguientes valores de enumeración exactos:
-WAP: Entorno de navegador móvil (por ejemplo, el usuario abre Shein mediante Safari o Chrome en un teléfono móvil sin descargar la aplicación nativa).
-WEB: Entorno de navegador en escritorio o PC.
-APP: Cliente de aplicación móvil nativa.
lang Cadena Idioma Opcional Valor de enumeración:
en-US
es-MX
Si no se pasa o si el valor pasado es inválido, se utiliza el valor predeterminado es-MX.
userInfo Objeto Información del usuario Obligatorio
partnerEmail Cadena Correo electrónico del usuario en el lado del comerciante Condicional Normalmente, este campo es opcional.
Este campo será obligatorio solo cuando su empresa:
  • no se puede proporcionar el partnerPhone debido al diseño de su plataforma, y

  • Obtenga la aprobación del equipo de soporte de DiDi BNPL para eliminar el campo partnerPhone en la API de Crear Orden de Pago.
partnerPhone Cadena Número de teléfono móvil del usuario Obligatorio Este es un campo obligatorio. La información del campo debe ser:
1. Escenario óptimo: El número de teléfono del último inicio de sesión del usuario: la opción más adecuada y sencilla que puedas ofrecer.

2. Opción alternativa: El número de teléfono ingresado por el usuario al cambiar su número vinculado.

3. Opción inferior: El número de teléfono proporcionado originalmente durante el registro del usuario. Si este número de teléfono ha sido cambiado, por favor actualice el nuevo número en DiDi.

Este número de teléfono es uno de los campos más importantes para la transacción de BNPL. Y este campo es obligatorio.
P.D. Si su empresa no puede proporcionar este campo a DiDi por alguna razón específica, le rogamos que se ponga en contacto con el equipo de soporte de BNPL de DiDi para explicar el motivo.
phoneCountryCode Cadena Código de país del número de teléfono móvil del usuario Obligatorio Las mismas reglas que el campo "partnerPhone".
regTime Cadena Hora de registro del usuario Condicional La marca de tiempo en la que el usuario final registró su cuenta en la plataforma del comerciante.
Formato: ISO 8601 aaaa-MM-dd'T'HH:mm:ss.SSSXXX. El desfase horario es estrictamente obligatorio.
Ejemplo: 2025-12-08T01:11:33.000-06:00
Reglas:
Este campo es obligatorio si newUserFlag está ausente.
Este campo es opcional si está presente newUserFlag.
newUserFlag Cadena ¿Nuevo usuario o no? Condicional La bandera que indica si el usuario final es un nuevo usuario registrado en la plataforma del comerciante durante los últimos 30 días.
Formato y reglas: Valor de cadena de enumeración:
-1: Nuevo usuario (registrado en los últimos 30 días).
-0: Usuario existente (registrado hace más de 30 días).
Reglas:
Este campo es obligatorio si regTime está ausente.
Este campo es opcional si está presente regTime.
nickName Cadena Apodo del usuario Opcional
userLevel Cadena Calificación del usuario Opcional La clasificación integral de usuarios o nivel de lealtad en la plataforma del comerciante.
Cadena de texto libre que representa el sistema interno de clasificación de usuarios del comerciante.
Ejemplo: NIVEL_VIP_3 o MIEMBRO_PLATINO o ALTO_PUNTAJE_DE_CRÉDITO u otros.
smeTag Booleano Etiqueta de pequeña empresa Opcional Valores de enumeración: verdadero/falso/nulo
Verdadero: la empresa es una pequeña o microempresa.
Falso: la empresa no es una pequeña ni microempresa.
nulo-no hay datos disponibles.
lastSuccInstrument Cadena Último método de pago exitoso Opcional El instrumento de pago utilizado por el usuario (en la plataforma del comerciante) durante su última transacción exitosa.
fees Lista de objetos Concepto de gasto Opcional Una lista detallada de los gastos adicionales del pedido (por ejemplo, envío, impuestos) utilizada para la presentación desglosada y la auditoría.
type Cadena Tipo Opcional Clasificación de categoría específica de la partida de tarifa, actualmente restringida al valor de enumeración POSTAGE (tarifa de envío/entrega).
Enumeración:
ENVASE DE ENVASE
amount Largo Cantidad de dinero Opcional El valor financiero exacto del concepto de tarifa, expresado como un entero largo en la unidad más pequeña de la moneda (p.por ejemplo, centavos por MXN).
additionalRiskData Cadena datos adicionales de riesgo Opcional Datos adicionales de riesgo
marketingFlag Cadena Bandera de Marketing Opcional La marca que indica si se aplican promociones de marketing, descuentos o campañas a esta transacción.
1 - Marketing
0 - No es marketing
items Lista de objetos Información de los productos Opcional Si hay varias cantidades del mismo SKU, solo es necesario cambiar la cantidad.
categoryId Cadena Identificador único del catálogo de productos Opcional
categoryName Cadena Nombre del catálogo de productos Opcional
skuId Cadena Identificador único del producto SKU Opcional
skuName Cadena Nombre del SKU de los productos Obligatorio Nombre del SKU de los productos
goodsName Cadena Campo de visualización visible para el usuario Opcional Nombre de los productos
unitPrice Largo Precio unitario actual (después del descuento) Opcional La unidad de cantidad es el céntimo. Por ejemplo, si el importe es de 99,99 pesos, el valor que debe enviarse aquí es 9999. Debe transmitirse si existe.
skuCurrency Cadena Moneda Opcional Estándar ISO 4217-México MXN
quantity Entero Número Opcional
pictureUrl Cadena URL de la imagen del producto Opcional
shippingAddress Cadena Dirección de recepción Opcional A la dirección postal
shippingAddress2 Cadena Dirección de recepción Opcional A la dirección del edificio
shippingPostcode Cadena Código postal del recibo Opcional
shippingPhoneNumber Cadena Número de teléfono móvil receptor Opcional
shippingPhoneCountryCode Cadena Código de país del número de teléfono móvil receptor Opcional cincuenta y dos
seller Objeto Información del vendedor Opcional
sellerId Cadena Identificador único del vendedor Condicional El identificador único del vendedor real o del subcomerciante/tienda que realiza la transacción.
-Comerciantes con modelo de plataforma (p. ej., mercados en línea): Estrictamente obligatorio (O) realizar el seguimiento de cada una de las subtiendas individuales.
-Comerciantes de venta directa al consumidor (DTC): Opcional (O).
sellerName Cadena Nombre del vendedor Opcional
sellerRegTime Cadena Hora de registro del vendedor Opcional Patrón: aaaa-MM-dd'T'HH:mm:ss.SSSXXX por ejemplo, '2025-12-08T01:11:33.000-06:00' El desfase horario es obligatorio.
mccCode Cadena Código de categoría del comerciante Condicional Tipo de negocio comercial.
-Comerciantes con modelo de plataforma (p. ej., mercados en línea): Estrictamente obligatorio (O) realizar el seguimiento de cada una de las subtiendas individuales.
-Comerciantes de venta directa al consumidor (DTC): Opcional (O).
type Cadena Tipo de mercancía Opcional Valor de enumeración:
Bien físico
BIEN_VIRTUAL
metadata Cadena Información de metadatos Opcional DiDi Paga Después proporcionará esta información mediante la consulta y el callback de pedidos.
Formato JSON

Ejemplo de solicitud

{
  "partnerUid": "01213121131",
  "partnerOrderId": "ea7ed173-xxxx-11ef-b32d-ca3c6358d263",
  "orderCreateTime": "2026-06-30T14:30:15.123-06:00",
  "partnerOrderAmount": 5000,
  "redirectUrl": "<https://www.merchant.com/h5/orderInfo/index.html>",
  "redirectAppLink": "clientA://one/webpage?weburl=https%3A%2F%2Fapi.merchant-a.com%2Fcheckout%2Fresult",
  "expireTime": "2026-06-30T18:30:15.000-06:00",
  "currency": "MXN",
  "test": true,
  "extendInfo": {
    "deviceInfo": {
      "deviceId": "abcdef123456",
      "androidId": "4af23b10c29d58e1",
      "iosId": "E621E1F8-C36C-495A-93FC-0C247A3E6E5F",
      "gps": "19.4326,-99.1332",
      "ip": "187.137.42.155",
      "operateSource": "APP",
      "lang": "es-MX"
    },
    "userInfo": {
      "partnerEmail": "test@crecmexico.org",
      "partnerPhone": "5522612379",
      "phoneCountryCode": "+52",
      "regTime": "2025-07-12T10:25:06.509-06:00",
      "newUserFlag": "0",
      "nickName": "3wqqw121",
      "userLevel": "VIP_LEVEL_3",
      "smeTag": true,
      "lastSuccInstrument": "SPEI"
    },
    "fees": [
      {
        "type": "POSTAGE-POSTAGE",
        "amount": 100
      }
    ],
    "additionalRiskData": "{}",
    "marketingFlag": "1"
  },
  "items": [
    {
      "categoryId": "mx_mp_001",
      "categoryName": "Electronics",
      "skuId": "mx_mp_phone_001",
      "skuName": "Smartphones",
      "goodsName": "Premium Smartphone 128GB",
      "unitPrice": 4900,
      "skuCurrency": "MXN",
      "quantity": 1,
      "pictureUrl": "<https://img.merchant.com/p/phone001.jpg>",
      "shippingAddress": "Calle la asomada",
      "shippingAddress2": "47 Planta 2",
      "shippingPostcode": "54715",
      "shippingPhoneNumber": "5522612379",
      "shippingPhoneCountryCode": "52",
      "seller": {
        "sellerId": "11312131",
        "sellerName": "test-sell",
        "sellerRegTime": "2024-10-14T02:30:39.000-06:00",
        "mccCode": "5732"
      },
      "type": "PHYSICAL_GOOD"
    }
  ],
  "metadata": "{}"
}

Mensaje de respuesta

Encabezado de respuesta

Nombre del campo Descripción del campo Valor del parámetro Presente(Obligatorio / Opcional / Condicional) Observaciones
Content-Type Tipo de contenido aplicación/json Obligatorio

Cuerpo de la respuesta

Nombre del campo Tipo Descripción del campo Presente(Obligatorio / Opcional / Condicional) Observaciones
code Cadena Código de retorno Obligatorio Valor de enumeración:
SUCCESS
FAILED
RATE_LIMIT
INVALID_TOKEN
message Cadena Descripción del código de respuesta Obligatorio
data Objeto Datos de respuesta Opcional
orderId Cadena ID de pedido Obligatorio DiDi Paga Después side generation
partnerUid Cadena ID de usuario del comerciante Obligatorio
partnerOrderId Cadena ID del documento de pago del comerciante Obligatorio
applyLoanId Cadena Solicitar La ID de préstamo Opcional Loan ID in the DiDi Paga Después side credit core system
partnerOrderAmount Largo Monto del pedido Obligatorio El importe real del pago multiplicado por 100; este importe es el monto final después de aplicar el descuento del comerciante.
La unidad de cantidad es el céntimo. Por ejemplo, si es 99,99 pesos, el valor aquí debería ser 9999.
currency Cadena Moneda Obligatorio ISO 4217 estándar
México MXN
orderStatus Cadena Estado del pedido Obligatorio Enumeración:
INIT : Initialize
PENDING: PENDING
PAYING: PAYING
PAID: PAID
CANCELED: CANCELED
EXPIRED: EXPIRED
DENIED: Rejected
rejectCode Cadena Código de rechazo Opcional El valor existía en el estado DENEGADO.
Enumeración:
ErrorGeneral-ErroreInterno
PaylaterRuleRejected-Rechazado por las reglas de Paylater
RiskRuleRejected-Rechazado por las reglas de control de riesgos
ReembolsoAtrasado: El usuario tiene pagos atrasados.
CréditoInsuficiente-Límite de crédito insuficiente
PaylaterRuleDissatisfy-No cumple con los requisitos de la regla de Paylater
RechazadoPorControlDeRiesgos-Rechazado por el control de riesgos
TradePayFail-Error al gastar
rejectMsg Cadena Motivo de rechazo Opcional El valor existía en el estado DENEGADO.
redirectUrl Cadena URL de redireccionamiento Obligatorio Una vez finalizada la operación de pago en la página de DiDi Paga Después, independientemente de si el pago fue exitoso o no, esta URL será analizada y devuelta.
Esta es principalmente una interacción de página a página.
No verificará si la URL puede redirigirse.
redirectAppLink Cadena Enlace de redireccionamiento de la aplicación Opcional
fuid Largo DiDi Paga Después financial member domain user ID Opcional
metadata Cadena Información de metadatos Opcional DiDi Paga Después proporcionará esta información mediante la consulta y el callback de pedidos.
Formato JSON
paymentEntryUrl Cadena url redirecting to DiDi Paga Después H5 payment page Opcional
expireTime Cadena Tiempo de expiración de esta orden Opcional patrón:aaaa-MM-dd'T'HH:mm:ss.SSSXXX
por ejemplo, '2025-12-08T01:11:33.000+08:00'. El desfase horario es obligatorio.
finishTime Cadena Tiempo de finalización Opcional patrón:aaaa-MM-dd'T'HH:mm:ss.SSSXXX
por ejemplo, '2025-12-08T01:11:33.000+08:00'. El desfase horario es obligatorio.
createTime Cadena Hora de creación del pedido Opcional patrón:aaaa-MM-dd'T'HH:mm:ss.SSSXXX
por ejemplo, '2025-12-08T01:11:33.000+08:00'. El desfase horario es obligatorio.
updateTime Cadena El estado del pedido está retrasado, hay temor. Opcional patrón:aaaa-MM-dd'T'HH:mm:ss.SSSXXX
por ejemplo, '2025-12-08T01:11:33.000+08:00'. El desfase horario es obligatorio.
orderCreateTime Cadena Tiempo de creación de la Orden del lado del comerciante Opcional patrón:aaaa-MM-dd'T'HH:mm:ss.SSSXXX
Zona horaria de la Ciudad de México
por ejemplo, '2025-12-08T01:11:33.000+08:00'. El desfase horario es obligatorio.
test Booleano Etiqueta de la hoja de prueba Opcional
error Objeto Error Opcional
errorCode Cadena Código de error Opcional
errorMessage Cadena Descripción del código de error Opcional

Ejemplo de respuesta

{
    "code": "SUCCESS",
    "message": "SUCCESS",
    "data": {
        "orderId": "189d141e-xxxx-11ef-b32d-ca3c6358d263",
        "partnerUid": "01213121131",
        "partnerOrderId": "1e1e51a8-xxxx-11ef-b32d-ca3c6358d263",
        "partnerOrderAmount": 5000,
        "currency": "MXN",
        "orderStatus": "PENDING",
        "redirectUrl": "<https://www.merchant.com/h5/orderInfo/index.html>",
        "redirectAppLink": "clientA://one/webpage?weburl=https%3A%2F%2Fapi.merchant-a.com%2Fcheckout%2Fresult",
        "fuid": 1231413141,
        "metadata": "{}",
        "paymentEntryUrl": "<https://pay.didiglobal.com/global-bnpl/kyc/?credit_type=full&fuid=1231413141&orderId=189d141e-8d38-11ef-b32d-ca3c6358d263>",
        "expireTime": "2026-06-30T18:26:00.000-06:00",
        "finishTime": null,
        "createTime": "2026-06-30T16:30:39.000-06:00",
        "updateTime": "2026-06-30T16:30:39.000-06:00",
        "orderCreateTime": "2026-06-30T14:30:39.000-06:00",
        "test": true
    },
    "error": null
}
Se copió correctamente.