items[] = [ 'id' => $id, 'vat' => $vat, 'name' => $name, 'amount' => $amount, 'quantity' => $quantity, ]; } /** * @param int $vat * @param string $name * @param int $amount * * @return void */ public function setDiscount($vat, $name, $amount) { $this->discount = [ 'vat' => $vat, 'name' => $name, 'amount' => $amount, ]; } /** * @param int $vat * @param string $name * @param int $amount * * @return void */ public function setShipping($vat, $name, $amount) { $this->shipping = [ 'vat' => $vat, 'name' => $name, 'amount' => $amount, ]; } /** * @param int $amount * * @return void */ public function setAmount($amount) { $this->amount = $amount; } /** * @param int $createdAt * * @return void */ public function setCreatedAt($createdAt) { $this->createdAt = $createdAt; } /** * @param string $city * @param string $name * @param string $phone * @param string $street * @param string $country * @param string $postalCode * * @return void */ public function setAddressBilling($city, $name, $phone, $street, $country, $postalCode) { $this->addressBilling = [ 'city' => $city, 'name' => $name, 'phone' => (string) $phone, 'street' => $street, 'country' => $country, 'postalCode' => (string) $postalCode, ]; } /** * @param string $city * @param string $name * @param string $phone * @param string $street * @param string $country * @param string $postalCode * * @return void */ public function setAddressDelivery($city, $name, $phone, $street, $country, $postalCode) { $this->addressDelivery = [ 'city' => $city, 'name' => $name, 'phone' => (string) $phone, 'street' => $street, 'country' => $country, 'postalCode' => (string) $postalCode, ]; } /** * @return string */ public function prepareCartData() { return base64_encode(gzencode(json_encode($this->prepareCartDataArray()), 5)); } /** * @return array */ public function prepareCartDataArray() { $data = [ 'address' => [ 'billing' => $this->addressBilling, 'delivery' => $this->addressDelivery, ], 'items' => $this->items, ]; if (!empty($this->discount)) { $data['discount'] = $this->discount; } if (!empty($this->shipping)) { $data['shipping'] = $this->shipping; } if (!empty($this->createdAt)) { $data['createdAt'] = $this->createdAt; } if (!empty($this->amount)) { $data['amount'] = $this->amount; } return $data; } }