From 608805731925062a2005fcfbfcfd67223af48d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=99=AF=E7=AB=8B?= Date: Mon, 27 Mar 2017 14:49:09 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=E5=BE=AE=E4=BF=A1=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=9C=8D=E5=8A=A1=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/extra/wechat.php | 29 +++++++++++++++++++ composer.lock | 8 ++--- extend/controller/BasicWechat.php | 7 +++-- extend/service/WechatService.php | 4 +-- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 14 ++++----- vendor/composer/autoload_static.php | 8 ++--- vendor/composer/installed.json | 8 ++--- .../wechat-php-sdk/Wechat/Lib/Common.php | 2 +- .../wechat-php-sdk/Wechat/Lib/Tools.php | 9 +++--- .../wechat-php-sdk/Wechat/WechatUser.php | 12 ++++---- 11 files changed, 67 insertions(+), 36 deletions(-) create mode 100644 application/extra/wechat.php diff --git a/application/extra/wechat.php b/application/extra/wechat.php new file mode 100644 index 000000000..3b3f53340 --- /dev/null +++ b/application/extra/wechat.php @@ -0,0 +1,29 @@ + 'mytoken', + 'appid' => 'wx60a43dd8161666d4', + 'appsecret' => '5ac28d66f7c4dc20ca9e729ccb09b9b1', + 'encodingaeskey' => 'eHSmk5yJN2vSsuYscC8aHIiXnrgXZSKA4MRL9csEwTv', + 'mch_id' => '1332187001', + 'partnerkey' => 'A82DC5BD1F3359081049C568D8502BC5', + 'ssl_cer' => '', + 'ssl_key' => '', + 'cachepath' => RUNTIME_PATH . 'wechat/pay', +]; \ No newline at end of file diff --git a/composer.lock b/composer.lock index d22d9a7c9..ca63bb8f3 100644 --- a/composer.lock +++ b/composer.lock @@ -378,12 +378,12 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/wechat-php-sdk.git", - "reference": "b80720891d847dfd58cd465c44492a36bb2c13ee" + "reference": "a7590727eac59b918274399eea3c16eb01242087" }, "dist": { "type": "zip", - "url": "https://files.phpcomposer.com/files/zoujingli/wechat-php-sdk/b80720891d847dfd58cd465c44492a36bb2c13ee.zip", - "reference": "b80720891d847dfd58cd465c44492a36bb2c13ee", + "url": "https://files.phpcomposer.com/files/zoujingli/wechat-php-sdk/a7590727eac59b918274399eea3c16eb01242087.zip", + "reference": "a7590727eac59b918274399eea3c16eb01242087", "shasum": "" }, "require": { @@ -404,7 +404,7 @@ "keywords": [ "wechat-php-sdk" ], - "time": "2017-03-20 03:40:39" + "time": "2017-03-27 06:30:12" } ], "packages-dev": [], diff --git a/extend/controller/BasicWechat.php b/extend/controller/BasicWechat.php index ad362a2ab..b619d0e7c 100644 --- a/extend/controller/BasicWechat.php +++ b/extend/controller/BasicWechat.php @@ -14,6 +14,7 @@ namespace controller; +use service\WechatService; use think\Controller; class BasicWechat extends Controller { @@ -91,7 +92,7 @@ class BasicWechat extends Controller { exit('网页授权失败,请稍候再试!'); } session('openid', $this->openid = $result['openid']); - $this->fansinfo = FansService::get($this->openid); + $this->fansinfo = WechatService::getFansInfo($this->openid); # 微信粉丝信息处理 if (empty($this->fansinfo['expires_in']) || $this->fansinfo['expires_in'] < time()) { switch ($result['scope']) { @@ -112,8 +113,8 @@ class BasicWechat extends Controller { $user['expires_in'] = $result['expires_in'] + time() - 100; $user['refresh_token'] = $result['refresh_token']; $user['access_token'] = $result['access_token']; - !FansService::set($user) && exit('微信授权失败 [ save userinfo faild ]'); - $this->fansinfo = FansService::get($this->openid); + !WechatService::setFansInfo($user, $wechat->appid) && exit('微信授权失败 [ save userinfo faild ]'); + $this->fansinfo = WechatService::getFansInfo($this->openid); } empty($this->fansinfo) && exit('获取微信用户信息失败!'); !!$redirect_url && exit(redirect($redirect_url)->send()); diff --git a/extend/service/WechatService.php b/extend/service/WechatService.php index eb57ecdca..a8d6f30a0 100644 --- a/extend/service/WechatService.php +++ b/extend/service/WechatService.php @@ -158,11 +158,11 @@ class WechatService { return false; } foreach (array_chunk($result['data']['openid'], 100) as $openids) { - if (false === ($info = $wechat->getUserBatchInfo($openids)) || !isset($info['user_info_list'])) { + if (false === ($info = $wechat->getUserBatchInfo($openids)) || !is_array($info)) { Log::error("获取用户信息失败,$wechat->errMsg"); return false; } - foreach ($info['user_info_list'] as $userInfo) { + foreach ($info as $userInfo) { if (false === self::setFansInfo($userInfo, $wechat->appid)) { Log::error('更新粉丝信息更新失败!'); return false; diff --git a/vendor/autoload.php b/vendor/autoload.php index fc64b6b8a..baac60946 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5::getLoader(); +return ComposerAutoloaderInit2bdb1a4ea6b2ecb142c59aa1efc16953::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index dbb566a12..159ef2ad6 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5 +class ComposerAutoloaderInit2bdb1a4ea6b2ecb142c59aa1efc16953 { private static $loader; @@ -19,15 +19,15 @@ class ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit2bdb1a4ea6b2ecb142c59aa1efc16953', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit2bdb1a4ea6b2ecb142c59aa1efc16953', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION'); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit2bdb1a4ea6b2ecb142c59aa1efc16953::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -48,19 +48,19 @@ class ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit2bdb1a4ea6b2ecb142c59aa1efc16953::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequiref1ad271c62d17afe200e83a25aa54de5($fileIdentifier, $file); + composerRequire2bdb1a4ea6b2ecb142c59aa1efc16953($fileIdentifier, $file); } return $loader; } } -function composerRequiref1ad271c62d17afe200e83a25aa54de5($fileIdentifier, $file) +function composerRequire2bdb1a4ea6b2ecb142c59aa1efc16953($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index b2f58c0df..7dc4b3dbe 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5 +class ComposerStaticInit2bdb1a4ea6b2ecb142c59aa1efc16953 { public static $files = array ( '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php', @@ -274,9 +274,9 @@ class ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitf1ad271c62d17afe200e83a25aa54de5::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit2bdb1a4ea6b2ecb142c59aa1efc16953::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit2bdb1a4ea6b2ecb142c59aa1efc16953::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit2bdb1a4ea6b2ecb142c59aa1efc16953::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 0c0b13c02..a22996c2c 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -88,18 +88,18 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/wechat-php-sdk.git", - "reference": "b80720891d847dfd58cd465c44492a36bb2c13ee" + "reference": "a7590727eac59b918274399eea3c16eb01242087" }, "dist": { "type": "zip", - "url": "https://files.phpcomposer.com/files/zoujingli/wechat-php-sdk/b80720891d847dfd58cd465c44492a36bb2c13ee.zip", - "reference": "b80720891d847dfd58cd465c44492a36bb2c13ee", + "url": "https://files.phpcomposer.com/files/zoujingli/wechat-php-sdk/a7590727eac59b918274399eea3c16eb01242087.zip", + "reference": "a7590727eac59b918274399eea3c16eb01242087", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "time": "2017-03-20 03:40:39", + "time": "2017-03-27 06:30:12", "type": "project", "installation-source": "dist", "autoload": { diff --git a/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Common.php b/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Common.php index 7a50f5513..d0af0d68a 100644 --- a/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Common.php +++ b/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Common.php @@ -29,7 +29,7 @@ class Common { public $postxml; public $_msg; public $errCode = 0; - public $errMsg = "no access"; + public $errMsg = ""; public $config = array(); private $_retry = FALSE; diff --git a/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Tools.php b/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Tools.php index c0012e7ad..0d6f463de 100644 --- a/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Tools.php +++ b/vendor/zoujingli/wechat-php-sdk/Wechat/Lib/Tools.php @@ -139,7 +139,7 @@ class Tools { * @param array|string $postdata * @return bool|mixed */ - static public function httpPost($url, $postdata) { + static public function httpPost($url, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); @@ -147,14 +147,15 @@ class Tools { curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_POST, TRUE); - if (is_array($postdata)) { - foreach ($postdata as &$value) { + if (is_array($data)) { + foreach ($data as &$value) { if (is_string($value) && stripos($value, '@') === 0 && class_exists('CURLFile', FALSE)) { $value = new CURLFile(realpath(trim($value, '@'))); } } + $data = http_build_query($data); } - curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $data = curl_exec($ch); curl_close($ch); if ($data) { diff --git a/vendor/zoujingli/wechat-php-sdk/Wechat/WechatUser.php b/vendor/zoujingli/wechat-php-sdk/Wechat/WechatUser.php index 7885b52bf..71a703dce 100644 --- a/vendor/zoujingli/wechat-php-sdk/Wechat/WechatUser.php +++ b/vendor/zoujingli/wechat-php-sdk/Wechat/WechatUser.php @@ -18,7 +18,7 @@ class WechatUser extends Common { /* 获取粉丝信息 */ const USER_INFO_URL = '/user/info?'; /* 批量获取粉丝信息 */ - const USER_BATCH_INFO_URL = '/user/info/batchget'; + const USER_BATCH_INFO_URL = '/user/info/batchget?'; /* 更新粉丝标注 */ const USER_UPDATEREMARK_URL = '/user/info/updateremark?'; @@ -112,15 +112,15 @@ class WechatUser extends Common { * @param string $lang 指定返回语言 * @return bool|mixed */ - public function getUserBatchInfo(array $openids, $lang = 'zh-CN') { + public function getUserBatchInfo(array $openids, $lang = 'zh_CN') { if (!$this->access_token && !$this->getAccessToken()) { return false; } - $data = array(); - foreach ($openids as $openid) { - $data[] = array('openid' => $openid, 'lang' => $lang); + $data = array('user_list' => array()); + foreach (array_unique($openids) as $openid) { + $data['user_list'][] = array('openid' => $openid, 'lang' => $lang); } - $result = Tools::httpPost(self::API_URL_PREFIX . self::USER_BATCH_INFO_URL . "access_token={$this->access_token}", $data); + $result = Tools::httpPost(self::API_URL_PREFIX . self::USER_BATCH_INFO_URL . "access_token={$this->access_token}", Tools::json_encode($data)); if ($result) { $json = json_decode($result, true); if (isset($json['errcode']) && !isset($json['user_info_list'])) {