private HkPaymentResponse createPayment(
      String gatewayOrderId,
      String gatewayReferenceId,
      String rrn,
      String respMsg,
      String txnType,
      String amount,
      String authIdCode) {
    HkPaymentResponse hkPaymentResponse =
        new HkPaymentResponse(
            gatewayOrderId,
            gatewayReferenceId,
            respMsg,
            EnumGateway.EBS.asGateway(),
            null,
            null,
            rrn,
            authIdCode,
            NumberUtils.toDouble(amount));

    if (txnType.equalsIgnoreCase(EnumPaymentTransactionType.SALE.getName())) {
      hkPaymentResponse.setGatewayOrderId(gatewayOrderId);
      hkPaymentResponse.setTransactionType(EnumPaymentTransactionType.SALE.getName());
    } else if (txnType.equalsIgnoreCase(EnumPaymentTransactionType.REFUND.getName())) {
      hkPaymentResponse.setTransactionType(EnumPaymentTransactionType.REFUND.getName());
    }
    return hkPaymentResponse;
  }
  @Override
  public HkPaymentResponse refundPayment(Payment basePayment, Double amount)
      throws HealthkartPaymentGatewayException {
    String baseGatewayOrderId = basePayment.getGatewayOrderId();
    String gatewayReferenceId = basePayment.getGatewayReferenceId();
    HkPaymentResponse hkRefundPaymentResponse = null;

    if (baseGatewayOrderId != null && gatewayReferenceId != null) {
      try {
        Element element =
            callPaymentGateway(
                null,
                gatewayReferenceId,
                null,
                amount.toString(),
                EbsPaymentGatewayWrapper.TXN_ACTION_REFUND);

        hkRefundPaymentResponse =
            verifyAndCreateHkResponsePayment(
                element, baseGatewayOrderId, EnumPaymentTransactionType.REFUND.getName());
      } catch (Exception e) {
        logger.debug("Ebs Payment gateway exception :", e);
      }

    } else {
      throw new HealthkartPaymentGatewayException(
          HealthkartPaymentGatewayException.Error.PAYMENT_NOT_UPDATED);
    }

    return hkRefundPaymentResponse;
  }
 private void updateResponseStatus(
     HkPaymentResponse hkPaymentResponse,
     String transactionType,
     String isFlagged,
     String status,
     String ebsTransactionType) {
   if (transactionType.equalsIgnoreCase(EnumPaymentTransactionType.REFUND.getName())) {
     updateRefundPaymentStatus(hkPaymentResponse, status);
   } else {
     updateSalePaymentStatus(hkPaymentResponse, isFlagged, ebsTransactionType);
   }
 }
  @Override
  public List<HkPaymentResponse> seekPaymentFromGateway(Payment basePayment)
      throws HealthkartPaymentGatewayException {
    String gatewayOrderId = basePayment.getGatewayOrderId();
    List<HkPaymentResponse> gatewayPaymentList = new ArrayList<HkPaymentResponse>();

    try {

      // call payment gateway and get the base payment object
      Element element =
          callPaymentGateway(
              gatewayOrderId, null, null, null, EbsPaymentGatewayWrapper.TXN_ACTION_STATUS);
      HkPaymentResponse baseGatewayPayment =
          verifyAndCreateHkResponsePayment(
              element, gatewayOrderId, EnumPaymentTransactionType.SALE.getName());
      List<Payment> paymentList =
          paymentDao.searchPayments(null, null, null, null, null, null, null, basePayment, null);

      gatewayPaymentList.add(baseGatewayPayment);

      // again call gateway and update all child payment list
      if (paymentList != null) {
        for (Payment payment : paymentList) {
          String gatewayReferenceId = payment.getGatewayReferenceId();
          String rrn = payment.getRrn();
          if (gatewayReferenceId != null && rrn != null) {
            Element ele =
                callPaymentGateway(
                    gatewayOrderId,
                    payment.getGatewayReferenceId(),
                    payment.getRrn(),
                    null,
                    EbsPaymentGatewayWrapper.TXN_ACTION_STATUS_PAYMENT_ID);
            HkPaymentResponse childPayment =
                verifyAndCreateHkResponsePayment(
                    ele, payment.getGatewayOrderId(), EnumPaymentTransactionType.REFUND.getName());
            gatewayPaymentList.add(childPayment);
          } else {
            HkPaymentResponse hkPaymentResponse =
                createPayment(
                    payment.getGatewayOrderId(),
                    null,
                    null,
                    payment.getErrorLog(),
                    EnumPaymentTransactionType.REFUND.getName(),
                    payment.getAmount().toString(),
                    null);
            hkPaymentResponse.setHKPaymentStatus(EnumHKPaymentStatus.FAILURE);
            gatewayPaymentList.add(hkPaymentResponse);
          }
        }
      }

    } catch (Exception e) {
      logger.debug("Ebs Payment gateway exception :", e);
      // throw new
      // HealthkartPaymentGatewayException(HealthkartPaymentGatewayException.Error.UNKNOWN);
    }

    return gatewayPaymentList;
  }