/** * 上传图文消息内的图片获取URL * * @param string $file 上传的文件(图片仅支持jpg/png格式,大小必须在1MB以下) * @return string url */ public function uploadImg($file) { if (filesize($file) > 1024 * 1024) { throw new Exception(sprintf(trans('wechat.file_max'), '1M')); } if (!in_array(mb_strtolower(pathinfo($file, PATHINFO_EXTENSION)), ['jpg', 'png'])) { throw new Exception(sprintf(trans('wechat.file_type'), '*.jpg, *.png')); } $json = $this->http->postJson('https://api.weixin.qq.com/cgi-bin/media/uploadimg', ['query' => ['access_token' => wechat()->getAccessToken()], 'multipart' => [['name' => basename($file), 'filename' => basename($file), 'contents' => fopen($file, 'r')]]]); $this->exceptionOrNot($json); return $json->url; }
/** * Run the request filter. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * @throws \Exception */ public function handle($request, Closure $next) { if (!$request->has('signature') || !$request->has('timestamp') || !$request->has('nonce')) { throw new \Exception(trans('wechat.illegal_access')); } $signature = $request->input('signature'); $timestamp = $request->input('timestamp'); $nonce = $request->input('nonce'); $app = wechat($request->route('one')); if (!$app->checkSignature($signature, $timestamp, $nonce)) { throw new \Exception(trans('wechat.illegal_access')); } return $next($request); }
/** * POST请求,由微信主动推送的消息 * * @param Request $request 请求 * @param [type] $uniqid 应用的唯一标识,为空时默认为配置中得第一个 * @return [type] 返回给微信的消息 */ public function postAccess(Request $request, $uniqid = null) { $message = $request->getContent(); if (empty($message)) { echo trans('wechat.data_error'); exit; } $app = wechat($uniqid); // 找不到uniqid的应用,终止执行 if (is_null($app)) { echo trans('wechat.wechat_not_available'); exit; } Log::info("{$uniqid} receve message : {$message}"); $message = simplexml_load_string($message, 'SimpleXMLElement', LIBXML_NOCDATA); return response($app->handle($message)); }
<?php use Hsin\Wechat\Results\TextResult; wechat()->on('text', function ($message) { return wechat_result(TextResult::class, ['fromUserName' => trim($message->ToUserName), 'toUserName' => trim($message->FromUserName), 'content' => 'hello wechat.']); }); // wechat('wx...')->on('text', function ($message) { // return wechat_result(TextResult::class, [ // 'fromUserName' => trim($message->ToUserName), // 'toUserName' => trim($message->FromUserName), // 'content' => 'hello wechat.', // ]); // });