<?php namespace Coinbase\Wallet\Resource; use Coinbase\Wallet\ActiveRecord\CheckoutActiveRecord; use Coinbase\Wallet\Enum\CheckoutStyle; use Coinbase\Wallet\Enum\OrderType; use Coinbase\Wallet\Enum\ResourceType; use Coinbase\Wallet\Value\Money; class Checkout extends Resource { use CheckoutActiveRecord; /** @var string */ private $embedCode; /** * @var string * @see OrderType */ private $type; /** @var string */ private $name; /** @var string */ private $description; /** @var Money */ private $amount; /** @var string */ private $text; /** * @var string * @see CheckoutStyle */ private $style; /** @var Boolean */ private $customerDefinedAmount; /** @var array */ private $amountPresets; /** @var string */ private $notificationsUrl; /** @var string */ private $successUrl; /** @var string */ private $cancelUrl; /** @var Boolean */ private $autoRedirect; /** @var Boolean */ private $collectShippingAddress; /** @var Boolean */ private $collectPhoneNumber; /** @var Boolean */ private $collectEmail; /** @var Boolean */ private $collectCountry; /** @var array */ private $metadata; /** @var \DateTime */ private $createdAt; /** @var \DateTime */ private $updatedAt; /** * Creates a checkout reference. * * @param string $checkoutId The checkout id * * @return Checkout A checkout reference */ public static function reference($checkoutId) { return new static('/v2/checkouts/'.$checkoutId); } public function __construct($resourcePath = null) { parent::__construct(ResourceType::CHECKOUT, $resourcePath); } public function getEmbedCode() { return $this->embedCode; } public function getEmbedHtml() { if (empty($this->embedCode)) { throw new LogicException( 'The Checkout has not been created ($client->createCheckout($checkout)).' ); } $code_attribute = "data-code=\"$this->embedCode\""; $text_attrbute = empty($this->text) ? "" : "data-button-text=\"$this->text\""; return "<div class=\"coinbase-button\" $code_attribute $text_attrbute></div><script src=\"https://www.coinbase.com/assets/button.js\" type=\"text/javascript\"></script>"; } public function getType() { return $this->type; } public function setType($type) { $this->type = $type; } public function getText() { return $this->text; } public function setText($text) { $this->text = $text; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getDescription() { return $this->description; } public function setDescription($description) { $this->description = $description; } public function getAmount() { return $this->amount; } public function setAmount(Money $amount) { $this->amount = $amount; } public function getStyle() { return $this->style; } public function setStyle($style) { $this->style = $style; } public function isCustomerDefinedAmount() { return $this->customerDefinedAmount; } public function setCustomerDefinedAmount($customerDefinedAmount) { $this->customerDefinedAmount = $customerDefinedAmount; } public function getAmountPresets() { return $this->amountPresets; } public function setAmountPresets(array $amountPresets) { $this->amountPresets = $amountPresets; } public function getNotificationsUrl() { return $this->notificationsUrl; } public function setNotificationsUrl($notificationsUrl) { $this->notificationsUrl = $notificationsUrl; } public function getSuccessUrl() { return $this->successUrl; } public function setSuccessUrl($successUrl) { $this->successUrl = $successUrl; } public function getCancelUrl() { return $this->cancelUrl; } public function setCancelUrl($cancelUrl) { $this->cancelUrl = $cancelUrl; } public function isAutoRedirect() { return $this->autoRedirect; } public function setAutoRedirect($autoRedirect) { $this->autoRedirect = $autoRedirect; } public function isCollectShippingAddress() { return $this->collectShippingAddress; } public function setCollectShippingAddress($collectShippingAddress) { $this->collectShippingAddress = $collectShippingAddress; } public function isCollectPhoneNumber() { return $this->collectPhoneNumber; } public function setCollectPhoneNumber($collectPhoneNumber) { $this->collectPhoneNumber = $collectPhoneNumber; } public function isCollectEmail() { return $this->collectEmail; } public function setCollectEmail($collectEmail) { $this->collectEmail = $collectEmail; } public function isCollectCountry() { return $this->collectCountry; } public function setCollectCountry($collectCountry) { $this->collectCountry = $collectCountry; } public function getMetadata() { return $this->metadata; } public function setMetadata(array $metadata) { $this->metadata = $metadata; } public function getCreatedAt() { return $this->createdAt; } public function getUpdatedAt() { return $this->updatedAt; } }