public URL doInitPayment(Payment payment, PaymentServiceBean paymentServiceBean)
      throws CvqException {

    try {
      String cvqReference = "FPS_" + payment.getHomeFolderId() + "_" + System.currentTimeMillis();
      payment.setCvqReference(cvqReference);

      String domainName = payment.getPaymentSpecificData().get("domainName");
      String scheme = payment.getPaymentSpecificData().get("scheme");
      String port = payment.getPaymentSpecificData().get("port");

      if (payment.getPaymentSpecificData().get("callbackUrl") != null)
        callbackUrl = payment.getPaymentSpecificData().get("callbackUrl");

      if (port == null) port = "80";
      if (scheme == null) scheme = "https";

      String baseSiteUrl = scheme + "://" + domainName + ":" + port;

      StringBuffer urlBuffer =
          new StringBuffer()
              .append(baseSiteUrl)
              .append(paymentUrl)
              .append("?cvqReference=")
              .append(cvqReference)
              .append("&amount=")
              .append(payment.getEuroAmount())
              .append("&callbackUrl=")
              .append(baseSiteUrl)
              .append(callbackUrl)
              .append("&capDematFake=true");

      String email = payment.getPaymentSpecificDataByKey(Payment.SPECIFIC_DATA_EMAIL);
      if (email != null && !email.equals("")) urlBuffer.append("&email=").append(email);

      return new URL(urlBuffer.toString());

    } catch (MalformedURLException mue) {
      throw new CvqException(mue.getMessage());
    }
  }