/** * @param SdkHelper * @param IValidationReply * @param AddressInterfaceFactory * @param AddressInterface */ public function __construct(SdkHelper $sdkHelper, IValidationReply $replyPayload, AddressInterfaceFactory $addressFactory, AddressInterface $originalAddress) { $this->id = uniqid('AVR-'); $this->originalAddress = $originalAddress; // Extract data from the payload so the payload instance doesn't need // to be stored (may not be session safe and this object may need // to go into the session). $this->isValid = $replyPayload->isValid(); $this->isAcceptable = $replyPayload->isAcceptable(); $this->resultCode = $replyPayload->getResultCode(); $this->errorLocations = []; foreach ($replyPayload->getErrorLocations() as $errorLocation) { $this->errorLocations[] = $errorLocation->getFieldName(); } $this->hasSuggestions = $replyPayload->hasSuggestions(); $this->suggestions = []; foreach ($replyPayload->getSuggestedAddresses() as $suggestedAddress) { $this->suggestions[uniqid('AVS-')] = $sdkHelper->transferPhysicalAddressPayloadToAddress($suggestedAddress, $addressFactory->create()); } $this->suggestionCount = $replyPayload->getResultSuggestionCount(); $this->correctedAddress = $sdkHelper->transferPhysicalAddressPayloadToAddress($replyPayload, $addressFactory->create()); }
/** * Extract any address suggestions from the address validation response, * storing them as an array of Magento address models. * * @return self */ protected function extractAddressSuggestions(IValidationReply $response) { $suggestionAddresses = []; foreach ($response->getSuggestedAddresses() as $physicalAddress) { $address = Mage::getModel('customer/address', ['has_been_validated' => true]); $this->helper->transferPhysicalAddressPayloadToAddress($physicalAddress, $address); $suggestionAddresses[] = $address; } return $this->setData('address_suggestions', $suggestionAddresses); }