S SmartDocs
シリーズ: Bridget java 55 行 · 更新日 2026-05-08

PostPaymentRequest.java

Bridget/payment-gateway-microservices/services/payment-service/src/main/java/com/checkout/paymentgw/payment/api/dto/PostPaymentRequest.java

package com.checkout.paymentgw.payment.api.dto;

import com.checkout.paymentgw.payment.api.validation.ValidExpiryDate;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;

/**
 * Public request shape. Identical contract as the original monolith — kept stable so
 * existing merchant integrations keep working through the migration.
 */
@Data
@Builder
@ValidExpiryDate(message = "expiry_month, expiry_year: Expiry date should be in the future")
public class PostPaymentRequest implements Serializable {

    @NotNull(message = "card_number: Card Number is required")
    @Size(min = 14, max = 19, message = "card_number: Size must be between 14 and 19")
    @Pattern(regexp = "\\d+", message = "card_number: Card number should contain only digits")
    @JsonProperty("card_number")
    private String cardNumber;

    @NotNull(message = "expiry_month: Expiry month is required")
    @Min(value = 1, message = "expiry_month: Month must be between 1 and 12")
    @Max(value = 12, message = "expiry_month: Month must be between 1 and 12")
    @JsonProperty("expiry_month")
    private Integer expiryMonth;

    @NotNull(message = "expiry_year: Expiry year is required")
    @JsonProperty("expiry_year")
    private Integer expiryYear;

    @NotNull(message = "currency: Currency is required")
    @Size(min = 3, max = 3, message = "currency: Size must be 3")
    @Pattern(regexp = "^[A-Z]+$",
             message = "currency: Currency should contain only capital letters; Refer to ISO code list: https://www.xe.com/currency/")
    private String currency;

    @NotNull(message = "amount: Amount is required")
    @Positive
    private Integer amount;

    @NotNull(message = "cvv: CVV is required")
    @Size(min = 3, max = 4, message = "cvv: Size must be between 3 and 4")
    @Pattern(regexp = "\\d+", message = "cvv: CVV should contain only digits")
    private String cvv;
}

関連記事

Bridget java 更新日 2026-03-30

PaymentGatewayApplication.java

PaymentGatewayApplication.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/PaymentGatewayApplication.java).

記事を読む →
Bridget java 更新日 2026-03-20

ApplicationConfiguration.java

ApplicationConfiguration.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/ApplicationConfiguration.java).

記事を読む →
Bridget java 更新日 2026-03-30

RequestResponseLogger.java

RequestResponseLogger.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/RequestResponseLogger.java).

記事を読む →
Bridget java 更新日 2026-04-14

PaymentGatewayController.java

PaymentGatewayController.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/controller/PaymentGatewayController.java).

記事を読む →
Bridget java 更新日 2026-03-20

PaymentStatus.java

PaymentStatus.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/enums/PaymentStatus.java).

記事を読む →
Bridget java 更新日 2026-03-29

BankErrorException.java

BankErrorException.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/exception/BankErrorException.java).

記事を読む →