@@ -275,11 +275,10 @@ WECHAT = {
               | 
            ||
| 275 | 275 | 
                 | 
            
| 276 | 276 | 
                WECHAT_REDIRECT_URI = 'http://api.pai.ai/to_redirect'  | 
            
| 277 | 277 | 
                 | 
            
| 278 | 
                -WECHAT_GET_CODE_BASE = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=%s#wechat_redirect'  | 
            |
| 279 | 
                -WECHAT_GET_CODE_USERINFO = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_userinfo&state=%s#wechat_redirect'  | 
            |
| 280 | 
                -WECHAT_GET_OAUTH2_ACCESS_TOKEN = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code'  | 
            |
| 278 | 
                +WECHAT_OAUTH2_AUTHORIZE = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={redirect_uri}&response_type=code&scope={scope}&state={state}#wechat_redirect'
               | 
            |
| 279 | 
                +WECHAT_OAUTH2_ACCESS_TOKEN = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={secret}&code={code}&grant_type=authorization_code'
               | 
            |
| 281 | 280 | 
                 | 
            
| 282 | 
                -WECHAT_GET_USERINFO = 'https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s'  | 
            |
| 281 | 
                +WECHAT_OAUTH2_USERINFO = 'https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}'
               | 
            |
| 283 | 282 | 
                 | 
            
| 284 | 283 | 
                # 微信支付设置  | 
            
| 285 | 284 | 
                WXPAY_NOTIFY_SUCCESS = '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'  | 
            
                @@ -19,7 +19,6 @@ ipython==4.0.0  | 
            ||
| 19 | 19 | 
                jsonfield==1.0.3  | 
            
| 20 | 20 | 
                kkconst==1.1.2  | 
            
| 21 | 21 | 
                pep8==1.6.2  | 
            
| 22 | 
                -pysnippets==1.0.2  | 
            |
| 23 | 22 | 
                pytz==2015.7  | 
            
| 24 | 23 | 
                records==0.4.3  | 
            
| 25 | 24 | 
                redis==2.10.5  | 
            
                @@ -5,12 +5,10 @@ import urllib  | 
            ||
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                import requests  | 
            
| 7 | 7 | 
                import shortuuid  | 
            
| 8 | 
                -from CodeConvert import CodeConvert as cc  | 
            |
| 9 | 8 | 
                from django.conf import settings  | 
            
| 10 | 9 | 
                from django.shortcuts import redirect  | 
            
| 11 | 10 | 
                from furl import furl  | 
            
| 12 | 11 | 
                from json_response import auto_response  | 
            
| 13 | 
                -from pysnippets import dictsnippets as dsnippets  | 
            |
| 14 | 12 | 
                from wechatpy import WeChatClient  | 
            
| 15 | 13 | 
                 | 
            
| 16 | 14 | 
                 | 
            
                @@ -25,9 +23,12 @@ def get_openid(request):  | 
            ||
| 25 | 23 | 
                     default_url = request.GET.get('default_url', '')
               | 
            
| 26 | 24 | 
                 | 
            
| 27 | 25 | 
                if request.weixin:  | 
            
| 28 | 
                - authorize_url = settings.WECHAT_GET_CODE_USERINFO if scope == 'snsapi_userinfo' else settings.WECHAT_GET_CODE_BASE  | 
            |
| 29 | 
                - get_code_url = authorize_url % (JSAPI['appID'], urllib.quote_plus(settings.WECHAT_REDIRECT_URI), urllib.quote_plus(redirect_url))  | 
            |
| 30 | 
                - return redirect(get_code_url)  | 
            |
| 26 | 
                + return redirect(settings.WECHAT_OAUTH2_AUTHORIZE.format(  | 
            |
| 27 | 
                + appid=JSAPI['appID'],  | 
            |
| 28 | 
                + redirect_uri=urllib.quote_plus(settings.WECHAT_REDIRECT_URI),  | 
            |
| 29 | 
                + scope=scope,  | 
            |
| 30 | 
                + state=urllib.quote_plus(redirect_url)  | 
            |
| 31 | 
                + ))  | 
            |
| 31 | 32 | 
                 | 
            
| 32 | 33 | 
                return redirect(default_url if default_url else redirect_url)  | 
            
| 33 | 34 | 
                 | 
            
                @@ -36,14 +37,18 @@ def to_redirect(request):  | 
            ||
| 36 | 37 | 
                     code = request.GET.get('code', '')
               | 
            
| 37 | 38 | 
                     state = request.GET.get('state', '')
               | 
            
| 38 | 39 | 
                 | 
            
| 39 | 
                - access_info = requests.get(settings.WECHAT_GET_OAUTH2_ACCESS_TOKEN % (JSAPI['appID'], JSAPI['appsecret'], code), verify=False).json()  | 
            |
| 40 | 
                + access_info = requests.get(settings.WECHAT_OAUTH2_ACCESS_TOKEN.format(  | 
            |
| 41 | 
                + appid=JSAPI['appID'],  | 
            |
| 42 | 
                + secret=JSAPI['appsecret'],  | 
            |
| 43 | 
                + code=code  | 
            |
| 44 | 
                + ), verify=False).json()  | 
            |
| 40 | 45 | 
                     unionid, openid, access_token = access_info.get('unionid', ''), access_info.get('openid', ''), access_info.get('access_token', '')
               | 
            
| 41 | 46 | 
                 | 
            
| 42 | 
                - res = requests.get(settings.WECHAT_GET_USERINFO % (access_token, openid), verify=False)  | 
            |
| 47 | 
                + res = requests.get(settings.WECHAT_OAUTH2_USERINFO.format(access_token=access_token, openid=openid), verify=False)  | 
            |
| 43 | 48 | 
                res.encoding = 'utf-8'  | 
            
| 44 | 49 | 
                userinfo = res.json()  | 
            
| 45 | 50 | 
                 | 
            
| 46 | 
                - return redirect(furl(state).add(cc.Convert2Utf8(dsnippets.filter(userinfo, ['unionid', 'openid', 'nickname', 'headimgurl']))).url)  | 
            |
| 51 | 
                + return redirect(furl(state).add(userinfo).url)  | 
            |
| 47 | 52 | 
                 | 
            
| 48 | 53 | 
                 | 
            
| 49 | 54 | 
                @auto_response  |