added initatePayment and checkTxnStatus

This commit is contained in:
himanshu
2025-10-30 17:57:12 +05:30
parent 78dd74475a
commit 65cd50567d
43 changed files with 1319 additions and 124 deletions
@@ -1,15 +1,43 @@
package com.billpaymentservice.bbps.dto;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AdditionalInfo {
private String paramConfigId;
private String paramName;
private String dataTypeDAO;
private String dataTypeModel;
private boolean optional;
private boolean visibility;
}
@Getter
@Setter
@Entity
@Table(name = "additional_info")
public class AdditionalInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // primary key for the table
@Column(name = "param_config_id", nullable = false)
@NotBlank(message = "Param Config ID cannot be blank")
private String paramConfigId;
@Column(name = "param_name", nullable = false)
@NotBlank(message = "Param name cannot be blank")
private String paramName;
@Column(name = "data_type_dao")
private String dataTypeDAO;
@Column(name = "data_type_model")
private String dataTypeModel;
@Column(name = "optional", nullable = false)
private boolean optional;
@Column(name = "visibility", nullable = false)
private boolean visibility;
// 🔗 Many AdditionalInfos belong to one Biller
@ManyToOne
@JoinColumn(name = "biller_id", nullable = false)
private BillerDAO biller;
}
@@ -0,0 +1,22 @@
package com.billpaymentservice.bbps.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AgentFundTransfer {
@NotBlank private String fundTxnReferenceId;
@NotBlank private String fundTxnRemarks;
@NotBlank private String fundTxnDate;
@NotNull private Double fundTxnAmt;
@NotBlank private String fundUTR;
private String fundRespRemarks;
private String agentNpciId;
private String txnRefId;
@NotBlank private String fundStatus; // FUND_TRANSFER_SUCCESS or FUND_TRANSFER_FAILED
}
@@ -1,15 +1,32 @@
package com.billpaymentservice.bbps.dto;
import java.util.List;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Entity
@Table(name = "amount_option")
@Getter
@Setter
public class AmountOption {
private String amountOptionId;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "amount_option_id")
private Long id;
@ElementCollection
@CollectionTable(
name = "amount_option_breakup_sets",
joinColumns = @JoinColumn(name = "amount_option_id")
)
@Column(name = "amount_breakup_value")
private List<String> amountBreakupSets;
// 🔗 Relationship with BillerResponseParams
@ManyToOne
@JoinColumn(name = "biller_response_id", nullable = false)
private BillerResponseParams billerResponseParams;
}
@@ -1,58 +1,158 @@
package com.billpaymentservice.bbps.dto;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
@Table(name = "biller_details")
@JsonIgnoreProperties(ignoreUnknown = true)
public class BillerDAO {
private String billerId;
private String billerName;
private String billerAliasName;
private String billerCategoryName;
private String billerMode;
private boolean billerAcceptsAdhoc;
private boolean parentBiller;
private String parentBillerId;
private String billerOwnerShp;
private String billerCoverage;
private String fetchRequirement;
private String paymentAmountExactness;
private String supportBillValidation;
private String billerEffctvFrom;
private String billerEffctvTo;
private String billerTempDeactivationStart;
private String billerTempDeactivationEnd;
private List<PaymentMode> billerPaymentModes;
private List<PaymentChannel> billerPaymentChannels;
private List<CustomerParam> billerCustomerParams;
private CustomerParamGroups customerParamGroups;
private BillerResponseParams billerResponseParams;
private List<AdditionalInfo> billerAdditionalInfos;
private List<AdditionalInfo> billerAdditionalInfoPayments;
private List<InterchangeFeeConf> interchangeFeeConves;
private List<InterchangeFee> interchangeFees;
private String status;
private String billerDescription;
private String supportDeemed;
private String supportPendingStatus;
private String billerTimeOut;
private String routeUrl;
@Id
@Column(name = "biller_id", length = 14, nullable = false, unique = true)
@NotBlank(message = "Biller ID is mandatory")
@Size(min = 14, max = 14, message = "Biller ID must be 14 characters long")
private String billerId;
@Column(name = "biller_name", nullable = false)
@NotBlank(message = "Biller name cannot be blank")
private String billerName;
@Column(name = "biller_alias_name", nullable = false)
@NotBlank(message = "Biller alias name cannot be blank")
private String billerAliasName;
@Column(name = "biller_category_name", nullable = false)
@NotBlank(message = "Biller category name cannot be blank")
private String billerCategoryName;
@Column(name = "biller_mode", nullable = false)
@NotBlank(message = "Biller mode cannot be blank")
private String billerMode;
@Column(name = "biller_accepts_adhoc", nullable = false)
private boolean billerAcceptsAdhoc;
@Column(name = "parent_biller", nullable = false)
private boolean parentBiller;
@Column(name = "parent_biller_id", nullable = false)
@NotBlank(message = "Parent biller ID cannot be blank")
private String parentBillerId;
@Column(name = "biller_ownership", nullable = false)
@NotBlank(message = "Biller ownership is required (PSU or Private)")
private String billerOwnerShp;
@Column(name = "biller_coverage", nullable = false)
@NotBlank(message = "Biller coverage cannot be blank")
private String billerCoverage;
@Column(name = "fetch_requirement", nullable = false)
@NotBlank(message = "Fetch requirement is mandatory")
private String fetchRequirement;
@Column(name = "payment_amount_exactness", nullable = false)
@NotBlank(message = "Payment amount exactness is required")
private String paymentAmountExactness;
@Column(name = "support_bill_validation", nullable = false)
@NotBlank(message = "Support bill validation is required")
private String supportBillValidation;
@Column(name = "biller_effctv_from", nullable = false)
@NotBlank(message = "Effective from date is required")
private String billerEffctvFrom;
@Column(name = "biller_effctv_to", nullable = false)
@NotBlank(message = "Effective to date is required")
private String billerEffctvTo;
@Column(name = "biller_temp_deactivation_start")
private String billerTempDeactivationStart;
@Column(name = "biller_temp_deactivation_end")
private String billerTempDeactivationEnd;
@Column(name = "biller_description", nullable = false, length = 500)
@NotBlank(message = "Biller description cannot be blank")
private String billerDescription;
@Column(name = "biller_response_type", nullable = false)
@NotBlank(message = "Biller response type is required (SINGLE or SELECTIVE)")
private String billerResponseType;
private BillerPlanResponseParams billerPlanResponseParams;
@Column(name = "plan_mdm_requirement", nullable = false)
@NotBlank(message = "Plan MDM requirement cannot be blank")
private String planMDMRequirement;
private List<Object> planAdditionalInfos;
private String upmsEnabled;
private String clickpayEnabled;
private String deemedSuccessEnabled;
@Column(name = "status", nullable = false)
@NotBlank(message = "Status must be ACTIVE or INACTIVE")
private String status;
@Column(name = "support_deemed", nullable = false)
@NotBlank(message = "Support deemed value is required (Yes/No)")
private String supportDeemed;
@Column(name = "support_pending_status", nullable = false)
@NotBlank(message = "Support pending status is required (Yes/No)")
private String supportPendingStatus;
@Column(name = "biller_time_out", nullable = false)
@NotBlank(message = "Biller timeout is required")
private String billerTimeOut;
@Column(name = "route_url")
private String routeUrl;
@Column(name = "upms_enabled")
private String upmsEnabled;
@Column(name = "clickpay_enabled")
private String clickpayEnabled;
@Column(name = "deemed_success_enabled")
private String deemedSuccessEnabled;
@Column(name = "selection_type")
private String selectionType;
// getters and setters
// ✅ Relationships — Each maps to its sub-arrays or objects in API
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<PaymentMode> billerPaymentModes;
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<PaymentChannel> billerPaymentChannels;
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<CustomerParam> billerCustomerParams;
@OneToOne(mappedBy = "biller", cascade = CascadeType.ALL)
private CustomerParamGroups customerParamGroups;
@OneToOne(mappedBy = "biller", cascade = CascadeType.ALL)
private BillerResponseParams billerResponseParams;
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<AdditionalInfo> billerAdditionalInfos;
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<AdditionalInfo> billerAdditionalInfoPayments;
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<InterchangeFeeConf> interchangeFeeConves;
@OneToMany(mappedBy = "biller", cascade = CascadeType.ALL, orphanRemoval = true)
private List<InterchangeFee> interchangeFees;
@OneToOne(mappedBy = "biller", cascade = CascadeType.ALL)
private BillerPlanResponseParams billerPlanResponseParams;
}
@@ -5,12 +5,36 @@ import java.util.List;
import lombok.Getter;
import lombok.Setter;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "biller_plan_response_params")
public class BillerPlanResponseParams {
private String billerPlanResponseId;
private List<Object> params;
private List<Object> amountOptions;
// getters and setters
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // Primary Key
@Column(name = "biller_plan_response_id", nullable = false, unique = true)
@NotBlank(message = "Biller Plan Response ID cannot be blank")
private String billerPlanResponseId;
// ✅ params list — since it's not a separate table, we can store as JSON or text
@Column(name = "params", columnDefinition = "TEXT")
private String paramsJson;
@Column(name = "amount_options", columnDefinition = "TEXT")
private String amountOptionsJson;
// 🔗 Relationship with BillerDAO
@OneToOne
@JoinColumn(name = "biller_id", nullable = false)
private BillerDAO biller;
}
@@ -1,16 +1,39 @@
package com.billpaymentservice.bbps.dto;
import java.util.List;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "biller_response_params")
public class BillerResponseParams {
private String billerResponseId;
private List<Object> params;
private List<AmountOption> amountOptions;
// getters and setters
@Id
@Column(name = "biller_response_id", nullable = false, unique = true)
@NotBlank(message = "Biller Response ID is required")
private String billerResponseId;
// 🔗 One-to-One Relationship with BillerDAO
@OneToOne
@JoinColumn(name = "biller_id", nullable = false)
private BillerDAO biller;
// ✅ Since params and amountOptions are lists of objects,
// we can store them as JSON or in a separate table (simplified here using @ElementCollection)
@ElementCollection
@CollectionTable(
name = "biller_response_params_data",
joinColumns = @JoinColumn(name = "biller_response_id")
)
@Column(name = "param_value")
private List<String> params;
@OneToMany(mappedBy = "billerResponseParams", cascade = CascadeType.ALL, orphanRemoval = true)
private List<AmountOption> amountOptions;
}
@@ -1,26 +1,58 @@
package com.billpaymentservice.bbps.dto;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonAlias;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "customer_param")
public class CustomerParam {
private String paramConfigId;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "param_config_id")
private Long id; // Primary key
@NotBlank(message = "Parameter name is required")
@Column(name = "param_name", nullable = false)
private String paramName;
@Column(name = "data_type_dao")
private String dataTypeDAO;
@Column(name = "data_type_model")
private String dataTypeModel;
@Column(name = "is_optional")
private boolean optional;
@Min(0)
@Column(name = "min_length")
private int minLength;
@Min(0)
@Column(name = "max_length")
private int maxLength;
@Column(name = "regex")
private String regex;
@Column(name = "is_visible")
private boolean visibility;
// 👇 Add this new line
// Store list of values as JSON or comma-separated string
@ElementCollection
@CollectionTable(name = "customer_param_values", joinColumns = @JoinColumn(name = "param_id"))
@Column(name = "value")
private List<String> values;
// getters and setters
}
// 🔗 Many customer parameters belong to one biller
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "biller_id")
private BillerDAO biller;
}
@@ -1,16 +0,0 @@
package com.billpaymentservice.bbps.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CustomerParamBill {
private String name;
private String value;
private String type;
}
@@ -0,0 +1,14 @@
package com.billpaymentservice.bbps.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CustomerParamDAO {
@NotBlank private String paramsId;
@NotBlank private String name;
@NotBlank private String value;
private String type;
}
@@ -1,14 +1,29 @@
package com.billpaymentservice.bbps.dto;
import java.util.List;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "customer_param_groups")
public class CustomerParamGroups {
private List<Group> groups;
// getters and setters
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "group_container_id")
private Long id;
// 🔗 One set of groups belongs to one biller
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "biller_id")
private BillerDAO biller;
// 🔗 One CustomerParamGroups contains multiple Group objects
@OneToMany(mappedBy = "customerParamGroups", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Group> groups;
}
@@ -1,17 +1,46 @@
package com.billpaymentservice.bbps.dto;
import java.util.List;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "biller_groups")
public class Group {
private String groupId;
private List<String> params; // e.g., ["Admission No/Application No/GR No"]
private List<Group> groups; // nested groups
private String name; // group name
private String input; // input count as string
// getters and setters
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "group_id")
private Long id;
@Column(name = "group_name")
private String name;
@Column(name = "input")
private String input;
// Example: "Admission No/Application No/GR No" → stored as multiple params
@ElementCollection
@CollectionTable(name = "group_params", joinColumns = @JoinColumn(name = "group_id"))
@Column(name = "param_name")
private List<String> params;
// 🔗 Parent group relationship (for nested groups)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_group_id")
private Group parentGroup;
// 🔁 Child groups (self-reference)
@OneToMany(mappedBy = "parentGroup", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Group> groups;
// 🔗 Back reference to CustomerParamGroups
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_container_id")
private CustomerParamGroups customerParamGroups;
}
@@ -5,14 +5,43 @@ import java.util.List;
import lombok.Getter;
import lombok.Setter;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "interchange_fee")
public class InterchangeFee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // Primary key
@Column(name = "interchange_fee_id", nullable = false, unique = true)
@NotBlank(message = "Interchange Fee ID cannot be blank")
private String interchangeFeeId;
@Column(name = "fee_code", nullable = false)
@NotBlank(message = "Fee code is mandatory")
private String feeCode;
@Column(name = "fee_description")
private String feeDesc;
@Column(name = "fee_direction")
private String feeDirection;
// ✅ Relationship with InterchangeFeeDetail (One-to-Many)
@OneToMany(mappedBy = "interchangeFee", cascade = CascadeType.ALL, orphanRemoval = true)
private List<InterchangeFeeDetail> interchangeFeeDetails;
// getters and setters
// 🔗 Many InterchangeFee entries belong to one Biller
@ManyToOne
@JoinColumn(name = "biller_id", nullable = false)
private BillerDAO biller;
}
@@ -5,18 +5,59 @@ import java.util.List;
import lombok.Getter;
import lombok.Setter;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Entity
@Table(name = "interchange_fee_conf")
public class InterchangeFeeConf {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // Primary Key for DB table
@Column(name = "interchange_fee_conf_id", nullable = false, unique = true)
@NotBlank(message = "Interchange Fee Config ID cannot be blank")
private String interChangeFeeConfId;
@Column(name = "mti")
private String mti;
@Column(name = "payment_mode")
private String paymentMode;
@Column(name = "payment_channel")
private String paymentChannel;
@Column(name = "response_code")
private String responseCode;
// ⚙️ Since 'fees' is a list of simple strings, we use ElementCollection
@ElementCollection
@CollectionTable(
name = "interchange_fee_conf_fees",
joinColumns = @JoinColumn(name = "interchange_fee_conf_id_fk")
)
@Column(name = "fee_value")
private List<String> fees;
@Column(name = "default_fee")
private boolean defaultFee;
@Column(name = "effective_from")
private String effctvFrom;
@Column(name = "effective_to")
private String effctvTo;
// getters and setters
}
// 🔗 Many InterchangeFeeConf records belong to one Biller
@ManyToOne
@JoinColumn(name = "biller_id", nullable = false)
private BillerDAO biller;
}
@@ -1,17 +1,39 @@
package com.billpaymentservice.bbps.dto;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
@Entity
@Table(name = "interchange_fee_detail")
@Getter
@Setter
public class InterchangeFeeDetail {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "interchange_fee_det_id", unique = true, nullable = false)
private String interchangeFeeDetId;
@Column(name = "tran_amt_range_max")
private long tranAmtRangeMax;
@Column(name = "tran_amt_range_min")
private long tranAmtRangeMin;
@Column(name = "percent_fee")
private double percentFee;
@Column(name = "flat_fee")
private double flatFee;
@Column(name = "effctv_from")
private String effctvFrom;
// getters and setters
// 🔗 Many InterchangeFeeDetail belong to one InterchangeFee
@ManyToOne
@JoinColumn(name = "interchange_fee_id", nullable = false)
private InterchangeFee interchangeFee;
}
@@ -1,17 +1,39 @@
package com.billpaymentservice.bbps.dto;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
import com.fasterxml.jackson.annotation.JsonProperty;
@Getter
@Setter
@Entity
@Table(name = "payment_channel")
public class PaymentChannel {
private String paymentChannelLimitId;
@Id
@Column(name = "payment_channel_limit_id")
@JsonProperty("paymentChannelLimitId") // 👈 Map JSON field to this property
private String id; // Primary key (manual, not auto-generated)
@NotBlank(message = "Payment channel is required")
@Column(name = "payment_channel", nullable = false)
private String paymentChannel;
@Min(value = 0, message = "Max limit cannot be negative")
@Column(name = "max_limit")
private long maxLimit;
@Min(value = 0, message = "Min limit cannot be negative")
@Column(name = "min_limit")
private long minLimit;
@Column(name = "support_pending_status")
private String supportPendingStatus;
// getters and setters
// 🔗 Many PaymentChannels belong to one Biller
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "biller_id")
private BillerDAO biller;
}
@@ -1,18 +1,45 @@
package com.billpaymentservice.bbps.dto;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
@Table(name = "biller_payment_modes")
public class PaymentMode {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "payment_model_limit_id", unique = true, length = 50)
@NotBlank(message = "Payment model limit ID cannot be blank")
private String paymentModelLimitId;
@Column(name = "payment_mode", nullable = false, length = 50)
@NotBlank(message = "Payment mode is mandatory")
private String paymentMode;
@Column(name = "max_limit")
@PositiveOrZero(message = "Max limit must be zero or positive")
private long maxLimit;
@Column(name = "min_limit")
@PositiveOrZero(message = "Min limit must be zero or positive")
private long minLimit;
@Column(name = "support_pending_status", length = 10)
@Pattern(regexp = "^(Yes|No)?$", message = "Support pending status must be either 'Yes' or 'No'")
private String supportPendingStatus;
// 🔗 Many-to-One relationship with BillerDAO
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "biller_id", nullable = false)
private BillerDAO biller;
}
@@ -0,0 +1,63 @@
package com.billpaymentservice.bbps.dto;
import java.time.LocalDateTime;
import java.util.List;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
public class TransactionDAO {
@NotBlank private String txnId;
@NotBlank private String refId;
private String txnNpciId;
@NotBlank private String orderId;
@NotBlank private String billId;
@NotBlank private String userType;
@NotBlank private String userId;
@NotNull private Double txnAmount;
@NotNull private Double totalTxnAmount;
@NotBlank private String billerId;
@NotBlank private String billerCategory;
@NotBlank private String billerName;
private String clientReqId;
private String offUsPay;
private String splitPay;
private String quickPay;
private String paymentMode;
private Double custConvFee;
private String currency;
private String status;
private String requestedIp;
private String customerMobNo;
private String macAddress;
private Double splitPayAmount;
private Double couCustConvFee;
private Boolean settlementVerification;
private String fundTxnType;
private String reason;
private List<String> amountTags;
private List<String> customerParamsDAOS;
private List<String> paymentInformation;
private List<CustomerParamDAO> customerParamsDAO;
private String planId;
private String planType;
private LocalDateTime creationDate;
private LocalDateTime modifiedDate;
private Long createdEpochDate;
private Long modifiedEpochDate;
}
@@ -0,0 +1,11 @@
package com.billpaymentservice.bbps.dto.request;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AmountBreakRequest {
private String name;
private double value;
}
@@ -0,0 +1,30 @@
package com.billpaymentservice.bbps.dto.request;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BillPaymentRequest {
private String tenantId;
private String refId;
private String billId;
private boolean amountOptions;
private String paymentMode;
private String paymentInformation;
private String billerId;
private String billerName;
private String billerCategory;
private String macAdress;
private String customerMobNo;
private Integer txnAmount;
private String paymentRefId;
private String paymentChannel;
private List<DeviceBlockTagRequest> deviceBlockTags;
private List<CustomerParamTagRequest> customerParamsRequest;
private List<RemitterIdentityRequest> remitterIdentity;
private List<AmountBreakRequest> amountBreakSet;
}
@@ -0,0 +1,12 @@
package com.billpaymentservice.bbps.dto.request;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CustomerParamTagRequest {
private String name;
private String value;
}
@@ -0,0 +1,11 @@
package com.billpaymentservice.bbps.dto.request;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class DeviceBlockTagRequest {
private String name;
private String value;
}
@@ -0,0 +1,11 @@
package com.billpaymentservice.bbps.dto.request;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class RemitterIdentityRequest {
private String name;
private String value;
}
@@ -0,0 +1,9 @@
package com.billpaymentservice.bbps.dto.request;
import jakarta.validation.constraints.NotNull;
public class TransactionStatusRequest extends BaseClass{
@NotNull
private String txnId; // UUID of transaction
}
@@ -4,7 +4,7 @@ import java.util.List;
import com.billpaymentservice.bbps.dto.AdditionalInfoBill;
import com.billpaymentservice.bbps.dto.BillerResponseBill;
import com.billpaymentservice.bbps.dto.CustomerParamBill;
import com.billpaymentservice.bbps.dto.CustomerParamDAO;
import com.billpaymentservice.bbps.dto.GeneralResp;
import com.billpaymentservice.bbps.dto.GeneralResponse;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -31,7 +31,7 @@ public class BillDataResponse {
private BillerResponseBill billerResponse; // nested object
private List<AdditionalInfoBill> additionalInfo; // array of objects
private List<CustomerParamBill> customerParams; // array of objects
private List<CustomerParamDAO> customerParams; // array of objects
private String creationDate;
private String modifiedDate;
@@ -0,0 +1,21 @@
package com.billpaymentservice.bbps.dto.response;
import com.billpaymentservice.bbps.dto.GeneralResp;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class BillPaymentResponse {
private String txnId;
private String refId;
private String billerId;
private String billerCategory;
private String actionType;
private String status;
private double txnAmount;
private String paymentMode;
private String currency;
private GeneralResp genericResponse; // ✅ Common response block
}
@@ -0,0 +1,24 @@
package com.billpaymentservice.bbps.dto.response;
import com.billpaymentservice.bbps.dto.AgentFundTransfer;
import com.billpaymentservice.bbps.dto.GeneralResp;
import com.billpaymentservice.bbps.dto.TransactionDAO;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TransactionStatusResponse {
@JsonProperty("transactionDAO")
private TransactionDAO transactionDAO;
@JsonProperty("agentFundTransfer")
private AgentFundTransfer agentFundTransfer;
@JsonProperty("generalResp")
private GeneralResp generalResp;
}