<?phpnamespace Services\PaymentBundle\Entity;use Doctrine\ORM\Mapping as ORM;use JsonSerializable;/** * Entity to save additional transaction information returned by psp * * @ORM\Table(name="payment_additional_info") * @ORM\Entity(repositoryClass="Services\PaymentBundle\Repository\PaymentAdditionalInfoRepository") */class PaymentAdditionalInfo implements JsonSerializable{ /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="psp_name", type="string") */ private $pspName; /** * @var string * * @ORM\Column(name="order_id", type="string") */ private $orderId; /** * @var string * * @ORM\Column(name="data", type="text") */ private $data; /** * @var \DateTime * * @ORM\Column(name="created_at", type="datetime") */ private $createdAt; public function __construct() { $this->createdAt = new \DateTime('now'); } /** * @return int */ public function getId(): int { return $this->id; } /** * @param int $id */ public function setId(int $id): void { $this->id = $id; } /** * @return string */ public function getPspName(): string { return $this->pspName; } /** * @param string $pspName */ public function setPspName(string $pspName): void { $this->pspName = $pspName; } /** * @return string */ public function getOrderId(): string { return $this->orderId; } /** * @param string $orderId */ public function setOrderId(string $orderId): void { $this->orderId = $orderId; } public function getData():? array { return json_decode($this->data, true); } public function setData($data): void { $this->data = json_encode($data); } /** * @return \DateTime */ public function getCreatedAt(): \DateTime { return $this->createdAt; } /** * @param \DateTime $createdAt */ public function setCreatedAt(\DateTime $createdAt): void { $this->createdAt = $createdAt; } /** * Specify data which should be serialized to JSON * @return array */ public function jsonSerialize() { return [ $this->pspName, $this->orderId, $this->data, $this->createdAt ]; }}