Manejo de excepciones de plug-in y retrotracción de la transacción

Si una transacción de pago no se realiza correctamente y como consecuencia de dicho error se obtiene una retrotracción de una transacción de HCL Commerce, los datos de la transacción de pago no estarán en la base de datos de HCL Commerce.

Cuando se retrotrae la transacción, se pueden realizar dos acciones. El parámetro transactionCompensationAction en PaymentMethodConfigurations.xml determina la acción:
<PaymentMethodConfiguration 
                 name="CreditCardOnline"
                 paymentSystemName="Paymentech" 
                 systemEditable="true"
                 humanEditable="true"
                 refundAllowed="true"
                 minimumAmount="0"
                 maximumAmount="Unbounded"
                 priority="MEDIUM"
                 partiallyConsumable="true"
                 transactionCompensationAction="track"/>
reverse
El valor predeterminado. Anule la transacción de pago satisfactoria.
track
Efectúe un seguimiento de la transacción de pago satisfactoria. Escriba en la base de datos cuando se retrotraiga la transacción.

Considere los dos casos de ejemplo siguientes:

transactionCompensationAction establecido en anulación

Un cliente paga un pedido utilizando una tarjeta de regalo y una tarjeta Visa. La tarjeta de regalo tiene una prioridad más alta que la tarjeta Visa.

  • El pedido se ha sometido.
  • En primer lugar, se invoca satisfactoriamente el canje de la tarjeta de regalo. El proveedor de servicios de terceros canjea la tarjeta de regalo.
  • A continuación, se invoca la validación de la tarjeta Visa y falla.
  • Este error hace que la transacción de HCL Commerce se retrotraiga.

    En la base de datos de HCL Commerce, no se conserva ninguna información de las dos transacciones de pago.

  • El mandato UndoPaymentActionsCmd anula la acción de pago que se ha ejecutado satisfactoriamente.

El canje de la tarjeta regalo se ha ejecutado satisfactoriamente y el proveedor de servicios de pago de terceros ha efectuado un seguimiento de esta transacción; pero HCL Commerce no tiene información sobre esta transacción ya que la transacción se ha retrotraído. El mandato UndoPaymentActionsCmd ejecuta las transacciones de compensar pago o abono para aquellas transacciones ejecutadas satisfactoriamente durante la retrotracción de la transacción global de HCL Commerce.

La clase de implementación correspondiente ejecuta la transacción reverseApproval para una transacción de autorización satisfactoria. Para otros tipos de transacciones, se crea un recordatorio. Con los recordatorios creados, el representante de servicio al cliente puede procesar manualmente las transacciones revertidas para todos los tipos de transacción incluida la transacción de autorización si reverseApproval falla.

Puntos de extensión de UndoPaymentActionsCmd:

  • handleUndoPaymentActionForApproval()
  • handleUndoPaymentActionForApproveAndDeposit()
  • handleUndoPaymentActionForCredit()
  • handleUndoPaymentActionForDeposit()
  • handleUndoPaymentActionForReverseApproval()
  • handleUndoPaymentActionForReverseCredit()
  • handlUndoPaymentActionForReverseDeposit()

transactionCompensationAction establecido en seguimiento

Un cliente paga un pedido utilizando una tarjeta MasterCard y una tarjeta VISA. La tarjeta VISA tiene una prioridad más alta que la tarjeta MasterCard.

  • El pedido se ha sometido.
  • En primer lugar, se invoca satisfactoriamente la validación de la tarjeta VISA.
  • A continuación, la validación para MasterCard falla.

    Este error hace que la transacción de HCL Commerce se retrotraiga.

    En la base de datos de HCL Commerce no se conserva ninguna información de las dos transacciones de pago.
  • El mandato TrackPaymentActionsCmd efectúa un seguimiento de los datos de pago relacionados para la transacción de pago que se ha ejecutado satisfactoriamente dentro de la transacción. La información se vuelve a grabar en la base de datos.

La validación de la tarjeta VISA se ha realizado satisfactoriamente. El Proveedor de servicios de pago ha efectuado un seguimiento de esta transacción. Pero HCL Commerce no tiene información sobre esta transacción ya que la transacción se ha vuelto a retrotraer. Algunas veces es necesario que los datos de pago de las transacciones satisfactorias se graben en la base de datos de HCL Commerce. Los datos de la base de datos de HCL Commerce son coherentes con los datos del Proveedor de servicios de pago. No es necesario volver a ejecutar las acciones satisfactorias. TrackPaymentActionsCmd recupera todos los datos del pago relacionados para transacciones de pago satisfactorias cuando la transacción global de HCL Commerce se retrotrae. El mandato también restaura los datos en la base de datos cuando la transacción global se retrotrae.

De forma predeterminada, no se proporciona una implementación global en la clase de implementación, TrackPaymentActionsCmdImpl. La clase de implementación proporciona la recuperación de datos básicos y la implementación de la lógica de restauración. Por ejemplo, se restauran datos en estas tablas EDPPAYINST, PPCPAYINST, EDPATMPAY, PPCPAYMENT, PPCPAYTRAN.

Puntos de extensión de TrackPaymentActionsCmd:
  • retrievePaymentData()
  • restorePaymentData()