hasAmount()) { $result['amount'] = $this->serializeAmount($request->getAmount()); } if ($request->hasTransfers()) { $result['transfers'] = $this->serializeTransfers($request->getTransfers()); } if ($request->hasReceipt()) { $receipt = $request->getReceipt(); if ($receipt->notEmpty()) { $result['receipt'] = array(); /** @var ReceiptItem $item */ foreach ($receipt->getItems() as $item) { $itemArray = array( 'description' => $item->getDescription(), 'amount' => array( 'value' => $item->getPrice()->getValue(), 'currency' => $item->getPrice()->getCurrency(), ), 'quantity' => $item->getQuantity(), 'vat_code' => $item->getVatCode(), ); if ($value = $item->getPaymentSubject()) { $itemArray['payment_subject'] = $value; } if ($value = $item->getPaymentMode()) { $itemArray['payment_mode'] = $value; } if ($value = $item->getProductCode()) { $itemArray['product_code'] = $value; } if ($value = $item->getCountryOfOriginCode()) { $itemArray['country_of_origin_code'] = $value; } if ($value = $item->getCustomsDeclarationNumber()) { $itemArray['customs_declaration_number'] = $value; } if ($value = $item->getExcise()) { $itemArray['excise'] = $value; } $result['receipt']['items'][] = $itemArray; } if ($customer = $receipt->getCustomer()) { $customerArray = array(); if ($value = $customer->getEmail()) { $customerArray['email'] = $value; } if ($value = $customer->getPhone()) { $customerArray['phone'] = $value; } if ($value = $customer->getFullName()) { $customerArray['full_name'] = $value; } if ($value = $customer->getInn()) { $customerArray['inn'] = $value; } $result['receipt']['customer'] = $customerArray; } if ($value = $receipt->getTaxSystemCode()) { $result['receipt']['tax_system_code'] = $value; } } } return $result; } private function serializeAmount(AmountInterface $amount) { return array( 'value' => $amount->getValue(), 'currency' => $amount->getCurrency(), ); } /** * @param TransferInterface[] $transfers * * @return array */ private function serializeTransfers(array $transfers) { $result = array(); foreach ($transfers as $transfer) { $result[] = array( 'account_id' => $transfer->getAccountId(), 'amount' => $this->serializeAmount($transfer->getAmount()) ); } return $result; } }