subjectReader = $subjectReader; } /** * @inheritdoc */ public function build(array $buildSubject): array { $paymentDO = $this->subjectReader->readPayment($buildSubject); $order = $paymentDO->getOrder(); $billingAddress = $order->getBillingAddress(); $shippingAddress = $order->getShippingAddress(); $result = [ 'transactionRequest' => [] ]; if ($billingAddress) { $result['transactionRequest']['billTo'] = [ 'firstName' => $billingAddress->getFirstname(), 'lastName' => $billingAddress->getLastname(), 'company' => $billingAddress->getCompany() ?? '', 'address' => $billingAddress->getStreetLine1(), 'city' => $billingAddress->getCity(), 'state' => $billingAddress->getRegionCode(), 'zip' => $billingAddress->getPostcode(), 'country' => $billingAddress->getCountryId() ]; } if ($shippingAddress) { $result['transactionRequest']['shipTo'] = [ 'firstName' => $shippingAddress->getFirstname(), 'lastName' => $shippingAddress->getLastname(), 'company' => $shippingAddress->getCompany() ?? '', 'address' => $shippingAddress->getStreetLine1(), 'city' => $shippingAddress->getCity(), 'state' => $shippingAddress->getRegionCode(), 'zip' => $shippingAddress->getPostcode(), 'country' => $shippingAddress->getCountryId() ]; } if ($order->getRemoteIp()) { $result['transactionRequest']['customerIP'] = $order->getRemoteIp(); } return $result; } }