Pagos de Automated Clearing House

Automated Clearing House es una red electrónica para procesar lotes de transacciones de débito y crédito entre instituciones financieras en EE. UU. Está administrada por la National Clearing House Association (NACHA).

La red se puede usar para la transferencia electrónica de fondos entre cuentas. Se usa para Pago directo a través de Automated Clearing House (por ejemplo, pagos recurrentes de hipoteca o bien una compra en línea de algún consumidor) y Depósito directo a través de Automated Clearing House (por ejemplo, pagos de nómina, un reembolso realizado para una compra en línea o bien un pago B2B).

El motor de pagos le permite procesar Pagos directos (pagos) y Depósitos directos (reembolsos) a través de Automated Clearing House.

En esta página se describen los requisitos para procesar pagos de Automated Clearing House a través del Mastercard Payment Gateway y se proporciona información general del flujo de pagos y detalles acerca de operaciones compatibles de API para pagos de Automated Clearing House.

Mastercard Payment Gateway admite pagos de Automated Clearing House en la versión de API 26 y superior.

Prerrequisitos

Usted debe tener una cuenta de Automated Clearing House configurada con un adquirente de Automated Clearing House.

NACHA impone una gama de requisitos sobre los negocios; además de aquellos aplicables a otros métodos de pago, como tarjetas.
  1. Debe obtener autorización explícita del cliente antes de que puede tener lugar una liquidación de Automated Clearing House.
  2. Dado que Automated Clearing House no es una red en tiempo real, las devoluciones aún pueden tener lugar después de enviada la solicitud de pago al Mastercard Payment Gateway.
  3. Debe respetar los reglamentos de NACHA. El no cumplimiento puede acarrear penas sustanciales. Para mantenerse al día con los reglamentos actuales, visite https://www.nacha.org/
  4. Debe establecer, implementar y actualizar políticas, procedimientos y sistemas relacionados con la iniciación, el procesamiento y el almacenamiento de entradas, a fin de:

    • Garantizar la confidencialidad de la información.
    • Proteger contra amenazas a la seguridad de la información.
    • Proteger contra el uso no autorizado de la información.

Flujo de datos de Automated Clearing House

Flujo de pago de ACH

  1. El pagador autoriza el pago o el depósito.

    Los Códigos de entrada estándar (SEC) permitidos por NACHA son:

    • TEL. Entrada iniciada por teléfono.
    • WEB. Entrada iniciada por web.
    • PPD. Pago y depósitos preorganizados.
  2. El negocio envía una solicitud de transacción al Mastercard Payment Gateway.

    Las solicitudes pueden ser PAY, REFUND o VOID.

  3. Mastercard Payment Gateway emite una respuesta que contiene información de estado (por ejemplo, APPROVED_PENDING_SETTLEMENT).

    La transacción se agrega al lote actual para liquidación.

    El lote de transacciones se cierra de dos maneras:

    • Una vez al día a la hora configurada.
    • Usted cierra el lote abierto actualmente al enviar una solicitud APICLOSE_BATCH. Cualquier otra transacción posterior se agregará a un lote nuevo.

    Al final del día, todos los lotes cerrados que aún no se han enviado se recopilan en un archivo de liquidación y se transmiten al adquirente de Automated Clearing House.

  4. El primer adquirente de Automated Clearing House emite una respuesta inmediata, que contiene el resultado de la validación de los datos transmitidos (por ejemplo, APPROVED o DECLINED) y envía las solicitudes de pago a la red de Automated Clearing House para su procesamiento.

    Notas:

    • Un estado APPROVED emitido por el adquirente de Automated Clearing House simplemente implica la aceptación validada de la transmisión para procesamiento posterior; no una aprobación real de la transacción financiera.
    • Para que se le notifique de la respuesta del adquirente de Automated Clearing House, suscríbase a Notificaciones de webhook.
  5. La red de Automated Clearing House administra las transacciones de pago entre las instituciones financieras aplicables.
  6. Después de un retraso de hasta 3 días, la red de Automated Clearing House envía un informe de excepción de solicitudes de pago aprobadas al adquirente de Automated Clearing House, quien se lo proporcionará a usted.

Integración de pagos de Automated Clearing House

Hay tres opciones para integrar pagos de Automated Clearing House a su página de pago:

Automated Clearing House a través de Hosted Checkout

Si tiene una integración actual de Hosted Checkout, puede usar Hosted Checkout para verificar los detalles de pago de Automated Clearing House.

Puede hacerlo al configurar interaction.operation=VERIFY en la sesión Create Checkout Session. Hosted Checkout muestra los pagos de Automated Clearing House como una opción de pago para el pagador. Los datos ingresados por el pagador se comprueban mediante los métodos de verificación admitidos por el adquirente configurado.

Usted puede determinar si la operación de verificación se realizó correctamente o no al comparar resultIndicator con successIndicator. Si la interacción no se realizó correctamente, Hosted Checkout muestra un mensaje donde se indica que la verificación no pudo realizarse y se solicita que el pagador vuelva a intentarlo.

Automated Clearing House a través de Hosted Session

Si tiene su propia página de pago, entonces puede elegir que la opción de integración Hosted Session haga que el Mastercard Payment Gateway capte de manera segura los detalles de pago de Automated Clearing House y los almacene en una sesión de pago.

Código de muestra para recopilar detalles de pago de Automated Clearing House
<html>
<head>
<!-- INCLUDE SESSION.JS JAVASCRIPT LIBRARY -->
<script src="https://evopaymentsmexico.gateway.mastercard.com/form/version/57/merchant/<MERCHANTID>/session.js"></script>
<!-- APPLY CLICK-JACKING STYLING AND HIDE CONTENTS OF THE PAGE -->
<style id="antiClickjack">body{display:none !important;}</style>
</head>
<body>

<!-- CREATE THE HTML FOR THE PAYMENT PAGE -->
<div>Please enter your Automated Clearing House details:</div>
  <div>
  <label class="control-label" id="ach-account-type-label">Account Type:</label>
  <select class="form-control col-sm-6" name="ach-account-type" id="ach-account-type">
  <option value="CONSUMER_SAVINGS">Consumer Savings Account</option>
  <option value="CONSUMER_CHECKING" selected>Consumer Checking Account</option>
  <option value="CORPORATE_CHECKING">Business Checking Account</option>
 </select>
  </div>
<div>Bank Account Holder: <input type="text" id="ach-account-holder" class="input-field" value="" readonly></div>
  <div>Bank Account Number:<input type="text" id="ach-account-number" class="input-field" value="" readonly></div>
  <div>Routing Number:<input type="text" id="ach-routing-number" class="input-field" value="" readonly></div>

<div><button id="payButton" onclick="pay();">Pay Now</button></div>

<!-- JAVASCRIPT FRAME-BREAKER CODE TO PROVIDE PROTECTION AGAINST IFRAME CLICK-JACKING -->
<script type="text/javascript">
if (self === top) {
    var antiClickjack = document.getElementById("antiClickjack");
    antiClickjack.parentNode.removeChild(antiClickjack);
} else {
    top.location = self.location;
}

PaymentSession.configure({
    fields: {
        // ATTACH HOSTED FIELDS TO YOUR PAYMENT PAGE FOR ACH
        ach: {
	        accountType: "#ach-account-type",
	        bankAccountHolder: "#ach-account-holder",
	        bankAccountNummber: "#ach-account-number",
	        routingNumber: "#ach-routing-number"
        }
    },
    //SPECIFY YOUR MITIGATION OPTION HERE
    frameEmbeddingMitigation: ["javascript"],
    callbacks: {
        initialized: function(response) {
            // HANDLE INITIALIZATION RESPONSE
        },
        formSessionUpdate: function(response) {
            // HANDLE RESPONSE FOR UPDATE SESSION
            if (response.status) {
                if ("ok" == response.status) {
                    console.log("Session updated with data: " + response.session.id);
  
                } else if ("fields_in_error" == response.status)  {
  
                    console.log("Session update failed with field errors.");
		                if (response.errors.bankAccountHolder) {
		                    console.log("Bank account holder invalid.");
		                }
		                if (response.errors.bankAccountNummber) {
		                    console.log("Bank account number invalid.");
		                }
		                if (response.errors.routingNumber) {
                        	console.log("Routing number invalid.");
                    }
                } else if ("request_timeout" == response.status)  {
                    console.log("Session update failed with request timeout: " + response.errors.message);
                } else if ("system_error" == response.status)  {
                    console.log("Session update failed with system error: " + response.errors.message);
                }
            } else {
                console.log("Session update failed: " + response);
            }
        }
      }
  });

function pay() {
    // UPDATE THE SESSION WITH THE INPUT FROM HOSTED FIELDS
    PaymentSession.updateSessionFromForm('ach');
}
</script>
</body>
</html>
   
  1. Incluya la biblioteca JavaScript cliente session.js hospedada por el motor de pagos en su página de pago. La ruta a este campo incluye tanto la versión de la API como el identificador del negocio para la sesión.
  2. Cree el HTML para la página de pago que contiene los campos de pago de Automated Clearing House.
    Para evitar el envío de datos confidenciales al servidor, asegúrese de que estos campos sean de readonly y NO tengan el atributo name .
  3. Invoque la función PaymentSession.configure(configuration).

    El objeto configuration le permite adosar campos hospedado a su página de pago. Debe proporcionar lo siguiente:

    • session(optional), si no proporciona una, la biblioteca de cliente crea una sesión de pago.
    • selectores de campo para los campos de pago de Automated Clearing House, los cuales (cuando se proporcionan) se reemplazan con campos proxy correspondientes incrustados en iFrames hospedados por el Mastercard Payment Gateway. Los campos proxy tendrán la misma apariencia que los campos reemplazados.
    • opciones de mitigación para la prevención de clickjacking

      Clickjacking, también conocido como "ataque de rectificación de UI", se produce cuando un atacante usa varias capas transparentes u opacas para engañar al usuario y lograr que haga clic en un botón o vínculo en otra página cuando intenta hacer clic en la página del primer nivel. Para usar Hosted Session, debe implementar una o más de las siguientes defensas contra ataques de clickjacking.

      Opción de mitigación de marcos Implementación
      javascript Incluya el JavaScript "separador de marcos" en su página de pago.
      x-frame-options su servidor debe devolver un encabezado de respuesta HTTP de opciones X-Frame.
      csp su servidor debe devolver un encabezado de respuesta HTTP de contenido-seguridad-política que contenga una directiva de antecesores de marcos.

      Debe especificar qué defensas se implementan a través del parámetro frameEmbeddingMitigation en la llamada de PaymentSession.configure(configuration). Para obtener información sobre cómo defenderse contra ataques de clickjacking, consulte Referencia de defensa contra clickjacking en el sitio web externo OWASP.

    • devoluciones de llamada para administrar diversos eventos durante la interacción de la Hosted Session.
      • initialized( ): se invoca cuando los campos hospedados se adjuntan a su página de pago.
      • formSessionUpdate( ): se invoca en respuesta a la función PaymentSession.updateSessionFromForm('ach') (consulte el paso siguiente)

  4. Invoque PaymentSession.updateSessionFromForm('ach') para almacenar los detalles de Automated Clearing House en una sesión de pago. Una vez finalizada la operación, la devolución de llamada formSessionUpdate( ) se invoca con un parámetro de resultado. Debe comprobar el valor result.status para determinar si la operación fue correcta. Consulte Administrar respuestas de devolución de llamada.
  5. Puede usar la sesión de pago devuelta (session.id) para realizar una tokenización o una transacción de pago cuando se requiere. Para obtener más información, consulte Realizar una operación con la sesión.

Referencia de session.js[JavaScript]

Automated Clearing House a través de Direct Payment

Puede enviar detalles de pago de Automated Clearing House directamente al Mastercard Payment Gateway mediante las siguientes operaciones.

Pagos y reembolsos

Usted inicia un pago de Automated Clearing House al enviar una solicitud de APIPAY y un reembolso al enviar una solicitud de APIREFUND.

Asegúrese de incluir la información siguiente en su solicitud:

  • sourceOfFunds.type = ACH.
  • sourceOfFunds.provided.ach.routingNumber: el número de direccionamiento del banco del pagador.
  • sourceOfFunds.provided.ach.bankAccountNumber: el número de la cuenta bancaria del pagador.
  • sourceOfFunds.provided.ach.bankAccountHolder: el nombre del titular de la cuenta del pagador.
  • sourceOfFunds.provided.ach.accountType: el tipo de cuenta bancaria del pagador.
  • sourceOfFunds.provided.ach.secCode: el código SEC para el pago de Automated Clearing House aplicable a esta transacción.

    El código SEC debe ser una de las siguientes opciones:

    • TEL: una entrada de Débito de Automated Clearing House para un pago de B2C autorizado por el cliente a través del teléfono. TEL solo se puede usar cuando una relación ya existe entre usted y el pagador o, cuando no hay una relación existente, el pagador inicia el contacto con usted.
    • WEB: una entrada de Débito de Automated Clearing House para un pago de B2C autorizado a través de Internet o una red inalámbrica.
    • PPD: una entrada de Débito o Crédito de Automated Clearing House basada en una autorización autenticada proporcionada por el pagador. PPD se usa para pagos de B2C (por ejemplo, nómina de empleados, pagos de hipoteca o reembolso de ganancias).

Referencia de API de Pay [REST][NVP]

Referencia de API de Refund [REST][NVP]

Void

Puede anular la transacción anterior o un pedido al enviar una solicitud de APIVOID para el pedido con el parámetro de ID de transacción objetivo que hace referencia a la solicitud de PAY o REFUND.

Para una solicitud exitosa de APIVOID la transacción objetivo a que se ha hecho referencia se elimina del lote y, por tanto, no se enviará al adquirente de Automated Clearing House.

Las transacciones ya no se pueden anular una vez que el lote que contiene la transacción objetivo a que se ha hecho referencia se ha elegido para liquidación (por ejemplo, la liquidación está en progreso) o bien ya se ha liquidado.

Referencia de API de Void [REST][NVP]

Verify

Puede verificar los detalles de pago para un pago de Automated Clearing House al enviar una solicitud de APIVERIFY.

Actualmente, el Mastercard Payment Gateway solo admite la verificación semántica de los detalles de pago de ACH, pero no verifica que la cuenta sea una cuenta bancaria válida y que el banco participe en Automated Clearing House.

Referencia de API de Verify [REST][NVP]

Administración y liquidación de lote

Puede controlar el cierre del lote al enviar una solicitud de APICLOSE_BATCH con el ID de adquirente para su adquirente de Automated Clearing House. El ID del adquirente se proporcionó en transaction.acquirer.id, en la respuesta de transacción.

Como resultado, el actual lote del Adquirente de Automated Clearing House en el Mastercard Payment Gateway se cerrará. Las transacciones de Automated Clearing House posteriores se agregarán a un lote interno del Mastercard Payment Gateway nuevo.

Conciliación

La respuesta de la operación Recuperar transacción para transacciones de Automated Clearing House exitosas contiene el identificador para la transacción usada por el adquirente en transaction.receipt.

El adquirente de Automated Clearing House de Paymentech Salem usa el mismo identificador de transacción para todas las transacciones en un pedido.

Este identificador se usará en el Informe detallado de excepción proporcionado por el adquirente de Automated Clearing House de Paymentech Salem. Este contiene todas las transacciones de Automated Clearing House fallidas y puede usarse para conciliar sus pagos.

El estado de transacción proporcionado por el motor de pagos (response.gatewayCode) no se actualiza con la respuesta real de la red de Automated Clearing House.

Prueba de transacciones de Automated Clearing House

Puede probar su integración mediante su perfil de negocio de prueba.

El Mastercard Payment Gateway proporciona un emulador que devolverá una respuesta con response.gatewayCode=APPROVED para todas las solicitudes válidas para los pagos de Automated Clearing House.

Derechos de autor © 2020 Mastercard