status === Purchase::STATUS_EXPIRED; $hasExpiredByTime = in_array($purchase->status, [ Purchase::STATUS_CREATED, Purchase::STATUS_PENDING_PAYMENT, ], true) && $purchase->expires_at !== null && $purchase->expires_at->isPast(); if ($hasExpiredStatus || $hasExpiredByTime) { throw new PurchaseExpiredException; } } }