소스 검색

[修复]微信支持服务类

邹景立 8 년 전
부모
커밋
6088057319

+ 29 - 0
application/extra/wechat.php

@@ -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',
+];

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

+ 4 - 3
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());

+ 2 - 2
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;

+ 1 - 1
vendor/autoload.php

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

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

+ 4 - 4
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);
     }

+ 4 - 4
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": {

+ 1 - 1
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;
 

+ 5 - 4
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) {

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