[修复]微信支持服务类

This commit is contained in:
邹景立 2017-03-27 14:49:09 +08:00
parent 6d4ef5c301
commit 6088057319
11 changed files with 67 additions and 36 deletions

View File

@ -0,0 +1,29 @@
<?php
// +----------------------------------------------------------------------
// | Think.Admin
// +----------------------------------------------------------------------
// | 版权所有 2016~2017 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: http://think.ctolog.com
// +----------------------------------------------------------------------
// | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | github开源项目https://github.com/zoujingli/Think.Admin
// +----------------------------------------------------------------------
/**
* 小程序配置参数
* @return array
*/
return [
'token' => 'mytoken',
'appid' => 'wx60a43dd8161666d4',
'appsecret' => '5ac28d66f7c4dc20ca9e729ccb09b9b1',
'encodingaeskey' => 'eHSmk5yJN2vSsuYscC8aHIiXnrgXZSKA4MRL9csEwTv',
'mch_id' => '1332187001',
'partnerkey' => 'A82DC5BD1F3359081049C568D8502BC5',
'ssl_cer' => '',
'ssl_key' => '',
'cachepath' => RUNTIME_PATH . 'wechat/pay',
];

8
composer.lock generated
View File

@ -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": [],

View File

@ -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());

View File

@ -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;

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitf1ad271c62d17afe200e83a25aa54de5::getLoader();
return ComposerAutoloaderInit2bdb1a4ea6b2ecb142c59aa1efc16953::getLoader();

View File

@ -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;

View File

@ -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);
}

View File

@ -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": {

View File

@ -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;

View File

@ -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) {

View File

@ -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'])) {