diff --git a/pom.xml b/pom.xml index 33b9a5e..0a4a044 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,13 @@ spring-boot-starter-web - + + + com.google.code.gson + gson + 2.10.1 + + diff --git a/src/main/java/com/test/world/DTO/Merchant.java b/src/main/java/com/test/world/DTO/Merchant.java new file mode 100644 index 0000000..a0dd0a9 --- /dev/null +++ b/src/main/java/com/test/world/DTO/Merchant.java @@ -0,0 +1,20 @@ +package com.test.world.DTO; + +import org.springframework.stereotype.Component; + +@Component +public class Merchant { + + + private String identifier; + + + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + +} diff --git a/src/main/java/com/test/world/DTO/RefundRequest.java b/src/main/java/com/test/world/DTO/RefundRequest.java index 7974efb..aa2480b 100644 --- a/src/main/java/com/test/world/DTO/RefundRequest.java +++ b/src/main/java/com/test/world/DTO/RefundRequest.java @@ -7,6 +7,19 @@ public class RefundRequest { private HashMap merchant; private HashMap transaction; + public HashMap getMerchant() { + return merchant; + } + public void setMerchant(HashMap merchant) { + this.merchant = merchant; + } + public HashMap getTransaction() { + return transaction; + } + public void setTransaction(HashMap transaction) { + this.transaction = transaction; + } + } diff --git a/src/main/java/com/test/world/DTO/Transaction.java b/src/main/java/com/test/world/DTO/Transaction.java new file mode 100644 index 0000000..f86ae71 --- /dev/null +++ b/src/main/java/com/test/world/DTO/Transaction.java @@ -0,0 +1,57 @@ +package com.test.world.DTO; + +import org.springframework.stereotype.Component; + +@Component +public class Transaction { + + private String amount; + private String identifier; + private String dateTime; + private String requestType; + private String token; + private String reference; + + + + + + public String getAmount() { + return amount; + } + public void setAmount(String amount) { + this.amount = amount; + } + public String getIdentifier() { + return identifier; + } + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + public String getDateTime() { + return dateTime; + } + public void setDateTime(String dateTime) { + this.dateTime = dateTime; + } + public String getRequestType() { + return requestType; + } + public void setRequestType(String requestType) { + this.requestType = requestType; + } + public String getToken() { + return token; + } + public void setToken(String token) { + this.token = token; + } + public String getReference() { + return reference; + } + public void setReference(String reference) { + this.reference = reference; + } + + +} diff --git a/src/main/java/com/test/world/DTO/TransactionData.java b/src/main/java/com/test/world/DTO/TransactionData.java new file mode 100644 index 0000000..9d44cf8 --- /dev/null +++ b/src/main/java/com/test/world/DTO/TransactionData.java @@ -0,0 +1,27 @@ +package com.test.world.DTO; + +public class TransactionData { + + + private Merchant merchant; + private Transaction transaction; + + + + + public Merchant getMerchant() { + return merchant; + } + public void setMerchant(Merchant merchant) { + this.merchant = merchant; + } + public Transaction getTransaction() { + return transaction; + } + public void setTransaction(Transaction transaction) { + this.transaction = transaction; + } + + + +} diff --git a/src/main/java/com/test/world/controller/APIController.java b/src/main/java/com/test/world/controller/APIController.java index b69b75e..8cda991 100644 --- a/src/main/java/com/test/world/controller/APIController.java +++ b/src/main/java/com/test/world/controller/APIController.java @@ -5,31 +5,30 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import com.test.world.DTO.Merchant; import com.test.world.DTO.PensionerResponse; //import com.test.world.DTO.EmployeetoPensionerDetailsDTO; +import com.test.world.DTO.RefundRequest; +import com.test.world.DTO.Transaction; +import com.test.world.DTO.TransactionData; +import com.test.world.refund.DTO.TransactionRefundResponse; +import com.test.world.service.PaymentGatewayService; @RestController public class APIController { - /* - * @GetMapping("/api/save") public PenstionerDTO save() { PenstionerDTO pt = new - * PenstionerDTO(); List emptopn = new - * ArrayList(); EmployeetoPensionerDetailsDTO dto - * = new EmployeetoPensionerDetailsDTO(); dto.setDepartment("jdfi"); - * emptopn.add(dto); pt.set_PensionerDetailsResult(emptopn); - * pt.set_Message("ok"); pt.set_ResultStatus(true); - * - * return pt; - * - * } - */ - + @Autowired + PaymentGatewayService paymentService; + @GetMapping("/api/all") public PensionerResponse getAll() { RestTemplate restTemplate = new RestTemplate(); @@ -56,5 +55,55 @@ public class APIController { } + @GetMapping(value="/refund") + public ResponseEntity refundAmount(Model model) throws Exception { + System.out.println("Refund Api call.......working on it"); + Merchant merchant = new Merchant(); + merchant.setIdentifier("T955031"); + + Transaction transaction = new Transaction(); + transaction.setAmount("10.00"); + transaction.setIdentifier(""); + transaction.setDateTime("17-02-2024"); + transaction.setRequestType("R"); + transaction.setToken(""); + transaction.setReference("1707115835226"); + + + TransactionData transactionData = new TransactionData(); + transactionData.setMerchant(merchant); + transactionData.setTransaction(transaction); + + // Serialize TransactionData object to JSON string + Gson gson = new Gson(); + String json = gson.toJson(transactionData); + + // Print the JSON string + System.out.println(json); + String enKey = "1025180466GPADTD"; + String enIV="3232693456UWOWHC"; + String encryptHxRefund = this.paymentService.encryptHxRefund(json, enIV.getBytes(), enKey.getBytes()); + RestTemplate resttemplate = new RestTemplate(); + String Url ="https://www.tpsl-india.in/PaymentGateway/merchant2.pg/T955031"; + ResponseEntity postForEntity = resttemplate.postForEntity(Url, encryptHxRefund, String.class); + + String decryptHxTRefund = this.paymentService.decryptHxTRefund(postForEntity.getBody(), enIV.getBytes(), enKey.getBytes()); + try { + ObjectMapper objectMapper = new ObjectMapper(); + + // Deserialize JSON string into Java class object + TransactionRefundResponse myObject = objectMapper.readValue(decryptHxTRefund, TransactionRefundResponse.class); + // Print the object + System.out.println(myObject.toString()); + + return ResponseEntity.ok(myObject); + + } catch (Exception e) { + e.printStackTrace(); + } + return ResponseEntity.ok(decryptHxTRefund); + + } + } diff --git a/src/main/java/com/test/world/controller/PaymentController.java b/src/main/java/com/test/world/controller/PaymentController.java index 9348e79..6f0329e 100644 --- a/src/main/java/com/test/world/controller/PaymentController.java +++ b/src/main/java/com/test/world/controller/PaymentController.java @@ -3,6 +3,8 @@ package com.test.world.controller; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import com.test.world.DTO.RefundRequest; import com.test.world.service.PaymentGatewayService; @@ -24,7 +27,7 @@ public class PaymentController { @GetMapping(value = {"","/","/index"}) public String startPayment(Model model) throws NoSuchAlgorithmException { - String txansactionId="1707115835225"; //create transaction Id unique from our side + String txansactionId="1707115835226"; //create transaction Id unique from our side String amt = "10"; //Amount of Community Hall from our side String merchantId="T955031|"; //This is Test Merchant ID from worldLine @@ -95,6 +98,22 @@ public class PaymentController { @GetMapping(value="/refund") public String refundAmount(Model model) { System.out.println("Refund Api call.......working on it"); + RefundRequest rr = new RefundRequest(); + HashMap merchant = new HashMap(); + merchant.put("identifier", "T955031"); + rr.setMerchant(merchant); + + HashMap transaction = new HashMap(); + transaction.put("amount", "10"); + transaction.put("identifier", ""); + transaction.put("dateTime", ""); + transaction.put("requestType", "R"); + transaction.put("token", ""); + transaction.put("reference", "1707115835225"); + rr.setTransaction(transaction); + model.addAttribute("msg",rr); + + return "PaymentResponse"; diff --git a/src/main/java/com/test/world/refund/DTO/ErrorDetails.java b/src/main/java/com/test/world/refund/DTO/ErrorDetails.java new file mode 100644 index 0000000..3c5938f --- /dev/null +++ b/src/main/java/com/test/world/refund/DTO/ErrorDetails.java @@ -0,0 +1,31 @@ +package com.test.world.refund.DTO; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ErrorDetails { + + @JsonProperty("code") + private String errorCode; + + @JsonProperty("desc") + private String errorDescription; + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getErrorDescription() { + return errorDescription; + } + + public void setErrorDescription(String errorDescription) { + this.errorDescription = errorDescription; + } + + + +} diff --git a/src/main/java/com/test/world/refund/DTO/PaymentMethod.java b/src/main/java/com/test/world/refund/DTO/PaymentMethod.java new file mode 100644 index 0000000..d4e9c9e --- /dev/null +++ b/src/main/java/com/test/world/refund/DTO/PaymentMethod.java @@ -0,0 +1,98 @@ +package com.test.world.refund.DTO; + +public class PaymentMethod { + + private String token; + private String instrumentAliasName; + private String instrumentToken; + private String bankSelectionCode; + private PaymentTransaction paymentTransaction; + private Object authentication; + private ErrorDetails error; + private Object desItc; + private Object walletDetails; + + + private String paymentMode; + private String aCS; + private String oTP; + + public String getToken() { + return token; + } + public void setToken(String token) { + this.token = token; + } + public String getInstrumentAliasName() { + return instrumentAliasName; + } + public void setInstrumentAliasName(String instrumentAliasName) { + this.instrumentAliasName = instrumentAliasName; + } + public String getInstrumentToken() { + return instrumentToken; + } + public void setInstrumentToken(String instrumentToken) { + this.instrumentToken = instrumentToken; + } + public String getBankSelectionCode() { + return bankSelectionCode; + } + public void setBankSelectionCode(String bankSelectionCode) { + this.bankSelectionCode = bankSelectionCode; + } + public PaymentTransaction getPaymentTransaction() { + return paymentTransaction; + } + public void setPaymentTransaction(PaymentTransaction paymentTransaction) { + this.paymentTransaction = paymentTransaction; + } + public Object getAuthentication() { + return authentication; + } + public void setAuthentication(Object authentication) { + this.authentication = authentication; + } + public ErrorDetails getError() { + return error; + } + public void setError(ErrorDetails error) { + this.error = error; + } + public Object getDesItc() { + return desItc; + } + public void setDesItc(Object desItc) { + this.desItc = desItc; + } + public Object getWalletDetails() { + return walletDetails; + } + public void setWalletDetails(Object walletDetails) { + this.walletDetails = walletDetails; + } + public String getPaymentMode() { + return paymentMode; + } + public void setPaymentMode(String paymentMode) { + this.paymentMode = paymentMode; + } + public String getaCS() { + return aCS; + } + public void setaCS(String aCS) { + this.aCS = aCS; + } + public String getoTP() { + return oTP; + } + public void setoTP(String oTP) { + this.oTP = oTP; + } + + + + + + +} diff --git a/src/main/java/com/test/world/refund/DTO/PaymentTransaction.java b/src/main/java/com/test/world/refund/DTO/PaymentTransaction.java new file mode 100644 index 0000000..ef89daf --- /dev/null +++ b/src/main/java/com/test/world/refund/DTO/PaymentTransaction.java @@ -0,0 +1,172 @@ +package com.test.world.refund.DTO; + +public class PaymentTransaction { + + private String amount; + private String balanceAmount; + private String bankReferenceIdentifier; + private String dateTime; + private String errorMessage; + private String identifier; + private String refundIdentifier; + private String statusCode; + private String statusMessage; + + private String instruction; + private String reference; + private String refundDdetails; + private Object otherDetails; + private String rrnNumber; + private String authCode; + private String retTranStatus; + private String paymentDate; + private String bankName; + private String paymentModeCode; + private String cardType; + private String cardExpiry; + private String mandateId; + private String cardTokenStatus; + + + public String getAmount() { + return amount; + } + public void setAmount(String amount) { + this.amount = amount; + } + public String getBalanceAmount() { + return balanceAmount; + } + public void setBalanceAmount(String balanceAmount) { + this.balanceAmount = balanceAmount; + } + public String getBankReferenceIdentifier() { + return bankReferenceIdentifier; + } + public void setBankReferenceIdentifier(String bankReferenceIdentifier) { + this.bankReferenceIdentifier = bankReferenceIdentifier; + } + public String getDateTime() { + return dateTime; + } + public void setDateTime(String dateTime) { + this.dateTime = dateTime; + } + public String getErrorMessage() { + return errorMessage; + } + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + public String getIdentifier() { + return identifier; + } + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + public String getRefundIdentifier() { + return refundIdentifier; + } + public void setRefundIdentifier(String refundIdentifier) { + this.refundIdentifier = refundIdentifier; + } + public String getStatusCode() { + return statusCode; + } + public void setStatusCode(String statusCode) { + this.statusCode = statusCode; + } + public String getStatusMessage() { + return statusMessage; + } + public void setStatusMessage(String statusMessage) { + this.statusMessage = statusMessage; + } + public String getInstruction() { + return instruction; + } + public void setInstruction(String instruction) { + this.instruction = instruction; + } + public String getReference() { + return reference; + } + public void setReference(String reference) { + this.reference = reference; + } + public String getRefundDdetails() { + return refundDdetails; + } + public void setRefundDdetails(String refundDdetails) { + this.refundDdetails = refundDdetails; + } + public Object getOtherDetails() { + return otherDetails; + } + public void setOtherDetails(Object otherDetails) { + this.otherDetails = otherDetails; + } + public String getRrnNumber() { + return rrnNumber; + } + public void setRrnNumber(String rrnNumber) { + this.rrnNumber = rrnNumber; + } + public String getAuthCode() { + return authCode; + } + public void setAuthCode(String authCode) { + this.authCode = authCode; + } + public String getRetTranStatus() { + return retTranStatus; + } + public void setRetTranStatus(String retTranStatus) { + this.retTranStatus = retTranStatus; + } + public String getPaymentDate() { + return paymentDate; + } + public void setPaymentDate(String paymentDate) { + this.paymentDate = paymentDate; + } + public String getBankName() { + return bankName; + } + public void setBankName(String bankName) { + this.bankName = bankName; + } + public String getPaymentModeCode() { + return paymentModeCode; + } + public void setPaymentModeCode(String paymentModeCode) { + this.paymentModeCode = paymentModeCode; + } + public String getCardType() { + return cardType; + } + public void setCardType(String cardType) { + this.cardType = cardType; + } + public String getCardExpiry() { + return cardExpiry; + } + public void setCardExpiry(String cardExpiry) { + this.cardExpiry = cardExpiry; + } + public String getMandateId() { + return mandateId; + } + public void setMandateId(String mandateId) { + this.mandateId = mandateId; + } + public String getCardTokenStatus() { + return cardTokenStatus; + } + public void setCardTokenStatus(String cardTokenStatus) { + this.cardTokenStatus = cardTokenStatus; + } + + + +} diff --git a/src/main/java/com/test/world/refund/DTO/TransactionRefundResponse.java b/src/main/java/com/test/world/refund/DTO/TransactionRefundResponse.java new file mode 100644 index 0000000..76656bd --- /dev/null +++ b/src/main/java/com/test/world/refund/DTO/TransactionRefundResponse.java @@ -0,0 +1,84 @@ +package com.test.world.refund.DTO; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +public class TransactionRefundResponse { + + private String merchantCode; + private String merchantTransactionIdentifier; + private String merchantTransactionRequestType; + private String responseType; + private String transactionState; + private PaymentMethod paymentMethod; + private ErrorDetails error; + + // @JsonIgnoreProperties("merchantAdditionalDetails") + private String merchantAdditionalDetails; + + + public String getMerchantCode() { + return merchantCode; + } + public void setMerchantCode(String merchantCode) { + this.merchantCode = merchantCode; + } + public String getMerchantTransactionIdentifier() { + return merchantTransactionIdentifier; + } + public void setMerchantTransactionIdentifier(String merchantTransactionIdentifier) { + this.merchantTransactionIdentifier = merchantTransactionIdentifier; + } + public String getMerchantTransactionRequestType() { + return merchantTransactionRequestType; + } + public void setMerchantTransactionRequestType(String merchantTransactionRequestType) { + this.merchantTransactionRequestType = merchantTransactionRequestType; + } + public String getResponseType() { + return responseType; + } + public void setResponseType(String responseType) { + this.responseType = responseType; + } + public String getTransactionState() { + return transactionState; + } + public void setTransactionState(String transactionState) { + this.transactionState = transactionState; + } + public PaymentMethod getPaymentMethod() { + return paymentMethod; + } + public void setPaymentMethod(PaymentMethod paymentMethod) { + this.paymentMethod = paymentMethod; + } + public ErrorDetails getError() { + return error; + } + public void setError(ErrorDetails error) { + this.error = error; + } + + + + public String getMerchantAdditionalDetails() { + return merchantAdditionalDetails; + } + public void setMerchantAdditionalDetails(String merchantAdditionalDetails) { + this.merchantAdditionalDetails = merchantAdditionalDetails; + } + @Override + public String toString() { + return "MyClass{" + + "merchantCode='" + merchantCode + '\'' + + ", merchantTransactionIdentifier='" + merchantTransactionIdentifier + '\'' + + ", merchantTransactionRequestType='" + merchantTransactionRequestType + '\'' + + ", responseType='" + responseType + '\'' + + ", transactionState='" + transactionState + '\'' + + ", paymentMethod=" + paymentMethod + + ", error=" + error + + '}'; + } + + +} diff --git a/src/main/resources/templates/PaymentResponse.html b/src/main/resources/templates/PaymentResponse.html index 3d8d13f..a171431 100644 --- a/src/main/resources/templates/PaymentResponse.html +++ b/src/main/resources/templates/PaymentResponse.html @@ -4,7 +4,7 @@ GCC Community diff --git a/target/classes/META-INF/maven/com.test/world/pom.properties b/target/classes/META-INF/maven/com.test/world/pom.properties index 4bc0767..03bc88e 100644 --- a/target/classes/META-INF/maven/com.test/world/pom.properties +++ b/target/classes/META-INF/maven/com.test/world/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven Integration for Eclipse -#Fri Feb 16 21:56:31 IST 2024 +#Sat Feb 17 12:08:18 IST 2024 m2e.projectLocation=D\:\\WorldLine_payment_gateway\\world m2e.projectName=world groupId=com.test diff --git a/target/classes/META-INF/maven/com.test/world/pom.xml b/target/classes/META-INF/maven/com.test/world/pom.xml index 33b9a5e..0a4a044 100644 --- a/target/classes/META-INF/maven/com.test/world/pom.xml +++ b/target/classes/META-INF/maven/com.test/world/pom.xml @@ -26,7 +26,13 @@ spring-boot-starter-web - + + + com.google.code.gson + gson + 2.10.1 + + diff --git a/target/classes/com/test/world/DTO/Merchant.class b/target/classes/com/test/world/DTO/Merchant.class new file mode 100644 index 0000000..d855c93 Binary files /dev/null and b/target/classes/com/test/world/DTO/Merchant.class differ diff --git a/target/classes/com/test/world/DTO/RefundRequest.class b/target/classes/com/test/world/DTO/RefundRequest.class index 6cf1037..bc5d20f 100644 Binary files a/target/classes/com/test/world/DTO/RefundRequest.class and b/target/classes/com/test/world/DTO/RefundRequest.class differ diff --git a/target/classes/com/test/world/DTO/Transaction.class b/target/classes/com/test/world/DTO/Transaction.class new file mode 100644 index 0000000..067f8f0 Binary files /dev/null and b/target/classes/com/test/world/DTO/Transaction.class differ diff --git a/target/classes/com/test/world/DTO/TransactionData.class b/target/classes/com/test/world/DTO/TransactionData.class new file mode 100644 index 0000000..6bcc9c9 Binary files /dev/null and b/target/classes/com/test/world/DTO/TransactionData.class differ diff --git a/target/classes/com/test/world/controller/APIController.class b/target/classes/com/test/world/controller/APIController.class index ccec18a..9939898 100644 Binary files a/target/classes/com/test/world/controller/APIController.class and b/target/classes/com/test/world/controller/APIController.class differ diff --git a/target/classes/com/test/world/controller/PaymentController.class b/target/classes/com/test/world/controller/PaymentController.class index c478afa..46fbedb 100644 Binary files a/target/classes/com/test/world/controller/PaymentController.class and b/target/classes/com/test/world/controller/PaymentController.class differ diff --git a/target/classes/com/test/world/refund/DTO/ErrorDetails.class b/target/classes/com/test/world/refund/DTO/ErrorDetails.class new file mode 100644 index 0000000..0426928 Binary files /dev/null and b/target/classes/com/test/world/refund/DTO/ErrorDetails.class differ diff --git a/target/classes/com/test/world/refund/DTO/PaymentMethod.class b/target/classes/com/test/world/refund/DTO/PaymentMethod.class new file mode 100644 index 0000000..d92f6f3 Binary files /dev/null and b/target/classes/com/test/world/refund/DTO/PaymentMethod.class differ diff --git a/target/classes/com/test/world/refund/DTO/PaymentTransaction.class b/target/classes/com/test/world/refund/DTO/PaymentTransaction.class new file mode 100644 index 0000000..530b34c Binary files /dev/null and b/target/classes/com/test/world/refund/DTO/PaymentTransaction.class differ diff --git a/target/classes/com/test/world/refund/DTO/TransactionRefundResponse.class b/target/classes/com/test/world/refund/DTO/TransactionRefundResponse.class new file mode 100644 index 0000000..f6ec2d6 Binary files /dev/null and b/target/classes/com/test/world/refund/DTO/TransactionRefundResponse.class differ diff --git a/target/classes/templates/PaymentResponse.html b/target/classes/templates/PaymentResponse.html index 3d8d13f..a171431 100644 --- a/target/classes/templates/PaymentResponse.html +++ b/target/classes/templates/PaymentResponse.html @@ -4,7 +4,7 @@ GCC Community