public boolean confirmPreAuth(PaymentAuthorizationDTO auth, PaymentDTOEx payment)
      throws PluggableTaskException {

    LOG.debug("Confirming pre-authorization for " + getProcessorName() + " gateway");

    if (!getProcessorName().equals(auth.getProcessor())) {
      /*  let the processor be called and fail, so the caller can do something
      about it: probably re-call this payment task as a new "process()" run */
      LOG.warn(
          "The processor of the pre-auth is not "
              + getProcessorName()
              + ", is "
              + auth.getProcessor());
    }

    CreditCardDTO card = payment.getCreditCard();
    if (card == null) {
      throw new PluggableTaskException(
          "Credit card is required capturing" + " payment: " + payment.getId());
    }

    if (!isApplicable(payment)) {
      LOG.error("This payment can not be captured" + payment);
      return true;
    }

    return doProcess(payment, SvcType.SETTLE, auth).shouldCallOtherProcessors();
  }
  @Override // implements abstract method
  public NVPList buildRequest(PaymentDTOEx payment, SvcType transaction)
      throws PluggableTaskException {
    NVPList request = new NVPList();

    request.add(PARAMETER_MERCHANT_ID, getMerchantId());
    request.add(PARAMETER_STORE_ID, getStoreId());
    request.add(PARAMETER_TERMINAL_ID, getTerminalId());
    request.add(PARAMETER_SELLER_ID, getSellerId());
    request.add(PARAMETER_PASSWORD, getPassword());

    ContactBL contact = new ContactBL();
    contact.set(payment.getUserId());

    request.add(WorldPayParams.General.STREET_ADDRESS, contact.getEntity().getAddress1());
    request.add(WorldPayParams.General.CITY, contact.getEntity().getCity());
    request.add(WorldPayParams.General.STATE, contact.getEntity().getStateProvince());
    request.add(WorldPayParams.General.ZIP, contact.getEntity().getPostalCode());

    request.add(WorldPayParams.General.FIRST_NAME, contact.getEntity().getFirstName());
    request.add(WorldPayParams.General.LAST_NAME, contact.getEntity().getLastName());
    request.add(WorldPayParams.General.COUNTRY, contact.getEntity().getCountryCode());

    request.add(WorldPayParams.General.AMOUNT, formatDollarAmount(payment.getAmount()));
    request.add(WorldPayParams.General.SVC_TYPE, transaction.getCode());

    CreditCardDTO card = payment.getCreditCard();
    request.add(WorldPayParams.CreditCard.CARD_NUMBER, card.getNumber());
    request.add(
        WorldPayParams.CreditCard.EXPIRATION_DATE,
        EXPIRATION_DATE_FORMAT.format(card.getCcExpiry()));

    if (card.getSecurityCode() != null) {
      request.add(
          WorldPayParams.CreditCard.CVV2,
          String.valueOf(payment.getCreditCard().getSecurityCode()));
    }

    return request;
  }
  private Result doFakeAuthorization(PaymentDTOEx payment, String transactionId)
      throws PluggableTaskException {
    CreditCardDTO creditCard = payment.getCreditCard();
    if (creditCard == null || !myFilter.accept(creditCard)) {
      // give real processors a chance
      return new Result(null, true);
    }

    Integer resultId = getProcessResultId(creditCard);
    payment.setPaymentResult(new PaymentResultDAS().find(resultId));
    PaymentAuthorizationDTO authInfo = createAuthorizationDTO(resultId, transactionId);
    storeProcessedAuthorization(payment, authInfo);

    boolean wasProcessed =
        (Constants.RESULT_FAIL.equals(resultId) || Constants.RESULT_OK.equals(resultId));
    boolean shouldCallOthers = !wasProcessed && !myShouldBlockOtherProcessors;
    return new Result(authInfo, shouldCallOthers);
  }