public function testPaymentAviso()
 {
     $this->requestData = ['requestDatetime' => '2011-05-04T20:38:00.000+04:00', 'action' => 'paymentAviso', 'md5' => '45125C95A20A7F25B63D58EA304AFED2', 'shopId' => $this->shopId, 'shopArticleId' => '456', 'invoiceId' => $this->invoiceId, 'customerNumber' => '8123294469', 'orderCreatedDatetime' => '2011-05-04T20:38:00.000+04:00', 'orderSumAmount' => '87.10', 'orderSumCurrencyPaycash' => '643', 'orderSumBankPaycash' => '1001', 'shopSumAmount' => '86.23', 'shopSumCurrencyPaycash' => '643', 'shopSumBankPaycash' => '1001', 'paymentDatetime' => '2011-05-04T20:38:10.000+04:00', 'paymentPayerCode' => '42007148320', 'paymentType' => 'AC', 'cps_user_country_code' => 'RU', 'MyField' => 'My value'];
     $this->responseData = ['performedDatetime' => $this->performedDatetime, 'invoiceId' => $this->invoiceId, 'shopId' => $this->shopId];
     $this->specify('It should return OK when request is valid AND callback return true', function () {
         $this->fillPaymentAvisoRequest($this->requestData);
         $this->expectsPaymentAvisoRequestIsValid();
         $this->expectsPaymentAvisoCallbackReturn(true);
         $xml = $this->makePaymentAvisoResponseXml(['code' => YandexKassaResponse::STATUS_SUCCESS]);
         $this->assertXmlStringEqualsXmlString($xml, $this->kassa->createPaymentAvisoResponse($this->requestData)->getContent());
     });
     $this->specify('It should return with error when request is invalid', function () {
         $this->fillPaymentAvisoRequest($this->requestData);
         $this->expectsPaymentAvisoCallbackReturn(true);
         $this->expectsPaymentAvisoRequestIsInvalid();
         $xml = $this->makePaymentAvisoResponseXml(['code' => YandexKassaResponse::STATUS_AUTHORIZE_ERROR, 'message' => YandexKassaResponse::MESSAGE_INVALID_REQUEST]);
         $this->assertXmlStringEqualsXmlString($xml, $this->kassa->createPaymentAvisoResponse($this->requestData)->getContent());
     });
     $this->specify('It should return empty response when order check callback return false', function () {
         $this->fillPaymentAvisoRequest($this->requestData);
         $this->expectsPaymentAvisoCallbackReturn(false);
         $this->expectsPaymentAvisoRequestIsValid();
         $this->assertEmpty($this->kassa->createPaymentAvisoResponse($this->requestData)->getContent());
     });
 }
 public function createPaymentAvisoResponse(array $requestData)
 {
     return $this->kassa->createPaymentAvisoResponse($requestData);
 }