Commit e8059014 authored by Christopher Cottier's avatar Christopher Cottier

added validations for all fields in request

parent 55c743df
......@@ -16,7 +16,9 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Valid;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/cc")
......@@ -31,15 +33,18 @@ public class CreditCardController{
@PostMapping(value = "/authorize", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public CreditCardResponse authorize(@Valid @RequestBody CreditCardRequest ccRequest) {
logger.info("this is CC controller");
//validationService.validatePostAuthorization(ccRequest);
return ccService.authorize(ccRequest);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<String> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
public ResponseEntity<List<String>> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
System.out.println("in exception handler");
return new ResponseEntity<>("not valid due to validation error: " + e.getMessage(), HttpStatus.BAD_REQUEST);
List<String> errors = e.getAllErrors().stream()
.map(error -> error.getDefaultMessage())
.collect(Collectors.toList());
return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
}
}
......@@ -5,13 +5,19 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CreditCardAmount {
@Pattern(regexp = "\\d+\\.\\d{2}", message="Value must be at dollar and cents value separated by '.'")
String value;
@NotBlank
String currency;
}
......@@ -5,16 +5,28 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class CreditCardData {
@Pattern(regexp = "\\d{16}", message = "Credit card must be 16 digits")
String number;
@Pattern(regexp = "\\d{2}", message = "Credit card must be 2 digits")
String expiryMonth;
@Pattern(regexp = "\\d{4}", message = "Credit card must be 4 digits")
String expiryYear;
@Pattern(regexp = "\\d{3}", message = "cvc must be 3 digits")
String cvc;
@NotBlank
String holderName;
}
......@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
@Getter
......@@ -13,7 +14,10 @@ import javax.validation.constraints.NotBlank;
@NoArgsConstructor
public class CreditCardRequest {
@Valid
CreditCardData card;
@Valid
CreditCardAmount amount;
@NotBlank(message="reference can't be blank")
......@@ -21,7 +25,8 @@ public class CreditCardRequest {
@NotBlank(message="merchantAccount can't be blank")
String merchantAccount;
CreditCardAddress billingAddress;
// String returnUrl; // for Adyen payment, not classic integration, do we need?
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment