59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace addons\epay\library;
 | 
						|
 | 
						|
class RedirectResponse extends \Symfony\Component\HttpFoundation\RedirectResponse implements \JsonSerializable, \Serializable
 | 
						|
{
 | 
						|
    public function __toString()
 | 
						|
    {
 | 
						|
        return $this->getContent();
 | 
						|
    }
 | 
						|
 | 
						|
    public function setTargetUrl($url)
 | 
						|
    {
 | 
						|
        if ('' === ($url ?? '')) {
 | 
						|
            throw new \InvalidArgumentException('无法跳转到空页面');
 | 
						|
        }
 | 
						|
 | 
						|
        $this->targetUrl = $url;
 | 
						|
 | 
						|
        $this->setContent(
 | 
						|
            sprintf('<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
    <head>
 | 
						|
        <meta charset="UTF-8" />
 | 
						|
        <meta http-equiv="refresh" content="0;url=\'%1$s\'" />
 | 
						|
 | 
						|
        <title>正在跳转支付 %1$s</title>
 | 
						|
    </head>
 | 
						|
    <body>
 | 
						|
        <div id="redirect" style="display:none;">正在跳转支付 <a href="%1$s">%1$s</a></div>
 | 
						|
        <script type="text/javascript">
 | 
						|
            setTimeout(function(){
 | 
						|
                document.getElementById("redirect").style.display = "block";
 | 
						|
            }, 1000);
 | 
						|
        </script>
 | 
						|
    </body>
 | 
						|
</html>', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8')));
 | 
						|
 | 
						|
        $this->headers->set('Location', $url);
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    public function jsonSerialize()
 | 
						|
    {
 | 
						|
        return $this->getContent();
 | 
						|
    }
 | 
						|
 | 
						|
    public function serialize()
 | 
						|
    {
 | 
						|
        return serialize($this->content);
 | 
						|
    }
 | 
						|
 | 
						|
    public function unserialize($serialized)
 | 
						|
    {
 | 
						|
        return $this->content = unserialize($serialized);
 | 
						|
    }
 | 
						|
}
 |