@Override
  public void captureAuthAmount(PosTransaction transaction) throws Exception {
    String xml =
        StreamUtils.toString(
            MercuryPayProcessor.class.getResourceAsStream(
                "/com/mercurypay/ws/sdk/mercuryPreAuthCapture.xml")); //$NON-NLS-1$
    Ticket ticket = transaction.getTicket();

    // String merchantId = "118725340908147";
    String laneId = "01"; // $NON-NLS-1$
    String invoiceNo = String.valueOf(ticket.getId());
    String amount = String.valueOf(transaction.getAmount());

    xml = xml.replace($merchantId, CardConfig.getMerchantAccount());
    xml = xml.replace($laneId, laneId);
    xml = xml.replace($invoiceNo, invoiceNo);
    xml = xml.replace($refNo, invoiceNo);
    xml = xml.replace($amount, amount);
    xml = xml.replace($authorizeAmount, amount);
    xml = xml.replace("$gratuity", String.valueOf(transaction.getTipsAmount())); // $NON-NLS-1$
    xml = xml.replace("$recordNo", transaction.getCardTransactionId()); // $NON-NLS-1$
    xml = xml.replace("$authCode", transaction.getCardAuthCode()); // $NON-NLS-1$
    xml =
        xml.replace(
            "$AcqRefData", transaction.getProperty("AcqRefData")); // $NON-NLS-1$ //$NON-NLS-2$

    //		System.out.println(xml);

    MercuryWebRequest mpswr =
        new MercuryWebRequest("https://w1.mercurydev.net/ws/ws.asmx"); // $NON-NLS-1$
    mpswr.addParameter(
        "tran",
        xml); // Set WebServices 'tran' parameter to the XML transaction request //$NON-NLS-1$
    mpswr.addParameter(
        "pw", CardConfig.getMerchantPass()); // Set merchant's WebServices password //$NON-NLS-1$
    mpswr.setWebMethodName(
        "CreditTransaction"); // Set WebServices webmethod to selected type //$NON-NLS-1$
    mpswr.setTimeout(10); // Set request timeout to 10 seconds

    String mpsResponse = mpswr.sendRequest();

    MercuryResponse result = new MercuryResponse(mpsResponse);
    if (!result.isApproved()) {
      throw new PosException("Error authorizing transaction."); // $NON-NLS-1$
    }

    transaction.setCardTransactionId(result.getTransactionId());
    transaction.setCardAuthCode(result.getAuthCode());
  }
  private String doPreAuth(Ticket ticket, String cardTrack, double amount)
      throws IOException, Exception {
    String xml =
        StreamUtils.toString(
            MercuryPayProcessor.class.getResourceAsStream(
                "/com/mercurypay/ws/sdk/mercuryAuth.xml")); //$NON-NLS-1$

    String[] strings = cardTrack.split("\\|"); // $NON-NLS-1$

    // String merchantId = "118725340908147";
    String laneId = "01"; // $NON-NLS-1$
    String tranCode = "PreAuth"; // $NON-NLS-1$
    String invoiceNo = String.valueOf(ticket.getId());
    String amountStrng = NumberUtil.formatNumber(amount);
    String encryptedBlock = strings[3];
    String encryptedKey = strings[9];

    xml = xml.replace($merchantId, CardConfig.getMerchantAccount());
    xml = xml.replace($laneId, laneId);
    xml = xml.replace($tranCode, tranCode);
    xml = xml.replace($invoiceNo, invoiceNo);
    xml = xml.replace($refNo, invoiceNo);
    xml = xml.replace($encryptedBlock, encryptedBlock);
    xml = xml.replace($encryptedKey, encryptedKey);
    xml = xml.replace($amount, amountStrng);
    xml = xml.replace($authorizeAmount, amountStrng);

    System.out.println(xml);

    MercuryWebRequest mpswr =
        new MercuryWebRequest("https://w1.mercurydev.net/ws/ws.asmx"); // $NON-NLS-1$
    mpswr.addParameter(
        "tran",
        xml); // Set WebServices 'tran' parameter to the XML transaction request //$NON-NLS-1$
    mpswr.addParameter(
        "pw", CardConfig.getMerchantPass()); // Set merchant's WebServices password //$NON-NLS-1$
    mpswr.setWebMethodName(
        "CreditTransaction"); // Set WebServices webmethod to selected type //$NON-NLS-1$
    mpswr.setTimeout(10); // Set request timeout to 10 seconds

    String mpsResponse = mpswr.sendRequest();
    return mpsResponse;
  }