/** * Returns detailed information on the current status and payment details. * * Please bear in mind that the transaction is initiated not when the * user is redirected to the payment page, but later – once his payment * details are confirmed, i.e. you may well see no transaction, which * you believe should have been started already. * * Returns `null` if invoice is not found and `Payment::isThrowExceptions()` is `false`. * * @param null|int $invoiceId Invoice ID. * * @return Invoice|null * @throws InvoiceNotFoundException If invoice is not found. */ public function getInvoice($invoiceId = null) { $signature = $this->auth->getSignatureHash('{ml}:{ii}:{vp}', ['ml' => $this->auth->getMerchantLogin(), 'ii' => $invoiceId, 'vp' => $this->auth->getValidationPassword()]); $response = $this->sendRequest($this->serviceBaseUrl . 'OpState', ['MerchantLogin' => $this->auth->getMerchantLogin(), 'InvoiceID' => $invoiceId, 'Signature' => $signature], $this->requestMethod); $sxe = simplexml_load_string($response); $this->parseError($sxe); return ['InvoiceId' => (int) $invoiceId, 'StateCode' => (int) $sxe->State->Code, 'RequestDate' => new \DateTime((string) $sxe->State->RequestDate), 'StateDate' => new \DateTime((string) $sxe->State->StateDate), 'PaymentMethod' => (string) $sxe->Info->IncCurrLabel, 'ClientSum' => (double) $sxe->Info->IncSum, 'ClientAccount' => (string) $sxe->Info->IncAccount, 'PaymentMethodCode' => (string) $sxe->Info->PaymentMethod->Code, 'PaymentMethodDescription' => (string) $sxe->Info->PaymentMethod->Description, 'Currency' => (string) $sxe->Info->OutCurrLabel, 'ShopSum' => (double) $sxe->Info->OutSum]; }