ArrayDirection.php 916 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. declare(strict_types=1);
  3. namespace Yansongda\Pay\Direction;
  4. use Psr\Http\Message\ResponseInterface;
  5. use Yansongda\Pay\Contract\DirectionInterface;
  6. use Yansongda\Pay\Contract\PackerInterface;
  7. use Yansongda\Pay\Exception\Exception;
  8. use Yansongda\Pay\Exception\InvalidResponseException;
  9. class ArrayDirection implements DirectionInterface
  10. {
  11. /**
  12. * @throws InvalidResponseException
  13. */
  14. public function parse(PackerInterface $packer, ?ResponseInterface $response): array
  15. {
  16. if (is_null($response)) {
  17. throw new InvalidResponseException(Exception::RESPONSE_NONE);
  18. }
  19. $body = (string) $response->getBody();
  20. if (!is_null($result = $packer->unpack($body))) {
  21. return $result;
  22. }
  23. throw new InvalidResponseException(Exception::UNPACK_RESPONSE_ERROR, 'Unpack Response Error', ['body' => $body, 'response' => $response]);
  24. }
  25. }