File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/amzn/amazon-pay-module/Helper/Address.php
<?php
/**
* Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
namespace Amazon\Payment\Helper;
use Amazon\Core\Api\Data\AmazonAddressInterface;
use Amazon\Core\Domain\AmazonAddress;
use Magento\Customer\Api\Data\AddressInterface;
use Magento\Customer\Api\Data\AddressInterfaceFactory;
use Magento\Customer\Api\Data\RegionInterfaceFactory;
use Magento\Directory\Model\RegionFactory;
use Magento\Framework\App\Config\ScopeConfigInterface;
/**
* @deprecated As of February 2021, this Legacy Amazon Pay plugin has been
* deprecated, in favor of a newer Amazon Pay version available through GitHub
* and Magento Marketplace. Please download the new plugin for automatic
* updates and to continue providing your customers with a seamless checkout
* experience. Please see https://pay.amazon.com/help/E32AAQBC2FY42HS for details
* and installation instructions.
*/
class Address
{
/**
* @var AddressInterfaceFactory
*/
private $addressFactory;
/**
* @var RegionFactory
*/
private $regionFactory;
/**
* @var RegionInterfaceFactory
*/
private $regionDataFactory;
/**
* @var ScopeConfigInterface
*/
private $scopeConfig;
public function __construct(
AddressInterfaceFactory $addressFactory,
RegionFactory $regionFactory,
RegionInterfaceFactory $regionDataFactory,
ScopeConfigInterface $config
) {
$this->addressFactory = $addressFactory;
$this->regionFactory = $regionFactory;
$this->regionDataFactory = $regionDataFactory;
$this->scopeConfig = $config;
}
/**
* Convert Amazon Address to Magento Address
*
* @param AmazonAddressInterface $amazonAddress
*
* @return AddressInterface
*/
public function convertToMagentoEntity(AmazonAddressInterface $amazonAddress)
{
$addressLinesAllowed = (int)$this->scopeConfig->getValue(
'customer/address/street_lines',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
$address = $this->addressFactory->create();
$address->setFirstname($amazonAddress->getFirstName());
$address->setLastname($amazonAddress->getLastName());
$address->setCity($amazonAddress->getCity());
$address->setPostcode($amazonAddress->getPostCode());
$address->setTelephone($amazonAddress->getTelephone());
$address->setCountryId($this->getCountryId($amazonAddress));
$company = !empty($amazonAddress->getCompany()) ? $amazonAddress->getCompany() : '';
$address->setCompany($company);
/*
* The number of lines in a street address is configurable via 'customer/address/street_lines'.
* To avoid discarding information, we'll concatenate additional lines so that they fit within the configured
* address length.
*/
$lines = [];
for ($i = 1; $i <= 4; $i++) {
$line = (string) $amazonAddress->getLine($i);
if ($i <= $addressLinesAllowed) {
$lines[] = $line;
} else {
$lines[count($lines)-1] = trim($lines[count($lines)-1] . ' ' . $line);
}
}
$address->setStreet(array_values($lines));
if ($amazonAddress->getState()) {
$address->setRegion($this->getRegionData($amazonAddress, $address->getCountryId()));
}
return $address;
}
protected function getCountryId(AmazonAddressInterface $amazonAddress)
{
return strtoupper($amazonAddress->getCountryCode());
}
protected function getRegionData(AmazonAddressInterface $amazonAddress, $countryId)
{
$region = $this->regionFactory->create();
$regionData = $this->regionDataFactory->create();
$region->loadByCode($amazonAddress->getState(), $countryId);
if (! $region->getId()) {
$region->loadByName($amazonAddress->getState(), $countryId);
}
if ($region->getId()) {
$regionData
->setRegionId($region->getId())
->setRegionCode($region->getCode())
->setRegion($region->getDefaultName());
} else {
$regionData->setRegion($amazonAddress->getState());
}
return $regionData;
}
/**
* Convert Magento address to array for json encode
*
* @param AddressInterface $address
*
* @return array
*/
public function convertToArray(AddressInterface $address)
{
$data = [
AddressInterface::CITY => $address->getCity(),
AddressInterface::FIRSTNAME => $address->getFirstname(),
AddressInterface::LASTNAME => $address->getLastname(),
AddressInterface::COUNTRY_ID => $address->getCountryId(),
AddressInterface::STREET => $address->getStreet(),
AddressInterface::POSTCODE => $address->getPostcode(),
AddressInterface::COMPANY => $address->getCompany(),
AddressInterface::TELEPHONE => null,
AddressInterface::REGION => null,
AddressInterface::REGION_ID => null,
'region_code' => null
];
if ($address->getTelephone()) {
$data[AddressInterface::TELEPHONE] = $address->getTelephone();
}
if ($address->getRegion()) {
$data[AddressInterface::REGION] = $address->getRegion()->getRegion();
if ($address->getRegion()->getRegionId()) {
$data[AddressInterface::REGION_ID] = $address->getRegion()->getRegionId();
$data['region_code'] = $address->getRegion()->getRegionCode();
}
}
return $data;
}
}