id; } public function setId(string $id): Payment { $this->id = $id; return $this; } public function getUser(): User { return $this->user; } public function setUser(User $user): Payment { $this->user = $user; return $this; } public function getMethod(): string { return $this->details['method'] ?? 'NA'; } public function isPaid(): bool { // offline payment if (\array_key_exists(Constants::FIELD_PAID, $this->details)) { return $this->details[Constants::FIELD_PAID] ?? false; } // test and prod mode return $this->getStatus() === Constants::FIELD_PAID; } public function getStatus(): ?string { // offline if (\array_key_exists(Constants::FIELD_STATUS, $this->details)) { return $this->details[Constants::FIELD_STATUS] ?? null; } // test and prod mode return $this->details['payment'][Constants::FIELD_STATUS] ?? null; } }