Titular de la tarjeta presente

Los pagos con el titular de tarjeta presente (CHP) se refieren a transacciones que utilizan un terminal de punto de venta (POS). Los siguientes son los métodos del terminal para la lectura de datos de la tarjeta:

  • inserción de una tarjeta EMV;
  • NFC (Near Field Communication, comunicación de campo cercano) desde una tarjeta sin contacto;
  • deslizamiento de una tarjeta con banda magnética;
  • ingreso del número de la tarjeta con un teclado.

El soporte para todo lo anterior está disponible desde la versión 40 en adelante de API.

El pago con CHP lo inicia un terminal y se envía al motor de pagos como una transacción Verify, Authorize, Capture, Pay o Refund. Por ejemplo, las transacciones que están autorizadas sin conexión mediante el chip de la tarjeta se enviarán solo como Capture, mientras que las transacciones que requieren autorización del emisor utilizarán una transacción Authorize en línea y, a continuación, una transacción Capture.

Las transacciones de CHP interactúan con muchas de las otras características del motor de pagos. Usted puede hacer lo siguiente:

  • tokenizar la tarjeta;
  • reembolsar utilizando la misma integración que sus transacciones de comercio electrónico, o a través de la UI;
  • unificar el comercio electrónico y la reportería de CHP.

Prerrequisitos Copied to Clipboard

Your payment service provider y su adquirente deben habilitarlo para las transacciones con titular de la tarjeta presente.

Campos comunes usados para transacciones CHP Copied to Clipboard

Los siguientes campos de API son relevantes para todas las integraciones del titular de la tarjeta presente a través del motor de pagos.

Campos obligatorios
  • transaction.source=CARD_PRESENT: si no proporciona este campo, se utilizará la fuente de transacción predeterminada que your payment service provider configuró en su vínculo de adquirente. [REST][NVP]


  • sourceOfFunds.type=CARD [REST][NVP]

  • order.amount [REST][NVP]

  • order.currency [REST][NVP]

  • Número de tarjeta: es obligatorio proporcionar el número de la tarjeta, pero, dependiendo de la forma de lectura de la tarjeta, mediante el ingreso con teclado, banda magnética o chip EMV, puede proporcionarlo en:

    .
    • sourceOfFunds.provided.card.number para transacciones digitadas.
    • sourceOfFunds.provided.card.track1 y/o sourceOfFunds.provided.card.track2 para transacciones de banda magnética, o bien

      sus equivalentes de etiqueta EMV, etiqueta 56 y etiqueta 57, proporcionadas respectivamente en sourceOfFunds.provided.card.emvRequest para transacciones sin contacto, donde los datos de la tarjeta están en formato de banda magnética.
    • Etiqueta 5A en sourceOfFunds.provided.card.emvRequest para transacciones EMV (con o sin contacto), donde los datos de la tarjeta están en formato EMV.
    • sourceOfFunds.provided.card.p2pe.payload para Transacciones P2PE (Cifrado punto a punto) donde los datos de la tarjeta están en formato cifrado DUKPT.

  • Identificador de terminal: es obligatorio proporcionar el identificador de terminal, pero, dependiendo de la forma de lectura de la tarjeta, mediante el ingreso con teclado, banda magnética o chip EMV, puede proporcionarlo en:

Campos opcionales

Asegúrese de que los valores de los siguientes campos de terminal de punto de venta se configuren correctamente, según cómo el terminal generó los datos de la tarjeta para la transacción. Si los datos de estos campos están disponibles, siempre proporciónelos. El motor de pagos pasará los datos al adquirente, según sea necesario. Si el adquirente requiere un campo y no está presente, la transacción no se podrá realizar.

  • posTerminal.address
  • posTerminal.attended: si no proporciona este campo, el motor de pagos establece UNKNOWN_OR_UNSPECIFIED como valor predeterminado.
  • posTerminal.authorizationMethod
  • posTerminal.cardHolderActivated: si no proporciona este campo, el motor de pagos establece NOT_CARDHOLDER_ACTIVATED como valor predeterminado.
  • posTerminal.inputCapability: este campo es obligatorio para las transacciones EMV.
  • posTerminal.location: este campo es obligatorio para las transacciones EMV.
  • posTerminal.panEntryMode
  • posTerminal.pinEntryCapability
  • posTerminal.onlineReasonCode: este campo es obligatorio para las transacciones de chip y alternativa de chip (incluyendo reversiones) para todas las transacciones en línea.
  • posTerminal.serialNumber
  • posTerminal.mobile.cardInputDevice: este campo es aplicable a dispositivos POS móviles (mPOS), en los que el dispositivo puede aceptar un toque en la pantalla o el teclado físico para ingresar el PIN. El PIN del software solo debe usarse para dispositivos que no tienen un teclado de hardware para admitir la entrada de PIN. Para conocer los requisitos de integración de mPOS, consulte Integración para usar mPOS.
  • Referencia de API de Terminal de punto de venta [REST][NVP]

  • order.gratuityAmount: proporcione este campo si el pago incluye un monto de propina.
    [REST][NVP]

  • order.cashbackAmount: proporcione este campo si el pago incluye un monto de devolución.
    [REST][NVP]

  • order.cashAdvance: proporcione este campo si el pago incluye un monto de anticipo en efectivo.
    [REST][NVP]

Procesar una transacción EMV Copied to Clipboard

Si los datos de la tarjeta se leyeron desde el chip de una tarjeta (solo tarjetas EMV):

  • Solicite el terminal para estas etiquetas EMV (etiquetas admitidas por el motor de pagos).
  • Proporcione las etiquetas devueltas en el campo sourceOfFunds.provided.card.emvRequest como un objeto JSON en el protocolo REST o como una colección de campos en el protocolo NVP (está bien si su terminal no proporciona todas las etiquetas EMV admitidas).
    Los valores de las etiquetas EMV se deben formatear exactamente como el terminal las devolvió. Los valores binarios se representarán en formato hexadecimal.
  • Complete los campos obligatorios.
  • Complete los campos opcionales, si es necesario.

sourceOfFunds.provided.card.emvRequest [REST][NVP]

Algunas de las etiquetas EMV admitidas corresponden a conceptos de pago básico, como el número de cuenta principal. Estos conceptos también aparecen como campos de solicitud de API, como sourceOfFunds.provided.card.number. La documentación de Referencia de API para estos campos de solicitud de API correspondientes muestra su vinculación en la descripción. Por ejemplo, la descripción para sourceOfFunds.provided.card.number contiene el texto "Este campo corresponde a EMV etiqueta 5A".

Si proporciona datos como una etiqueta EMV, no necesita proporcionar el mismo campo que una solicitud de API. El motor de pagos rellena los campos de solicitud de API correspondientes con los valores proporcionados en las etiquetas EMV, donde existen, y utiliza estos valores en todas las tareas de procesamiento interno, de mensajería del adquirente y de respuestas de transacción. Por ejemplo, si envía sourceOfFunds.provided.card.emvRequest.9F1C con el valor -Lane_03', posTerminal.lane con el valor -Lane_03' se envía al adquirente y se devuelve en la respuesta de la transacción.

Puede proporcionar etiquetas EMV en lugar de campos de solicitud de API.

Si es necesario, puede elegir proporcionar las etiquetas EMV y los campos de solicitud de API correspondientes en la solicitud de transacción. Consulte Uso avanzado: datos de transacción tanto en etiquetas EMV como en campos de solicitud de API.

Solicitud de ejemplo

A continuación, se muestra un ejemplo de una solicitud de EMV en REST para una transacción Standalone Capture, en la que la autorización se realizó sin conexión en el terminal.

URL https://mtf.gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid}
Método HTTP PUT

{
    "apiOperation": "CAPTURE",
    "transaction": {
        "currency": "EUR",
        "amount": "10.99",
        "source": "CARD_PRESENT"
    },
    "sourceOfFunds": {
        "type": "CARD",
        "provided": {
            "card": {
                "number": "5457210089020012",
                "expiry": {
                    "month": "1",
                    "year": "39"
                },
                "emvRequest": {
                    "82": "0000",
                    "95": "0000000000",
                    "9F02": "000000001099",
                    "9A": "161021",
                    "5F2A": "840",
                    "9F1A": "840",
                    "9F10": "06011103A000000A0100000000000BB0ABAD",
                    "9F34": "1E0300",
                    "9F36": "0002",
                    "9C": "00",
                    "9F26": "D1F722D47FCA8273",
                    "9F27": "40",
                    "9F37": "2A4E1690",
                    "9F33": "E0B8C8"
                }
            }
        }
    },
    "posTerminal": {
        "inputCapability": "CONTACTLESS_CHIP",
        "panEntryMode": "CHIP",
        "pinEntryCapability": "PIN_SUPPORTED",
        "location": "MERCHANT_TERMINAL_ON_PREMISES",
        "lane": "Lane_03",
        "attended": "ATTENDED",
		"serialNumber":"123456789",
		"onlineReasonCode":"FORCED_BY_MERCHANT",
		"cardPresenceCapability":"CARD_PRESENT",
		"authorizationMethod":"OFFLINE",
		"address":
		{
			"country":"IRL",
			"city":"Dublin"
		}
    }
}
Respuesta de ejemplo

{
  "gatewayEntryPoint": "WEB_SERVICES_API",
  "merchant": "TESTSMOKE-RETAIL",
  "order": {
    "amount": 10.99,
    "creationTime": "2017-06-06T09:42:54.280Z",
    "currency": "EUR",
    "id": "sa-dfc1b030-4520-48ec-a7e0-889999d7e4ab",
    "status": "CAPTURED",
    "totalAuthorizedAmount": 10.99,
    "totalCapturedAmount": 10.99,
    "totalRefundedAmount": 0
  },
  "posTerminal": {
    "address": {
      "city": "Dublin",
      "country": "IRL"
    },
    "attended": "ATTENDED",
    "authorizationMethod": "OFFLINE",
    "cardPresenceCapability": "CARD_PRESENT",
    "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED",
    "inputCapability": "CONTACTLESS_CHIP",
    "lane": "Lane_03",
    "location": "MERCHANT_TERMINAL_ON_PREMISES",
    "onlineReasonCode": "FORCED_BY_MERCHANT",
    "panEntryMode": "CHIP",
    "pinEntryCapability": "PIN_SUPPORTED",
    "serialNumber": "123456789"
  },
  "response": {
    "gatewayCode": "APPROVED"
  },
  "result": "SUCCESS",
  "sourceOfFunds": {
    "provided": {
      "card": {
        "brand": "MASTERCARD",
        "emvRequest": {
          "82": "0000",
          "95": "0000000000",
          "5F2A": "840",
          "9A": "161021",
          "9C": "00",
          "9F02": "000000001099",
          "9F10": "06011103A000000A0100000000000BB0ABAD",
          "9F1A": "840",
          "9F26": "D1F722D47FCA8273",
          "9F27": "40",
          "9F33": "E0B8C8",
          "9F34": "1E0300",
          "9F36": "0002",
          "9F37": "2A4E1690"
        },
        "emvResponse": {
          "4D3E": "456",
          "5A2F": "123"
        },
        "expiry": {
          "month": "1",
          "year": "39"
        },
        "fundingMethod": "DEBIT",
        "issuer": "CAPITAL ONE BANK (CANADA BRANCH)",
        "number": "545721xxxxxx0012",
        "scheme": "MASTERCARD"
      }
    },
    "type": "CARD"
  },
  "timeOfRecord": "2017-06-06T09:42:54.280Z",
  "transaction": {
    "acquirer": {
      "batch": 1,
      "id": "FOOBANK",
      "merchantId": "11223344"
    },
    "amount": 10.99,
    "currency": "EUR",
    "frequency": "SINGLE",
    "id": "1",
    "receipt": "1706063974",
    "source": "CARD_PRESENT",
    "terminal": "0001",
    "type": "CAPTURE"
  },
  "version": "43"
}
Etiquetas EMV admitidas

La siguiente es una lista de etiquetas EMV admitidas por el motor de pagos. Si el terminal devuelve alguna de estas, inclúyala en el campo sourceOfFunds.provided.card.emvRequest.

El motor de pagos solo acepta etiquetas EMV de la lista de etiquetas EMV admitidas. Las solicitudes que incluyen cualquier otra etiqueta son rechazadas.
Etiqueta EMV
Nombre
Obligatorio
4F Nombre de identificador de aplicación (AID) -
56 Pista 1 -
57 Datos equivalentes de pista 2 -
5A Número de cuenta
principal (PAN) de la aplicación
-
5F24 Fecha de vencimiento de la aplicación -
5F25 Fecha de aplicación efectiva -
5F28 Código del país emisor -
5F2A Código de moneda de transacción -
5F34 Número de secuencia del número
de cuenta principal (PAN) de la aplicación
-
82 Perfil de intercambio de la aplicación (AIP)
84 Nombre de archivo dedicado -
87 Indicador de prioridad de aplicación -
95 Resultado de verificación del terminal (TVR)
9A Fecha de la transacción
9B Información del estado de la transacción -
9C Tipo de transacción
9F02 Monto autorizado
9F03 Monto de devolución -
9F06 Identificador de aplicación (AID): terminal -
9F07 Control de uso de aplicación -
9F08 Número de versión de la aplicación: ICC -
9F09 Número de versión de la aplicación: terminal -
9F0D Código de acción del emisor: predeterminado -
9F0E Código de acción del emisor: rechazo -
9F0F Código de acción del emisor: en línea -
9F10 Datos de aplicación del emisor (IAD)
9F1A Código de país de terminal
9F1C Identificación de terminal -
9F1E Número de serie del dispositivo de interfaz (IFD) -
9F21 Hora de la transacción -
9F26 Criptograma de aplicación (AC)
9F27 Datos de información de criptograma (CID)
9F33 Capacidades del terminal -
9F34 Resultados del método de verificación de titular de la tarjeta (CVM)
9F35 Tipo de terminal -
9F36 Contador de transacciones de aplicación
9F37 Número impredecible
9F39 Modo de entrada del punto de servicio (POS) -
9F40 Capacidades adicionales del terminal -
9F41 Contador de secuencia de transacción -
9F49 Lista de objetos de datos de autenticación dinámica (DDOL) -
9F53 Código de categoría de transacción -
9F5A EMV (Kernel 3) : identificador del programa de aplicación (ID de programa)
EMV (Kernel 4) : identificador de producto de suscripción
-
9F5B EMV (Kernel 3) : resultados de script de emisor
EMV (Kernel 2) : DSDOL
EMV (Kernel 4) : número de suscripción de producto
-
9F66 EMV (Kernel 2) : PUNATC(Track2)
EMV
(Kernel 3) : calificadores de transacciones de terminal (TTQ)
-
9F6E Indicador de factor de forma -
9F7C Datos exclusivos del cliente (CED) -
Uso avanzado: datos de transacción tanto en etiquetas EMV como en campos de solicitud de API

Si proporciona las etiquetas EMV y los campos de solicitud de API correspondientes en la solicitud de transacción, el motor de pagos utiliza el valor proporcionado en el campo de solicitud de la API correspondiente. Por ejemplo, si envía sourceOfFunds.provided.card.emvRequest.9F1C con el valor 'Lane_03' y posTerminal.lane con el valor 'Lane_04', entonces posTerminal.lane con el valor 'Lane_04' se envía al adquirente y se devuelve en la respuesta de la transacción. Esto puede ser útil si desea anular las etiquetas EMV y los valores de control campo por campo. Observe que tal uso es extraño y, por tanto, debe considerarse solo si su integración lo requiere.

Etiquetas EMV admitidas y los campos de solicitud de API correspondientes

En esta tabla se enumeran las etiquetas EMV donde el motor de pagos rellena los campos de solicitud de API correspondientes con los valores proporcionados en las etiquetas EMV.

Etiqueta EMV
Nombre de etiqueta EMV
Campo de solicitud de API correspondiente
56 Pista 1 sourceOfFunds.provided.card.track1
57 Datos equivalentes de pista 2 sourceOfFunds.provided.card.track2
5A Número de cuenta principal (PAN) de la aplicación sourceOfFunds.provided.card.number
5F24 Fecha de vencimiento de la aplicación sourceOfFunds.provided.card.expiry.year
sourceOfFunds.provided.card.expiry.month
5F34 Número de secuencia PAN sourceOfFunds.provided.card.sequenceNumber
9C Avance en efectivo order.cashAdvance
9F03 Monto de devolución order.cashbackAmount
9F1A Código de país de terminal posTerminal.address.country
9F1C Identificación de terminal posTerminal.lane
9F1E Número de serie del dispositivo de interfaz posTerminal.serialNumber
9F33 Capacidades del terminal posTerminal.inputCapability
posTerminal.pinEntryCapability
9F35 Tipo de terminal posTerminal.attended
posTerminal.cardholderActivated
Respuesta de transacción de EMV

El motor de pagos devuelve el campo sourceOfFunds.provided.card.emvResponse en la respuesta Retrieve Order y Retrieve Transaction. Este campo contiene datos generados por el emisor, que la tarjeta o el dispositivo pueden utilizar para que la verificación complete o rechace la transacción. También puede contener etiquetas EMV adicionales del emisor, incluyendo etiquetas repetidas de la solicitud.

La siguiente tabla muestra algunas etiquetas EMV que se pueden devolver en una respuesta Authorization en línea.

Etiqueta EMV Nombre
8A Código de respuesta de autorización
89 Código de autorización
91 Datos de autenticación del emisor
71 Plantilla de script de emisor 1
72 Plantilla de script de emisor 2

El campo sourceOfFunds.provided.card.emvRequest proporcionado en la solicitud se reenvía en la respuesta, donde se excluyen las etiquetas EMV identificadas como confidenciales de PCI.

Anulación de una transacción EMV

Su adquirente puede requerir elementos de datos EMV adicionales, que se incluirán al anular una transacción EMV. Por ejemplo, puede que se requiera la etiqueta EMV DF01 (Resultados de script de emisor). Póngase en contacto con su adquirente para conocer los requisitos específicos.

Procesar una transacción de banda magnética Copied to Clipboard

Si los datos de pista de la tarjeta se leyeron desde la banda magnética de la tarjeta:

  • Proporcione los datos de la Pista 1 en el campo sourceOfFunds.provided.card.track1 o los datos de la Pista 2 en el campo sourceOfFunds.provided.card.track2. Si tanto la Pista 1 como la Pista 2 están disponibles desde el terminal, proporcione ambos en la solicitud de transacción.
  • Complete los campos obligatorios.
  • Complete los campos opcionales, si es necesario.

sourceOfFunds.provided.card.track1 [REST][NVP]

sourceOfFunds.provided.card.track2 [REST][NVP]

Los datos de pista de tarjeta deben contener caracteres centinela de inicio y fin correctos, y carácter de comprobación de redundancia longitudinal (LRC) final. No se admiten datos de tarjeta de pista 3.
Solicitud de ejemplo

A continuación, se muestra un ejemplo de una transacción Authorization en línea, que utiliza datos de una banda magnética.

URL https://mtf.gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid}
Método HTTP PUT

{
  "apiOperation": "AUTHORIZE",
  "order": {
    "amount": 80,
    "currency": "AUD"
  },
  "transaction": {
    "source": "CARD_PRESENT",
    "frequency": "SINGLE"
  },
  "sourceOfFunds": {
    "type": "CARD",
    "provided": {
      "card": {
        "number": "5457210089020012",
        "sequenceNumber": "015",
        "expiry": {
          "year": "39",
          "month": "01"
        },
        "track2": ";5123456789012346=17051019681143384001?",
        "track1": "%B5123456789012346^MR JOHN R SMITH           ^17051019681143300001  840      ?;"
      }
    }
  },
  "posTerminal": {
    "lane": "AdamLane",
    "panEntryMode": "SWIPE",
    "pinEntryCapability": "PIN_NOT_SUPPORTED",
    "attended": "UNATTENDED",
    "cardholderActivated": "SELF_SERVICE_TERMINAL",
    "inputCapability": "MAGNETIC_STRIPE",
    "location": "MERCHANT_TERMINAL_OFF_PREMISES"
   }
}
Respuesta de ejemplo

{
    "authorizationResponse": {
        "posData": "1605S0100130",
        "transactionIdentifier": "AmexTidTest"
    },
    "gatewayEntryPoint": "WEB_SERVICES_API",
    "merchant": "TESTSMOKE-RETAIL",
    "order": {
        "amount": 80,
        "creationTime": "2017-05-31T07:49:46.351Z",
        "currency": "AUD",
        "id": "sa-e229682a-2163-47cf-b080-fb60dd148192",
        "status": "AUTHORIZED",
        "totalAuthorizedAmount": 80,
        "totalCapturedAmount": 0,
        "totalRefundedAmount": 0
    },
    "posTerminal": {
        "attended": "UNATTENDED",
        "cardholderActivated": "SELF_SERVICE_TERMINAL",
        "inputCapability": "MAGNETIC_STRIPE",
        "lane": "AdamLane",
        "location": "MERCHANT_TERMINAL_OFF_PREMISES",
        "panEntryMode": "SWIPE",
        "pinEntryCapability": "PIN_NOT_SUPPORTED"
    },
    "response": {
        "acquirerCode": "00",
        "gatewayCode": "APPROVED"
    },
    "result": "SUCCESS",
    "sourceOfFunds": {
        "provided": {
            "card": {
                "brand": "MASTERCARD",
                "expiry": {
                    "month": "1",
                    "year": "39"
                },
                "fundingMethod": "DEBIT",
                "issuer": "CAPITAL ONE BANK (CANADA BRANCH)",
                "number": "545721xxxxxx0012",
                "scheme": "MASTERCARD",
                "sequenceNumber": "015",
                "trackDataProvided": true
            }
        },
        "type": "CARD"
    },
    "timeOfRecord": "2017-05-31T07:49:46.351Z",
    "transaction": {
        "acquirer": {
            "batch": 1,
            "id": "SYSTEST_ACQ1",
            "merchantId": "12345678"
        },
        "amount": 80,
        "authorizationCode": "000001",
        "currency": "AUD",
        "frequency": "SINGLE",
        "id": "1",
        "receipt": "1705313",
        "source": "CARD_PRESENT",
        "terminal": "0006",
        "type": "AUTHORIZATION"
    },
    "version": "43"
}

Procesar una transacción digitada Copied to Clipboard

Si el número de tarjeta se ingresó manualmente en el teclado de su terminal:

  • Proporcione el número de tarjeta ingresado en el campo de solicitud sourceOfFunds.provided.card.number.
  • Complete los campos obligatorios.
  • Complete los campos opcionales, si es necesario.

sourceOfFunds.provided.card.number[REST][NVP]

Solicitud de ejemplo

A continuación, se muestra un ejemplo de una transacción Authorization en línea, que utiliza un número de tarjeta ingresado manualmente.

URL https://mtf.gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid}
Método HTTP PUT

{
  "posTerminal": {
    "serialNumber": "13130PP800781435",
    "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED",
    "lane": "S2_Lane",
    "panEntryMode": "KEYED",
    "pinEntryCapability": "UNKNOWN",
    "attended": "ATTENDED",
    "inputCapability": "KEY_ENTRY",
    "location": "MERCHANT_TERMINAL_ON_PREMISES"
  },
  "apiOperation": "AUTHORIZE",
  "sourceOfFunds": {
    "type": "CARD",
    "provided": {
      "card": {
        "number": "5457210089020012",
        "sequenceNumber": "000",
        "expiry": {
          "year": "39",
          "month": "01"
        }
      }
    }
  },
  "order": {
    "amount": "100.00",
    "currency": "EUR"
  }, 
    "transaction": {
    "source": "CARD_PRESENT",
    "frequency": "SINGLE"
  }
}
Respuesta de ejemplo

{
  "gatewayEntryPoint": "WEB_SERVICES_API",
  "merchant": "TESTSMOKE-RETAIL",
  "order": {
    "amount": 100,
    "creationTime": "2017-05-31T08:59:47.194Z",
    "currency": "EUR",
    "id": "sa-529e784a-e11d-474d-8012-c0790531bb0f",
    "status": "AUTHORIZED",
    "totalAuthorizedAmount": 100,
    "totalCapturedAmount": 0,
    "totalRefundedAmount": 0
  },
  "posTerminal": {
    "attended": "ATTENDED",
    "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED",
    "inputCapability": "KEY_ENTRY",
    "lane": "S2_Lane",
    "location": "MERCHANT_TERMINAL_ON_PREMISES",
    "panEntryMode": "KEYED",
    "pinEntryCapability": "UNKNOWN",
    "serialNumber": "13130PP800781435"
  },
  "response": {
    "gatewayCode": "APPROVED"
  },
  "result": "SUCCESS",
  "sourceOfFunds": {
    "provided": {
      "card": {
        "brand": "MASTERCARD",
        "expiry": {
          "month": "1",
          "year": "39"
        },
        "fundingMethod": "DEBIT",
        "issuer": "CAPITAL ONE BANK (CANADA BRANCH)",
        "number": "545721xxxxxx0012",
        "scheme": "MASTERCARD",
        "sequenceNumber": "000"
      }
    },
    "type": "CARD"
  },
  "timeOfRecord": "2017-05-31T08:59:47.194Z",
  "transaction": {
    "acquirer": {
      "batch": 1,
      "id": "FOOBANK",
      "merchantId": "11223344"
    },
    "amount": 100,
    "authorizationCode": "471223",
    "currency": "EUR",
    "frequency": "SINGLE",
    "id": "1",
    "receipt": "170531475",
    "source": "CARD_PRESENT",
    "terminal": "0001",
    "type": "AUTHORIZATION"
  },
  "version": "43"
}

Procesar una transacción de cifrado punto a punto (P2PE) Copied to Clipboard

P2PE es un estándar establecido por el PCI Security Standards Council. Con P2PE, los datos confidenciales de la tarjeta se cifran en el terminal inmediatamente después de que se leen los datos de la tarjeta. Esto maximiza la seguridad de las transacciones actuales con el titular de la tarjeta presente y reduce sus obligaciones de cumplimiento de PCI ya que no tiene que manejar datos confidenciales.

El Mastercard Gateway admite P2PE mediante DUKPT (clave única derivada por transacción) de API versión 40 en adelante, solo para Verifone en la región de la UE.

Para procesar una transacción P2PE:

  • Proporcione los datos DUKPT P2PE del terminal en los siguientes campos:
    • sourceOfFunds.provided.card.p2pe.keySerialNumber: debe proporcionar el número de serie de la clave DUKPT suministrado por el terminal.
    • sourceOfFunds.provided.card.p2pe.payload: si se proporciona este campo, sourceOfFunds.provided.card.number no es obligatorio. El motor de pagos extraerá todos los detalles pertinentes de la tarjeta de los datos de carga proporcionados.
    • posTerminal.serialNumber:
    • sourceOfFunds.provided.card.p2pe.cardBin
    • sourceOfFunds.provided.card.p2pe.encryptionState: si no proporciona este campo, el motor de pagos se fija de forma predeterminada en el valor VALID.
    • sourceOfFunds.provided.card.p2pe.initializationVector: este campo se puede omitir si el terminal no está usando un vector de inicialización para el cifrado seed.
  • Complete los campos obligatorios.
  • Complete los campos opcionales, si es necesario.

Referencia de API de P2PE [REST][NVP]

En la siguiente tabla se resumen las limitaciones del campo para el grupo de parámetros de sourceOfFunds.provided.card.p2pe.

Si el campo entonces el motor de pagos...
sourceOfFunds.provided.card.p2pe. initializationVector
sourceOfFunds.provided.card.p2pe. keySerialNumber
sourceOfFunds.provided.card.p2pe. payload
se proporciona se proporciona no se proporciona rechaza la solicitud de transacción.
se proporciona se proporciona, pero en texto sin formato antes o después del cifrado se proporciona devuelve un error y se genera una entrada en el registro de seguridad.

Respuesta de la transacción

El campo sourceOfFunds.provided.card.encryption devuelve DUKPT (de API versión 43 en adelante) en la respuesta de transacción para indicar que los datos de la tarjeta fueron cifrados. Los campos en el grupo de parámetros sourceOfFunds.provided.card.p2pe no se devuelven en la respuesta.

Integración para utilizar PIN en línea Copied to Clipboard

El PIN en línea ingresado por el titular de la tarjeta está cifrado en la fuente, dentro del dispositivo de entrada del PIN. El Mastercard Gateway admite datos de PIN en línea cifrados con DUKPT (clave única derivada por transacción) desde API versión 45 en adelante.

  • Proporcione los datos de PIN cifrado con DUKPT del terminal en los siguientes campos:
    • sourceOfFunds.provided.card.pin.payload
    • sourceOfFunds.provided.card.pin.keySerialNumber
    • posTerminal.pinLengthCapability
    • sourceOfFunds.provided.card.pin.encryptionState

    Referencia de API de PIN en línea [REST][NVP]

  • Complete los campos obligatorios.
  • Complete los campos opcionales, si es necesario.

Integración para utilizar mPOS Copied to Clipboard

El motor de pagos permite aceptar pagos en dispositivos POS móviles (mPOS) desde la API v56 en adelante. Para habilitar la funcionalidad, proporcione lo siguiente en la transacción Verify, Authorize, Capture, Pay o Refund:

  • posTerminal.cardholderActivated=MPOS_ACCEPTANCE_DEVICE
  • Proporcione el valor del lector de tarjetas en el posTerminal.mobile.cardInputDevice

    • BUILT_IN: teléfono móvil o tableta estándar con solo un lector sin contacto incorporado. En este caso, posTerminal.pinEntryCapability debe establecerse en SOFTWARE_ONLINE_PIN_ONLY; de lo contrario, el motor de pagos rechazará la transacción.
    • INTEGRATED_DONGLE: terminal móvil dedicado con lector de tarjetas integrado. En este caso, posTerminal.pinEntryCapability debe establecerse en PIN_SUPPORTED u OFFLINE_PIN_ONLY; de lo contrario, el motor de pagos rechazará la transacción.
    • SEPARATE_DONGLE: dispositivo estándar o terminal móvil dedicado, con lector de tarjetas por separado. En este caso, posTerminal.pinEntryCapability debe establecerse en PIN_SUPPORTED u OFFLINE_PIN_ONLY; de lo contrario, el motor de pagos rechazará la transacción.

    Referencia de API de mPOS [REST][NVP]

  • Complete los campos obligatorios.
  • Complete los campos opcionales, si es necesario.

Respuesta de la transacción

La autenticación de PIN puede fallar si el pagador ingresa un PIN no válido, excede los intentos de ingreso de PIN permitidos u omite el ingreso del PIN cuando es obligatorio para completar la transacción.

En estos escenarios donde la autorización falla debido a un error de autenticación de PIN, el motor de pagos devolverá códigos de respuesta de autorización específicos. Puede reutilizar el mismo ID de pedido en la próxima transacción.

Integración de prueba de titular de la tarjeta presente Copied to Clipboard

Puede probar su integración utilizando tarjetas de prueba específicas para su adquirente.