app/Plugin/CodeacLinepay/Service/LinePay/LineResponse.php line 220

Open in your IDE?
  1. <?php
  2. namespace Plugin\CodeacLinepay\Service\LinePay;
  3. /**
  4.  * LINE Pay Response
  5.  *
  6.  * @author  Nick Tsai <myintaer@gmail.com>
  7.  * @since   3.0.0
  8.  */
  9. class LineResponse implements \ArrayAccess
  10. {
  11.     /**
  12.      * @var object \GuzzleHttp\Psr7\Response $response
  13.      */
  14.     public $response;
  15.     /**
  16.      * @var array Cache data for body with array data type
  17.      */
  18.     protected $bodyArrayCache null;
  19.     /**
  20.      * @var object Cache data for body with array object type
  21.      */
  22.     protected $bodyObjectCache null;
  23.     /**
  24.      * Constructor
  25.      *
  26.      * @param object \GuzzleHttp\Psr7\Response $response
  27.      */
  28.     function __construct(\GuzzleHttp\Psr7\Response $response)
  29.     {
  30.         $this->response $response;
  31.     }
  32.     /**
  33.      * Get LINE Pay response body as array
  34.      *
  35.      * @return array
  36.      */
  37.     public function toArray()
  38.     {
  39.         // Cache
  40.         if (!$this->bodyArrayCache) {
  41.             $this->bodyArrayCache json_decode($this->response->getBody(), true512JSON_BIGINT_AS_STRING );
  42.         }
  43.         return $this->bodyArrayCache;
  44.     }
  45.     /**
  46.      * Get LINE Pay response body as object
  47.      *
  48.      * @return object
  49.      */
  50.     public function toObject()
  51.     {
  52.         // Cache
  53.         if (!$this->bodyObjectCache) {
  54.             $this->bodyObjectCache json_decode($this->response->getBody(), false512JSON_BIGINT_AS_STRING );
  55.         }
  56.         return $this->bodyObjectCache;
  57.     }
  58.     /**
  59.      * Get LINE Pay API response body's returnCode
  60.      *
  61.      * @return string
  62.      */
  63.     public function getReturnCode()
  64.     {
  65.         return $this->offsetGet('returnCode');
  66.     }
  67.     /**
  68.      * Get LINE Pay API response body's returnMessage
  69.      *
  70.      * @return string
  71.      */
  72.     public function getReturnMessage()
  73.     {
  74.         return $this->offsetGet('returnMessage');
  75.     }
  76.     /**
  77.      * Get LINE Pay API response body's info as array
  78.      *
  79.      * @return array
  80.      */
  81.     public function getInfo()
  82.     {
  83.         return $this->offsetGet('info');
  84.     }
  85.     /**
  86.      * Get LINE Pay API response body's info.paymentUrl (Default type is "web")
  87.      *
  88.      * @return string URL
  89.      */
  90.     public function getPaymentUrl($type='web')
  91.     {
  92.         $info $this->offsetGet('info');
  93.         return isset($info['paymentUrl'][$type]) ? $info['paymentUrl'][$type] : null;
  94.     }
  95.     /**
  96.      * Get LINE Pay API response body's info.payInfo[] or info.[$param1].payInfo[] as array
  97.      *
  98.      * @param integer $itemKey
  99.      * @return array
  100.      */
  101.     public function getPayInfo($itemKey=0)
  102.     {
  103.         $info $this->offsetGet('info');
  104.         // Check for confirm or details response format
  105.         if (isset($info['payInfo'])) {
  106.             return $info['payInfo'];
  107.         }
  108.         elseif (isset($info[$itemKey]['payInfo'])) {
  109.             return $info[$itemKey]['payInfo'];
  110.         }
  111.         return null;
  112.     }
  113.     /**
  114.      * LINE Pay API result successful status
  115.      *
  116.      * @return boolean
  117.      */
  118.     public function isSuccessful()
  119.     {
  120.         if ($this->getReturnCode() == "0000") {
  121.             return true;
  122.         } else {
  123.             return false;
  124.         }
  125.     }
  126.     /**
  127.      * Magic method __call() for access \GuzzleHttp\Psr7\Response
  128.      *
  129.      * @param string $name
  130.      * @param array $arguments
  131.      * @return mixed
  132.      */
  133.     public function __call($name$arguments)
  134.     {
  135.         return call_user_func_array([$this->response$name], $arguments);
  136.     }
  137.     /**
  138.      * Magic method __get()
  139.      *
  140.      * @param string $name
  141.      * @return mixed
  142.      */
  143.     public function __get($name)
  144.     {
  145.         $data $this->toObject();
  146.         return isset($data->$name) ? $data->$name null;
  147.     }
  148.     /**
  149.      * Magic method __set()
  150.      *
  151.      * @param string $name
  152.      * @param mixed $value
  153.      * @return mixed
  154.      */
  155.     public function __set($name$value)
  156.     {
  157.         trigger_error("Cannot set response data"E_USER_NOTICE);
  158.     }
  159.     /**
  160.      * ArrayAccess method offsetSet
  161.      *
  162.      * @param string $offset
  163.      * @param mixed $value
  164.      * @return void
  165.      */
  166.     public function offsetSet($offset$value)
  167.     {
  168.         trigger_error("Cannot set response data"E_USER_NOTICE);
  169.     }
  170.     /**
  171.      * ArrayAccess method offsetExists
  172.      *
  173.      * @param string $offset
  174.      * @return boolean
  175.      */
  176.     public function offsetExists($offset)
  177.     {
  178.         return isset($this->toArray()[$offset]);
  179.     }
  180.     /**
  181.      * ArrayAccess method offsetUnset
  182.      *
  183.      * @param string $offset
  184.      * @return void
  185.      */
  186.     public function offsetUnset($offset)
  187.     {
  188.         trigger_error("Cannot unset response data"E_USER_NOTICE);
  189.     }
  190.     /**
  191.      * ArrayAccess method offsetGet
  192.      *
  193.      * @param string $offset
  194.      * @return mixed
  195.      */
  196.     public function offsetGet($offset)
  197.     {
  198.         $data $this->toArray();
  199.         return isset($data[$offset]) ? $data[$offset] : null;
  200.     }
  201. }