[ 'type' => 'integer', 'access' => 'getFormattedAmount', 'accessParameters' => [ 'amount' ] ], 'authorized_amount' => [ 'type' => 'integer', 'access' => 'getFormattedAmount', 'accessParameters' => [ 'authorized_amount' ] ], 'auto_capture' => [ 'type' => 'boolean', 'required' => false, 'access' => 'autoCapture' ], 'allow_save_card' => [ 'type' => 'boolean', 'access' => 'allowSaveCard' ], 'payment_method' => [ 'type' => 'string', 'access' => 'paymentMethod' ], 'initiator' => [ 'type' => 'string', ], 'save_card' => [ 'type' => 'boolean', 'access' => 'forceSaveCard' ], 'currency' => [ 'type' => 'string', 'required' => true ], 'billing' => [ 'type' => 'nested', 'required' => true, 'parameters' => [ 'title' => [ 'type' => 'string', 'required' => false, 'access' => 'billingTitle' ], 'first_name' => [ 'type' => 'string', 'required' => true, 'access' => 'billingFirstName' ], 'last_name' => [ 'type' => 'string', 'required' => true, 'access' => 'billingLastName' ], 'email' => [ 'type' => 'string', 'required' => true, 'access' => 'billingEmail' ], 'mobile_phone_number' => [ 'type' => 'string', 'required' => false, 'access' => 'billingMobilePhone' ], 'landline_phone_number' => [ 'type' => 'string', 'required' => false, 'access' => 'billingLandLinePhone' ], 'address1' => [ 'type' => 'string', 'required' => true, 'access' => 'billingAddress1' ], 'address2' => [ 'type' => 'string', 'required' => false, 'access' => 'billingAddress2' ], 'postcode' => [ 'type' => 'string', 'required' => true, 'access' => 'billingPostcode' ], 'company_name' => [ 'type' => 'string', 'required' => false, 'access' => 'billingCompany' ], 'city' => [ 'type' => 'string', 'required' => true, 'access' => 'billingCity' ], 'state' => [ 'type' => 'string', 'required' => false, 'access' => 'billingState' ], 'country' => [ 'type' => 'string', 'required' => true, 'access' => 'billingCountry' ], 'language' => [ 'type' => 'string', 'required' => false, 'access' => 'billingLanguage' ] ] ], 'shipping' => [ 'type' => 'nested', 'required' => true, 'parameters' => [ 'title' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingTitle' ], 'first_name' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingFirstName' ], 'last_name' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingLastName' ], 'email' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingEmail' ], 'mobile_phone_number' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingMobilePhone' ], 'landline_phone_number' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingLandLinePhone' ], 'address1' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingAddress1' ], 'address2' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingAddress2' ], 'postcode' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingPostcode' ], 'company_name' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingCompany' ], 'city' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingCity' ], 'state' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingState' ], 'country' => [ 'type' => 'string', 'required' => true, 'access' => 'shippingCountry' ], 'language' => [ 'type' => 'string', 'required' => false, 'access' => 'shippingLanguage' ], 'delivery_type' => [ 'type' => 'choice', 'required' => true, 'access' => 'shippingDeliveryType', 'options' => [ 'BILLING', 'VERIFIED', 'NEW', 'SHIP_TO_STORE', 'DIGITAL_GOODS', 'TRAVEL_OR_EVENT', 'OTHER' ] ] ] ], 'hosted_payment' => [ 'type' => 'nested', 'parameters' => [ 'return_url' => [ 'type' => 'string', 'required' => false, 'access' => 'hostedPaymentReturnUrl' ], 'cancel_url' => [ 'type' => 'string', 'required' => false, 'access' => 'hostedPaymentCancelUrl' ], 'sent_by' => [ 'type' => 'string', 'required' => false, 'access' => 'hostedPaymentSentBy' ] ] ], 'notification_url' => [ 'type' => 'string', 'required' => false, 'access' => 'notificationUrl' ], 'payment_context' => [ 'type' => 'nested', 'required' => false, 'parameters' => [ 'cart' => [ 'type' => 'array', 'access' => 'products', 'item_definition' => [ 'brand' => [ 'type' => "string", 'required' => true, 'access' => 'getBrand' ], 'expected_delivery_date' => [ 'type' => "string", 'required' => true, 'access' => "getExpectedDeliveryDate" ], 'delivery_label' => [ 'type' => "string", 'required' => true, 'access' => "getDeliveryLabel" ], 'delivery_type' => [ 'type' => "string", 'required' => true, 'access' => "getDeliveryType" ], 'merchant_item_id' => [ 'type' => "string", 'required' => true, 'access' => "getMerchantItemId" ], 'name' => [ 'type' => "string", 'required' => true, 'access' => "getName" ], 'price' => [ 'type' => "integer", 'required' => true, 'access' => "getPrice" ], 'quantity' => [ 'type' => "integer", 'required' => true, 'access' => "getQuantity" ], 'total_amount' => [ 'type' => "integer", 'required' => true, 'access' => "getTotalAmount" ] ] ] ] ], 'metadata' => [ 'type' => 'nested', 'parameters' => [ 'customer_id' => [ 'type' => 'string', 'required' => false, 'access' => 'customerId' ] ] ], ]; /** * @var string */ protected $paymentId; /** * @var string */ protected $paymentUrl; /** * @var boolean */ protected $isPaid; /** * @var Order */ protected $order; /** * @var integer */ protected $amount; /** * @var boolean */ protected $capture = false; /** * @var boolean */ protected $autoCapture = false; /** * @var boolean */ protected $allowSaveCard = false; /** * @var boolean */ protected $forceSaveCard = false; /** * @var string */ protected $paymentMethod; /** * @var string */ protected $initiator; /** * @var string */ protected $currency; /** * @var string */ protected $customerId; /** * @var string */ protected $billingPersonTitle; /** * @var string */ protected $billingFirstName; /** * @var string */ protected $billingLastName; /** * @var string */ protected $billingMobilePhone; /** * @var string */ protected $billingLandLinePhone; /** * @var string */ protected $billingEmail; /** * @var string */ protected $billingAddress1; /** * @var string */ protected $billingAddress2; /** * @var string */ protected $billingPostcode; /** * @var string */ protected $billingCompany; /** * @var string */ protected $billingCity; /** * @var string */ protected $billingState; /** * @var string */ protected $billingCountry; /** * @var string */ protected $billingLanguage; /** * @var string */ protected $shippingPersonTitle; /** * @var string */ protected $shippingFirstName; /** * @var string */ protected $shippingLastName; /** * @var string */ protected $shippingMobilePhone; /** * @var string */ protected $shippingLandLinePhone; /** * @var string */ protected $shippingEmail; /** * @var string */ protected $shippingAddress1; /** * @var string */ protected $shippingAddress2; /** * @var string */ protected $shippingPostcode; /** * @var string */ protected $shippingCompany; /** * @var string */ protected $shippingCity; /** * @var string */ protected $shippingState; /** * @var string */ protected $shippingCountry; /** * @var string */ protected $shippingLanguage; /** * @var string */ protected $shippingDeliveryType = 'BILLING'; /** * @var string */ protected $hostedPaymentReturnUrl; /** * @var string */ protected $hostedPaymentCancelUrl; /** * @var string */ protected $hostedPaymentSentBy; /** * @var PayPlugProduct[] */ protected $products; /** * @var string */ protected $notificationUrl; public function buildFromOrder(Order $order) { $this->order = $order; if (null !== $customer = $order->getCustomer()) { $this->setCustomerId($customer->getId()) ->setBillingEmail($customer->getEmail()) ->setShippingEmail($customer->getEmail()); } if (null !== $order) { // Avoid php bad int cast https://www.php.net/manual/fr/function.intval.php#60793 $orderAmount = $order->getTotalAmount() * 100; $this->setAmount(intval("$orderAmount")) ->setCurrency($order->getCurrency()->getCode()); $this->setPayPlugAddress($order->getOrderAddressRelatedByInvoiceOrderAddressId(), 'Billing'); $this->setPayPlugAddress($order->getOrderAddressRelatedByDeliveryOrderAddressId(), 'Shipping'); $langCode = $order->getLang()->getCode(); $this->setBillingLanguage($langCode) ->setShippingLanguage($langCode); $this->setHostedPaymentReturnUrl(URL::getInstance()->absoluteUrl('/order/placed/'.$order->getId())) ->setHostedPaymentCancelUrl(URL::getInstance()->absoluteUrl('/order/failed/'.$order->getId().'/-')) ->setNotificationUrl(URL::getInstance()->absoluteUrl('/payplug/notification')); // If payment is done retrieve his id on transaction ref $this->setPaymentId($order->getTransactionRef()); $payPlugDeliveryType = PayPlugModuleDeliveryTypeQuery::create() ->filterByModuleId($order->getDeliveryModuleId()) ->findOne(); foreach ($order->getOrderProducts() as $orderProduct) { $this->addProduct((new PayPlugProduct())->buildFromOrderProduct($orderProduct, $payPlugDeliveryType)); } } return $this; } public function getFormattedPaymentParameters() { $this->checkParametersReadyForPayment($this::PARAMETER_DEFINITIONS); $formattedParameters = []; $this->buildArrayParameters($this::PARAMETER_DEFINITIONS, $formattedParameters); return $formattedParameters; } protected function buildArrayParameters($parameterDefinitions, &$array, $parentKey = null, $target = null) { if (null === $target) { $target = $this; } foreach ($parameterDefinitions as $key => $parameterDefinition) { $access = isset($parameterDefinition['access']) ? $parameterDefinition['access'] : $key; if ($parameterDefinition['type'] === 'array') { $targetArray = isset($array[$parentKey]) ? $array[$parentKey] : $array; $targetArray[$key] = []; foreach ($target->{$access} as $item) { $childArray = []; $this->buildArrayParameters($parameterDefinition['item_definition'], $childArray, $key, $item); $targetArray[$key][] = $childArray; } if (!empty($targetArray[$key])) { $array = $targetArray; } continue; } if ($parameterDefinition['type'] === 'nested') { $targetArray = isset($array[$parentKey]) ? $array[$parentKey] : $array; $targetArray[$key] = []; $this->buildArrayParameters($parameterDefinition['parameters'], $targetArray[$key], $key); if (!empty($targetArray[$key])) { $array = $targetArray; } continue; } $value = null; $value = property_exists($target, $access) ? $target->{$access} :null; if (null === $value && method_exists($target, $access)) { $parameters = isset($parameterDefinition['accessParameters']) ? $parameterDefinition['accessParameters'] : []; $value = call_user_func([$target, $access], ...$parameters); } // If still null or empty no need to fill this parameter if (null == $value) { continue; } $array[$key] = $value; } } protected function checkParametersReadyForPayment(array $parameterDefinitions, $target = null) { if (null === $target) { $target = $this; } foreach ($parameterDefinitions as $key => $parameterDefinition) { $access = isset($parameterDefinition['access']) ? $parameterDefinition['access'] : $key; if ($parameterDefinition['type'] === 'array') { foreach ($target->{$access} as $item) { $this->checkParametersReadyForPayment($parameterDefinition['item_definition'], $item); } continue; } if ($parameterDefinition['type'] === 'nested') { $this->checkParametersReadyForPayment($parameterDefinition['parameters'], $target); continue; } $value = property_exists($target, $access) ? $target->{$access} :null; if (null === $value && method_exists($target, $access)) { $parameters = isset($parameterDefinition['accessParameters']) ? $parameterDefinition['accessParameters'] : []; $value = call_user_func([$target, $access], ...$parameters); } if (isset($parameterDefinition['required']) && $parameterDefinition['required'] && $value == null) { throw new \Exception(Translator::getInstance()->trans("Invalid payment parameter, %parameter should not be null or empty.", ['%parameter' => $key], PayPlugModule::DOMAIN_NAME)); } } } public function setPayPlugAddress($addressData, $addressType) { $this ->{'set'.$addressType.'FirstName'}($addressData->getFirstname()) ->{'set'.$addressType.'LastName'}($addressData->getLastname()) ->{'set'.$addressType.'Address1'}($addressData->getAddress1()) ->{'set'.$addressType.'Postcode'}($addressData->getZipcode()) ->{'set'.$addressType.'City'}($addressData->getCity()) ->{'set'.$addressType.'Country'}($addressData->getCountry()->getIsoalpha2()); if (null !== $addressData->getAddress2()) { $this->{'set'.$addressType.'Address2'}($addressData->getAddress2()); } if (null !== $state = $addressData->getState()) { $this->{'set'.$addressType.'State'}($state->getIsocode()); } if (null !== $addressData->getCellphone()) { $internationalPhoneNumber = $this->formatPhoneNumber($addressData->getCellphone(), $addressData->getCountry()->getIsoalpha2()); $this->{'set'.$addressType.'MobilePhone'}($internationalPhoneNumber); } if (null !== $addressData->getPhone()) { $internationalPhoneNumber = $this->formatPhoneNumber($addressData->getPhone(), $addressData->getCountry()->getIsoalpha2()); $this->{'set'.$addressType.'LandLinePhone'}($internationalPhoneNumber); } if (null !== $addressData->getCompany()) { $this->{'set'.$addressType.'Company'}($addressData->getCompany()); } } protected function getFormattedAmount($key) { if ((!$this->capture && $key === "amount") || ($this->capture && $key === "authorized_amount")) { return $this->amount; } return null; } protected function formatPhoneNumber($phoneNumber, $countryCode) { try { $phoneUtil = PhoneNumberUtil::getInstance(); $phoneNumber = $phoneUtil->parse($phoneNumber, $countryCode); return $phoneUtil->format($phoneNumber, PhoneNumberFormat::INTERNATIONAL); } catch (\Exception $exception) { return null; } } /** * @return string */ public function getPaymentId() { return $this->paymentId; } /** * @param string $paymentId * @return PayPlugPaymentEvent */ public function setPaymentId(string $paymentId = null): PayPlugPaymentEvent { $this->paymentId = $paymentId; return $this; } /** * @return string */ public function getPaymentUrl() { return $this->paymentUrl; } /** * @param string $paymentUrl * @return PayPlugPaymentEvent */ public function setPaymentUrl(string $paymentUrl): PayPlugPaymentEvent { $this->paymentUrl = $paymentUrl; return $this; } /** * @return bool */ public function isPaid() { return $this->isPaid; } /** * @param bool $isPaid * @return PayPlugPaymentEvent */ public function setIsPaid(bool $isPaid): PayPlugPaymentEvent { $this->isPaid = $isPaid; return $this; } /** * @return Order */ public function getOrder(): Order { return $this->order; } /** * @param Order $order * @return PayPlugPaymentEvent */ public function setOrder(Order $order): PayPlugPaymentEvent { $this->order = $order; return $this; } /** * @return int */ public function getAmount() { return $this->amount; } /** * @param int $amount * @return PayPlugPaymentEvent */ public function setAmount(int $amount): PayPlugPaymentEvent { $this->amount = $amount; return $this; } /** * @return bool */ public function isCapture() { return $this->capture; } /** * @param bool $capture * @return PayPlugPaymentEvent */ public function setCapture(bool $capture): PayPlugPaymentEvent { $this->capture = $capture; return $this; } /** * @return bool */ public function isAutoCapture() { return $this->autoCapture; } /** * @param bool $autoCapture * @return PayPlugPaymentEvent */ public function setAutoCapture(bool $autoCapture): PayPlugPaymentEvent { $this->autoCapture = $autoCapture; return $this; } /** * @return bool */ public function isAllowSaveCard() { return $this->allowSaveCard; } /** * @param bool $allowSaveCard * @return PayPlugPaymentEvent */ public function setAllowSaveCard(bool $allowSaveCard): PayPlugPaymentEvent { $this->allowSaveCard = $allowSaveCard; return $this; } /** * @return bool */ public function isForceSaveCard() { return $this->forceSaveCard; } /** * @param bool $forceSaveCard * @return PayPlugPaymentEvent */ public function setForceSaveCard(bool $forceSaveCard): PayPlugPaymentEvent { $this->forceSaveCard = $forceSaveCard; return $this; } /** * @return string */ public function getPaymentMethod() { return $this->paymentMethod; } /** * @param string $paymentMethod * @return PayPlugPaymentEvent */ public function setPaymentMethod(string $paymentMethod = null): PayPlugPaymentEvent { $this->paymentMethod = $paymentMethod; return $this; } /** * @return string */ public function getInitiator() { return $this->initiator; } /** * @param string $initiator * @return PayPlugPaymentEvent */ public function setInitiator(string $initiator): PayPlugPaymentEvent { $this->initiator = $initiator; return $this; } /** * @return string */ public function getCurrency() { return $this->currency; } /** * @param string $currency * @return PayPlugPaymentEvent */ public function setCurrency(string $currency): PayPlugPaymentEvent { $this->currency = $currency; return $this; } /** * @return string */ public function getCustomerId() { return $this->customerId; } /** * @param string $customerId * @return PayPlugPaymentEvent */ public function setCustomerId(string $customerId): PayPlugPaymentEvent { $this->customerId = $customerId; return $this; } /** * @return string */ public function getBillingPersonTitle() { return $this->billingPersonTitle; } /** * @param string $billingPersonTitle * @return PayPlugPaymentEvent */ public function setBillingPersonTitle(string $billingPersonTitle): PayPlugPaymentEvent { $this->billingPersonTitle = $billingPersonTitle; return $this; } /** * @return string */ public function getBillingFirstName() { return $this->billingFirstName; } /** * @param string $billingFirstName * @return PayPlugPaymentEvent */ public function setBillingFirstName(string $billingFirstName): PayPlugPaymentEvent { $this->billingFirstName = $billingFirstName; return $this; } /** * @return string */ public function getBillingLastName() { return $this->billingLastName; } /** * @param string $billingLastName * @return PayPlugPaymentEvent */ public function setBillingLastName(string $billingLastName): PayPlugPaymentEvent { $this->billingLastName = $billingLastName; return $this; } /** * @return string */ public function getBillingMobilePhone() { return $this->billingMobilePhone; } /** * @param string $billingMobilePhone * @return PayPlugPaymentEvent */ public function setBillingMobilePhone(string $billingMobilePhone): PayPlugPaymentEvent { $this->billingMobilePhone = $billingMobilePhone; return $this; } /** * @return string */ public function getBillingLandLinePhone() { return $this->billingLandLinePhone; } /** * @param string $billingLandLinePhone * @return PayPlugPaymentEvent */ public function setBillingLandLinePhone(string $billingLandLinePhone): PayPlugPaymentEvent { $this->billingLandLinePhone = $billingLandLinePhone; return $this; } /** * @return string */ public function getBillingEmail() { return $this->billingEmail; } /** * @param string $billingEmail * @return PayPlugPaymentEvent */ public function setBillingEmail(string $billingEmail): PayPlugPaymentEvent { $this->billingEmail = $billingEmail; return $this; } /** * @return string */ public function getBillingAddress1() { return $this->billingAddress1; } /** * @param string $billingAddress1 * @return PayPlugPaymentEvent */ public function setBillingAddress1(string $billingAddress1): PayPlugPaymentEvent { $this->billingAddress1 = $billingAddress1; return $this; } /** * @return string */ public function getBillingAddress2() { return $this->billingAddress2; } /** * @param string $billingAddress2 * @return PayPlugPaymentEvent */ public function setBillingAddress2(string $billingAddress2): PayPlugPaymentEvent { $this->billingAddress2 = $billingAddress2; return $this; } /** * @return string */ public function getBillingPostcode() { return $this->billingPostcode; } /** * @param string $billingPostcode * @return PayPlugPaymentEvent */ public function setBillingPostcode(string $billingPostcode): PayPlugPaymentEvent { $this->billingPostcode = $billingPostcode; return $this; } /** * @return string|null */ public function getBillingCompany() { return $this->billingCompany; } /** * @param string $billingCompany * @return PayPlugPaymentEvent */ public function setBillingCompany(string $billingCompany): PayPlugPaymentEvent { $this->billingCompany = $billingCompany; return $this; } /** * @return string */ public function getBillingCity() { return $this->billingCity; } /** * @param string $billingCity * @return PayPlugPaymentEvent */ public function setBillingCity(string $billingCity): PayPlugPaymentEvent { $this->billingCity = $billingCity; return $this; } /** * @return string */ public function getBillingState() { return $this->billingState; } /** * @param string $billingState * @return PayPlugPaymentEvent */ public function setBillingState(string $billingState): PayPlugPaymentEvent { $this->billingState = $billingState; return $this; } /** * @return string */ public function getBillingCountry() { return $this->billingCountry; } /** * @param string $billingCountry * @return PayPlugPaymentEvent */ public function setBillingCountry(string $billingCountry): PayPlugPaymentEvent { $this->billingCountry = $billingCountry; return $this; } /** * @return string */ public function getBillingLanguage() { return $this->billingLanguage; } /** * @param string $billingLanguage * @return PayPlugPaymentEvent */ public function setBillingLanguage(string $billingLanguage): PayPlugPaymentEvent { $this->billingLanguage = $billingLanguage; return $this; } /** * @return string */ public function getShippingPersonTitle() { return $this->shippingPersonTitle; } /** * @param string $shippingPersonTitle * @return PayPlugPaymentEvent */ public function setShippingPersonTitle(string $shippingPersonTitle): PayPlugPaymentEvent { $this->shippingPersonTitle = $shippingPersonTitle; return $this; } /** * @return string */ public function getShippingFirstName() { return $this->shippingFirstName; } /** * @param string $shippingFirstName * @return PayPlugPaymentEvent */ public function setShippingFirstName(string $shippingFirstName): PayPlugPaymentEvent { $this->shippingFirstName = $shippingFirstName; return $this; } /** * @return string */ public function getShippingLastName() { return $this->shippingLastName; } /** * @param string $shippingLastName * @return PayPlugPaymentEvent */ public function setShippingLastName(string $shippingLastName): PayPlugPaymentEvent { $this->shippingLastName = $shippingLastName; return $this; } /** * @return string */ public function getShippingMobilePhone() { return $this->shippingMobilePhone; } /** * @param string $shippingMobilePhone * @return PayPlugPaymentEvent */ public function setShippingMobilePhone(string $shippingMobilePhone): PayPlugPaymentEvent { $this->shippingMobilePhone = $shippingMobilePhone; return $this; } /** * @return string */ public function getShippingLandLinePhone() { return $this->shippingLandLinePhone; } /** * @param string $shippingLandLinePhone * @return PayPlugPaymentEvent */ public function setShippingLandLinePhone(string $shippingLandLinePhone): PayPlugPaymentEvent { $this->shippingLandLinePhone = $shippingLandLinePhone; return $this; } /** * @return string */ public function getShippingEmail() { return $this->shippingEmail; } /** * @param string $shippingEmail * @return PayPlugPaymentEvent */ public function setShippingEmail(string $shippingEmail): PayPlugPaymentEvent { $this->shippingEmail = $shippingEmail; return $this; } /** * @return string */ public function getShippingAddress1() { return $this->shippingAddress1; } /** * @param string $shippingAddress1 * @return PayPlugPaymentEvent */ public function setShippingAddress1(string $shippingAddress1): PayPlugPaymentEvent { $this->shippingAddress1 = $shippingAddress1; return $this; } /** * @return string */ public function getShippingAddress2() { return $this->shippingAddress2; } /** * @param string $shippingAddress2 * @return PayPlugPaymentEvent */ public function setShippingAddress2(string $shippingAddress2): PayPlugPaymentEvent { $this->shippingAddress2 = $shippingAddress2; return $this; } /** * @return string */ public function getShippingPostcode() { return $this->shippingPostcode; } /** * @param string $shippingPostcode * @return PayPlugPaymentEvent */ public function setShippingPostcode(string $shippingPostcode): PayPlugPaymentEvent { $this->shippingPostcode = $shippingPostcode; return $this; } /** * @return string|null */ public function getShippingCompany() { return $this->shippingCompany; } /** * @param string $shippingCompany * @return PayPlugPaymentEvent */ public function setShippingCompany(string $shippingCompany): PayPlugPaymentEvent { $this->shippingCompany = $shippingCompany; return $this; } /** * @return string */ public function getShippingCity() { return $this->shippingCity; } /** * @param string $shippingCity * @return PayPlugPaymentEvent */ public function setShippingCity(string $shippingCity): PayPlugPaymentEvent { $this->shippingCity = $shippingCity; return $this; } /** * @return string */ public function getShippingState() { return $this->shippingState; } /** * @param string $shippingState * @return PayPlugPaymentEvent */ public function setShippingState(string $shippingState): PayPlugPaymentEvent { $this->shippingState = $shippingState; return $this; } /** * @return string */ public function getShippingCountry() { return $this->shippingCountry; } /** * @param string $shippingCountry * @return PayPlugPaymentEvent */ public function setShippingCountry(string $shippingCountry): PayPlugPaymentEvent { $this->shippingCountry = $shippingCountry; return $this; } /** * @return string */ public function getShippingLanguage() { return $this->shippingLanguage; } /** * @param string $shippingLanguage * @return PayPlugPaymentEvent */ public function setShippingLanguage(string $shippingLanguage): PayPlugPaymentEvent { $this->shippingLanguage = $shippingLanguage; return $this; } /** * @return string */ public function getShippingDeliveryType() { return $this->shippingDeliveryType; } /** * @param string $shippingDeliveryType * @return PayPlugPaymentEvent */ public function setShippingDeliveryType(string $shippingDeliveryType): PayPlugPaymentEvent { $this->shippingDeliveryType = $shippingDeliveryType; return $this; } /** * @return string */ public function getHostedPaymentReturnUrl() { return $this->hostedPaymentReturnUrl; } /** * @param string $hostedPaymentReturnUrl * @return PayPlugPaymentEvent */ public function setHostedPaymentReturnUrl(string $hostedPaymentReturnUrl = null): PayPlugPaymentEvent { $this->hostedPaymentReturnUrl = $hostedPaymentReturnUrl; return $this; } /** * @return string */ public function getHostedPaymentCancelUrl() { return $this->hostedPaymentCancelUrl; } /** * @param string $hostedPaymentCancelUrl * @return PayPlugPaymentEvent */ public function setHostedPaymentCancelUrl(string $hostedPaymentCancelUrl = null): PayPlugPaymentEvent { $this->hostedPaymentCancelUrl = $hostedPaymentCancelUrl; return $this; } /** * @return string */ public function getHostedPaymentSentBy() { return $this->hostedPaymentSentBy; } /** * @param string $hostedPaymentSentBy * @return PayPlugPaymentEvent */ public function setHostedPaymentSentBy(string $hostedPaymentSentBy): PayPlugPaymentEvent { $this->hostedPaymentSentBy = $hostedPaymentSentBy; return $this; } /** * @return PayPlugProduct[] */ public function getProducts(): array { return $this->products; } /** * @param PayPlugProduct[] $products * @return PayPlugPaymentEvent */ public function setProducts(array $products): PayPlugPaymentEvent { $this->products = $products; return $this; } /** * @param PayPlugProduct $product * @return PayPlugPaymentEvent */ public function addProduct(PayPlugProduct $product): PayPlugPaymentEvent { $this->products[] = $product; return $this; } /** * @return string */ public function getNotificationUrl() { return $this->notificationUrl; } /** * @param string $notificationUrl * @return PayPlugPaymentEvent */ public function setNotificationUrl(string $notificationUrl): PayPlugPaymentEvent { $this->notificationUrl = $notificationUrl; return $this; } }