Proceso de varios envíos con una sola aprobación
Puede procesar varios envíos al mismo tiempo con una única aprobación de autorización personalizando la clase PaymentEventListenerImpl.PaymentEventListenerImpl Sin personalización, la clase PaymentEventListenerImpl utiliza las reglas de pago predeterminadas y procesa varias transacciones para varios envíos.PaymentEventListenerImpl
Procedimiento
-
Altere temporalmente
finalization amount
yreservation amount
en la clase PaymentEventListenerImpl. Actualice el métodoupdateAtomicPaymentAfterHashActions()
para corregir el importe final del pedido.Utilice el ejemplo para alterar temporalmente el métodoupdateAtomicPaymentAfterHashActions()
:protected void updateAtomicPaymentAfterHashActions(HashMap actionLists, int phase) throws InvalidRequestException, InvalidDataException, ObjectCannotBeFoundException, EDPException {
PaymentActionData actionData = null; List actions = null; int numberOfActions = 0; Iterator iter = actionLists.keySet().iterator(); while (iter.hasNext()) { Long piId = (Long) iter.next(); actions = (List) actionLists.get(piId); numberOfActions = actions.size(); // Loop through the array of Action objects for (int j = 0; j < numberOfActions; j++) { actionData = (PaymentActionData) actions.get(j); if(actionData.getActionName().equals("DepositAction")) { Long apKeyId = actionData.getAtomicPaymentId(); AtomicPaymentData payment = getOMF().getAtomicPayment(apKeyId); if(phase == Constants.PHASE_FINALIZATION) { BigDecimal amount = actionData.getAmount().add(payment.getFinalizationAmount()); actionData.setAmount(amount); } if(phase == Constants.PHASE_RESERVATION) { BigDecimal amount = actionData.getAmount().add(payment.getReservationAmount()); actionData.setAmount(amount); } } } }
super.updateAtomicPaymentAfterHashActions(actionLists, phase); } - Abra el archivo de configuración de HCL Commerce archivo de configuración (wc-server.xml).
-
Utilice la versión actualizada de la clase PaymentEventListenerImpl.
Por ejemplo:
<component
compClassName
="com.ibm.commerce.payment.actions.commands.PaymentEventListenerImpl" enable="true" name="Payment Rule Listener"> <property display="false"> <start enabled="true"/> <event name="PaymentRule"/> </property> </component> -
Establezca el destino en el archivo CorePaymentActions.xml.
- Vaya a workspace_dir/WC/xml/config/payments/edp/groups/group_name/paymentConfiguration.
- Establezca el destino del depósito en el archivo CorePaymentActions.xml.
<TargetDeposited> ... <CurrentApproved> <AmountLessThanRequested> <Action name="Deposit" amount="existing" target="existing"/> <Action name="Approve" amount="delta" target="additional"/> <Action name="Deposit" amount="delta" target="existing"/> </AmountLessThanRequested> <AmountEqualsRequested> <Action name="Deposit" amount="existing" target="existing"/> </AmountEqualsRequested>
<AmountGreaterThanRequested> <Action name="Deposit" amount="requested" target="existing"/> </AmountGreaterThanRequested>
</CurrentApproved> ... </TargetDeposited>