Record Class Payment

java.lang.Object
java.lang.Record
com.example.orderplatform.payments.domain.Payment
Record Components:
id - payment identifier
orderId - related order identifier
status - current payment status
amount - expected amount
createdAt - creation timestamp
authorizedAt - authorization timestamp when authorized

public record Payment(UUID id, UUID orderId, PaymentStatus status, Money amount, OffsetDateTime createdAt, OffsetDateTime authorizedAt) extends Record
Framework-independent payment state used to enforce authorization transitions.
  • Constructor Details

    • Payment

      public Payment(UUID id, UUID orderId, PaymentStatus status, Money amount, OffsetDateTime createdAt, OffsetDateTime authorizedAt)
      Creates an instance of a Payment record class.
      Parameters:
      id - the value for the id record component
      orderId - the value for the orderId record component
      status - the value for the status record component
      amount - the value for the amount record component
      createdAt - the value for the createdAt record component
      authorizedAt - the value for the authorizedAt record component
  • Method Details

    • pending

      public static Payment pending(UUID id, UUID orderId, Money amount, OffsetDateTime createdAt)
      Creates a pending payment for a submitted order.
      Parameters:
      id - generated payment identifier
      orderId - related order identifier
      amount - expected payment amount
      createdAt - creation timestamp
      Returns:
      pending payment
    • authorize

      public Payment authorize(OffsetDateTime authorizedAt)
      Authorizes this payment when it is still pending.
      Parameters:
      authorizedAt - authorization timestamp
      Returns:
      authorized payment state
      Throws:
      BusinessRuleViolationException - when the payment is not pending
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • id

      public UUID id()
      Returns the value of the id record component.
      Returns:
      the value of the id record component
    • orderId

      public UUID orderId()
      Returns the value of the orderId record component.
      Returns:
      the value of the orderId record component
    • status

      public PaymentStatus status()
      Returns the value of the status record component.
      Returns:
      the value of the status record component
    • amount

      public Money amount()
      Returns the value of the amount record component.
      Returns:
      the value of the amount record component
    • createdAt

      public OffsetDateTime createdAt()
      Returns the value of the createdAt record component.
      Returns:
      the value of the createdAt record component
    • authorizedAt

      public OffsetDateTime authorizedAt()
      Returns the value of the authorizedAt record component.
      Returns:
      the value of the authorizedAt record component