items = is_object($items) && method_exists($items, 'toArray') ? $items->toArray() : $items; $this->wechatError(); } /** * 错误统一处理 */ public function wechatError() { if (!$this->error) { return; } if (isset($this->items['errcode']) && 0 !== $this->items['errcode']) { throw new WechatException( ErrorMessage::getWorkMessage( $this->items['errcode'] ?? 0, $this->items['errmsg'] ?? null ) ); } } /** * @param bool $boole * @return $this */ public function serError(bool $boole) { $this->error = $boole; return $this; } /** * 正确处理 * @param callable $then * @param bool $error * @return $this */ public function then(callable $then, bool $error = null) { $error = $error || $this->error; if (0 !== $this->items['errcode'] && $error) { throw new WechatException($this->items['errmsg']); } try { $this->response = $then($this->items); } catch (Throwable $e) { $this->e = $e; } return $this; } /** * 异常处理 * @param callable $catch * @return $this */ public function catch(callable $catch) { if (!$this->e) { $this->e = new WechatException('success'); } $catch($this->e, $this->items); return $this; } /** * 获取返回值 * @return string */ public function getResponse() { return $this->response; } }