コード例 #1
0
    def test_get_group(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.get_groups()

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.get_groups()
            self.assertEqual(resp['groups'][0]['id'], 0)
            self.assertEqual(resp['groups'][0]['name'], '未分组')
            self.assertEqual(resp['groups'][0]['count'], 72596)
            self.assertEqual(resp['groups'][1]['id'], 1)
            self.assertEqual(resp['groups'][1]['name'], '黑名单')
            self.assertEqual(resp['groups'][1]['count'], 36)
            self.assertEqual(resp['groups'][2]['id'], 2)
            self.assertEqual(resp['groups'][2]['name'], '星标组')
            self.assertEqual(resp['groups'][2]['count'], 8)
            self.assertEqual(resp['groups'][3]['id'], 104)
            self.assertEqual(resp['groups'][3]['name'], '华东媒')
            self.assertEqual(resp['groups'][3]['count'], 4)
            self.assertEqual(resp['groups'][4]['id'], 106)
            self.assertEqual(resp['groups'][4]['name'], '★不测试组★')
            self.assertEqual(resp['groups'][4]['count'], 1)
コード例 #2
0
def init_wechat_sdk():
    """初始化微信 SDK"""
    access_token = redis.get("wechat:access_token")
    jsapi_ticket = redis.get("wechat:jsapi_ticket")
    token_expires_at = redis.get("wechat:access_token_expires_at")
    ticket_expires_at = redis.get("wechat:jsapi_ticket_expires_at")
    if access_token and jsapi_ticket and token_expires_at and ticket_expires_at:
        wechat = WechatBasic(appid=app.config['APP_ID'],
                             appsecret=app.config['APP_SECRET'],
                             token=app.config['TOKEN'],
                             access_token=access_token,
                             access_token_expires_at=int(token_expires_at),
                             jsapi_ticket=jsapi_ticket,
                             jsapi_ticket_expires_at=int(ticket_expires_at))
    else:
        wechat = WechatBasic(appid=app.config['APP_ID'],
                             appsecret=app.config['APP_SECRET'],
                             token=app.config['TOKEN'])
        access_token = wechat.get_access_token()
        redis.set("wechat:access_token", access_token['access_token'], 7000)
        redis.set("wechat:access_token_expires_at",
                  access_token['access_token_expires_at'], 7000)
        jsapi_ticket = wechat.get_jsapi_ticket()
        redis.set("wechat:jsapi_ticket", jsapi_ticket['jsapi_ticket'], 7000)
        redis.set("wechat:jsapi_ticket_expires_at",
                  jsapi_ticket['jsapi_ticket_expires_at'], 7000)

    return wechat
コード例 #3
0
    def test_get_user_info(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.get_user_info('123412412341234')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.get_user_info('3253634563425234')
            self.assertEqual(resp['subscribe'], 1)
            self.assertEqual(resp['openid'], 'o6_bmjrPTlm6_2sgVt7hMZOPfL2M')
            self.assertEqual(resp['nickname'], 'Band')
            self.assertEqual(resp['sex'], 1)
            self.assertEqual(resp['language'], 'zh_CN')
            self.assertEqual(resp['city'], '广州')
            self.assertEqual(resp['province'], '广东')
            self.assertEqual(resp['country'], '中国')
            self.assertEqual(
                resp['headimgurl'],
                'http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0'
            )
            self.assertEqual(resp['subscribe_time'], 1382694957)
            self.assertEqual(resp['unionid'], 'o6_bmasdasdsad6_2sgVt7hMZOPfL')
            self.assertEqual(resp['remark'], '')
            self.assertEqual(resp['groupid'], 0)
コード例 #4
0
    def test_send_article_message(self):
        article_info = [{
            'title': '第一条新闻标题',
            'description': '第一条新闻描述,这条新闻没有预览图',
            'url': 'http://www.google.com.hk/',
        }, {
            'title': '第二条新闻标题, 这条新闻无描述',
            'picurl':
            'http://doraemonext.oss-cn-hangzhou.aliyuncs.com/test/wechat-test.jpg',
            'url': 'http://www.github.com/',
        }, {
            'title': '第三条新闻标题',
            'description': '第三条新闻描述',
            'picurl':
            'http://doraemonext.oss-cn-hangzhou.aliyuncs.com/test/wechat-test.jpg',
            'url': 'http://www.v2ex.com/',
        }]

        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.send_article_message('12341234234', article_info)

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.send_article_message('safasf', article_info)
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #5
0
    def test_create_qrcode(self):
        data = {
            "action_name": "QR_LIMIT_STR_SCENE",
            "action_info": {
                "scene": {
                    "scene_str": "123"
                }
            }
        }

        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.create_qrcode(data)

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.create_qrcode(data)
            self.assertEqual(
                resp['ticket'],
                'gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw=='
            )
            self.assertEqual(resp['expire_seconds'], 60)
            self.assertEqual(resp['url'],
                             'http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI')
コード例 #6
0
ファイル: wx.py プロジェクト: bluedazzle/ooil
    def __init__(self, app_id=None, app_secret=None):
        self.redis = redis.StrictRedis(host='localhost', port=6379, db=2)
        self.app_id = app_id
        self.app_secret = app_secret
        if not app_id:
            self.wechat_admin = Area.objects.all().order_by('id')[0]
            self.wechat = WechatBasic(appid=self.wechat_admin.wx_app_id,
                                      appsecret=self.wechat_admin.wx_secret,
                                      token='123')
            self.app_id = self.wechat_admin.app_id
            self.app_secret = self.wechat_admin.app_secret
        else:
        self.wechat_admin = None
        self.wechat = WechatBasic(appid=app_id, appsecret=app_secret, token='123')

        self.get_token()

    def get_token(self):
        key = 'access_token_{0}'.format(self.app_id)
        token = self.redis.get(key)
        if not token:
            res = self.wechat.grant_token()
            token = res.get('access_token')
            self.redis.set(key, token, 3500)
        return token

    def get_js_ticket(self):
        key = 'js_ticket_{0}'.format(self.app_id)
        ticket = self.redis.get(key)
        if not ticket or ticket == 'None':
            res = self.wechat.get_jsapi_ticket()
            ticket = res.get('jsapi_ticket')
            self.redis.set(key, ticket, 3500)
        return ticket

    def get_random_str(self):
        return string.join(
            random.sample('ZYXWVUTSRQPONMLKJIHGFEDCBA1234567890zyxwvutsrqponmlkjihgfedcbazyxwvutsrqponmlkjihgfedcba',
                          32)).replace(" ", "")

    def get_js_signature(self, url):
        timestamp = int(time.time())
        nostr = self.get_random_str()
        ticket = self.get_js_ticket()
        signature = self.wechat.generate_jsapi_signature(timestamp, nostr, url, ticket)
        return {'timestamp': timestamp, 'ticket': ticket, 'noncestr': nostr, 'url': url, 'signature': signature}

    def send_message(self, open_id, message):
        token = self.get_token()
        req_url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}'.format(token)
        message = message.decode('utf-8')
        data = {'touser': open_id,
                'msgtype': 'text',
                'text': {'content': str('测试')}}
        result = requests.post(req_url, data=simplejson.dumps(data))
        return json.loads(result.content)
コード例 #7
0
    def test_access_token(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            print(wechat.conf.access_token)

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            access_token = wechat.conf.access_token
            self.assertEqual(access_token, self.fixtures_access_token)
コード例 #8
0
    def test_get_group_by_id(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.get_group_by_id('13441123412341')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.get_group_by_id('12554647777')
            self.assertEqual(resp['groupid'], 102)
コード例 #9
0
    def test_jsapi_ticket(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            print(wechat.conf.jsapi_ticket)

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            jsapi_ticket = wechat.conf.jsapi_ticket
            self.assertEqual(jsapi_ticket, self.fixtures_jsapi_ticket)
コード例 #10
0
    def test_create_group(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.create_group('测试组')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.create_group('测试组')
            self.assertEqual(resp['group']['id'], 107)
            self.assertEqual(resp['group']['name'], 'test')
コード例 #11
0
    def test_update_group(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.update_group(23, 'asfff')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.update_group(11, '113444')
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #12
0
    def test_move_user(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.move_user("123412", 1241234)

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.update_group("21341", 12341234)
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #13
0
    def test_send_text_message(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.send_text_message('asdfasdfdf', 'asdadsfd')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.send_text_message('13412412341234242', '测试')
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #14
0
    def test_send_video_message(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.send_video_message('asfasdfadsf', '123412342134')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.send_video_message('safasf', '123412343423241')
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #15
0
    def test_delete_menu(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.delete_menu()

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.delete_menu()
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #16
0
    def test_get_template_id(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.get_template_id('aafeewr')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.get_template_id('123412431234')
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
            self.assertEqual(resp['template_id'],
                             'Doclyl5uP7Aciu-qZ7mJNPtWkbkYnWBWVja26EGbNyk')
コード例 #17
0
    def test_grant_token(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.grant_token()

        # 测试有 appid 和 appsecret 初始化(覆盖已有 access_token,默认override=True即覆盖)
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.grant_token()
            self.assertEqual(resp['access_token'], self.fixtures_access_token)
            self.assertEqual(resp['expires_in'], 7200)
            self.assertEqual(wechat.conf.access_token,
                             self.fixtures_access_token)
コード例 #18
0
    def test_get_followers(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.get_followers()

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.get_followers()
            self.assertEqual(resp['total'], 2)
            self.assertEqual(resp['count'], 2)
            self.assertEqual(resp['data'],
                             {'openid': ['', 'OPENID1', 'OPENID2']})
            self.assertEqual(resp['next_openid'], 'NEXT_OPENID')
コード例 #19
0
 def init_wechat(self):
     try:
         wechat_conf_cache = self.cache.get(self.WechatConfCachekey)
         if not wechat_conf_cache:
             token = self.get_param_value('mps_token')
             appid = self.get_param_value('mps_appid')
             appsecret = self.get_param_value('mps_apisecret')
             encrypt_mode = self.get_param_value('mps_encrypt_mode',
                                                 'normal')
             encoding_aes_key = self.get_param_value(
                 'mps_encoding_aes_key', '')
             wechat_conf_cache = dict(token=token,
                                      appid=appid,
                                      appsecret=appsecret,
                                      encrypt_mode=encrypt_mode,
                                      encoding_aes_key=encoding_aes_key)
             self.cache.set(self.WechatConfCachekey,
                            wechat_conf_cache,
                            expire=300)
         _c = wechat_conf_cache
         wechat_conf = WechatConf(
             token=_c['token'],
             appid=_c['appid'],
             appsecret=_c['appsecret'],
             encrypt_mode=_c['encrypt_mode'],
             encoding_aes_key=_c['encoding_aes_key'],
             access_token_getfunc=functools.partial(
                 self.mpsapi.get_access_token, _c['appid'],
                 _c['appsecret']),
             access_token_setfunc=self.mpsapi.set_access_token)
         self.wechat = WechatBasic(conf=wechat_conf)
     except Exception as err:
         logger.exception(err)
コード例 #20
0
    def test_send_music_message(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.send_music_message('231412341234', 'http://www.baidu.com',
                                      'http://www.google.com', '12341234')

        # 测试有 appid 和 appsecret 初始化
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.send_music_message('231412341234',
                                             'http://www.baidu.com',
                                             'http://www.google.com',
                                             '12341234')
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
コード例 #21
0
    def test_grant_jsapi_ticket(self):
        # 测试无 appid 和 appsecret 初始化
        wechat = WechatBasic()
        with self.assertRaises(NeedParamError):
            wechat.grant_jsapi_ticket()

        # 测试有 appid 和 appsecret 初始化(覆盖已有 jsapi_ticket,默认override=True即覆盖)
        wechat = WechatBasic(appid=self.appid, appsecret=self.appsecret)
        with HTTMock(wechat_api_mock):
            resp = wechat.grant_jsapi_ticket()
            self.assertEqual(resp['errcode'], 0)
            self.assertEqual(resp['errmsg'], 'ok')
            self.assertEqual(resp['ticket'], self.fixtures_jsapi_ticket)
            self.assertEqual(resp['expires_in'], 7200)
            self.assertEqual(wechat.conf.jsapi_ticket,
                             self.fixtures_jsapi_ticket)
コード例 #22
0
ファイル: views.py プロジェクト: huzhennan/wechat_kata
def index(request):
    signature = request.GET['signature']
    timestamp = request.GET['timestamp']
    nonce = request.GET['nonce']

    conf = WechatConf(token=TOKEN,
                      appid=APP_ID,
                      appsecret=APP_SECRET,
                      encrypt_mode="normal")

    wechat = WechatBasic(conf=conf)

    if request.method == "GET":
        echostr = request.GET['echostr']

        if wechat.check_signature(signature=signature,
                                  timestamp=timestamp,
                                  nonce=nonce):
            print 'Accept'
        else:
            print 'Wrong'

        return HttpResponse(echostr)
    elif request.method == "POST":
        print request.body
        return HttpResponse("%r" % request.POST)
コード例 #23
0
    def test_parse_data_location_message(self):
        message = """<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>"""

        wechat = WechatBasic()
        wechat.parse_data(data=message)
        message = wechat.message

        self.assertIsInstance(message, LocationMessage)
        self.assertEqual(message.id, 1234567890123456)
        self.assertEqual(message.target, 'toUser')
        self.assertEqual(message.source, 'fromUser')
        self.assertEqual(message.time, 1351776360)
        self.assertEqual(message.type, 'location')
        self.assertEqual(message.location, (23.134521, 113.358803))
        self.assertEqual(message.scale, 20)
        self.assertEqual(message.label, '位置信息')
コード例 #24
0
class WxApplication:
    AppID = "wxec1632d9ec8a5d95"
    AppSecret = "8b6bb7f5dad80ce0aa639e6db173b406"
    weConf = WechatConf(token='master_zy', appid=AppID, appsecret=AppSecret, encrypt_mode='safe', encoding_aes_key=None)
    wechat = WechatBasic(conf=weConf)

    def __init__(self):
        pass

    def __call__(self, **kwargs):
        pass

    #登陆授权验证
    def check_signature(self):
        aa = ''
        return aa

    def user_info(self):
        try:
            # user = self.wechat.get_user_info(OPENID)
            token = self.wechat.grant_token()
            print(token)
        except Exception as e:
            print(e)
            resp = str(e)
        return resp
コード例 #25
0
ファイル: set_menu.py プロジェクト: cash2one/tstpthon
def set_menu():
    wechat = WechatBasic(appid=APPID, appsecret=APPSECRET)
    wechat.create_menu({
        'button':[
            {
                'name':u'功能测试',
                'sub_button':[
                    {
                        'type':'view',
                        'name':u'JS-SDK',
                        'url':'http://cms.olive-app.com/weixin/testjs/'
                    }
                ]
            },
            {
                'name':u'菜单2',
                'sub_button':[
                    {
                        'type':'view',
                        'name':u'个人中心',
                        'url':'http://xiande.olive-app.com/member/'
                    },
                    {
                        'type':'view',
                        'name':u'个人资产',
                        'url':'http://xiande.olive-app.com/member/assets/'
                    },
                    {
                        'type':'view',
                        'name':u'我要理财',
                        'url':'http://xiande.olive-app.com/member/join/'
                    },
                    {
                        'type':'view',
                        'name':u'个人小金库',
                        'url':'http://xiande.olive-app.com/member/money/'
                    }
                ]
            },
            {
                'name':u'菜单3',
                'sub_button':[
                    {
                        'type':'click',
                        'name':u'热门活动',
                        'key':'event_hot'
                    },
                    {
                        'type':'click',
                        'name':u'本月活动',
                        'key':'event_month'
                    },
                    {
                        'type':'view',
                        'name':u'我要报名',
                        'url':'http://xiande.olive-app.com/event/join/'
                    }
                ]
            }
        ]})
コード例 #26
0
ファイル: views.py プロジェクト: cash2one/tstpthon
def cash(request):
    c = {}
    c['introducer'] = request.GET.get('u', '')
    openid = request.session.get("openid", '')
    if openid == "":
        return redirect("/oauth/?refer=/event/cash/?u=" + c['introducer'])

    has_cash = False
    user_num = UserProfile.objects.filter(wx_openid=openid).count()
    if user_num > 0:
        _user_profile = UserProfile.objects.filter(wx_openid=openid).first()
        _cash_record_num = CashEventInfo.objects.filter(
            user=_user_profile.user).count()
        if _cash_record_num > 0:
            _cash_record = CashEventInfo.objects.filter(
                user=_user_profile.user).first()

            has_cash = True

    c['has_cash'] = has_cash
    wechat = WechatBasic(token=WEIXIN_TOKEN, appid=APPID, appsecret=APPSECRET)
    ticket = getJsApiTicket(wechat)
    sign = Sign(ticket,
                "http://" + request.get_host() + request.get_full_path())
    c['sign'] = sign.sign()
    c['appid'] = APPID
    c['openid'] = openid

    return render_to_response("event/cash.html",
                              c,
                              context_instance=RequestContext(request))
コード例 #27
0
    def test_response_text(self):
        wechat = WechatBasic()
        wechat.parse_data(data=self.test_message)

        response_xml_1 = wechat.response_text('test message')
        response_xml_2 = wechat.response_text('测试文本')
        response_xml_3 = wechat.response_text(u'测试文本')
        response_xml_4 = wechat.response_text('<h1>你好</h1>')
        response_xml_5 = wechat.response_text('<h1>你好</h1>', escape=True)
        response_1 = xmltodict.parse(response_xml_1)
        response_2 = xmltodict.parse(response_xml_2)
        response_3 = xmltodict.parse(response_xml_3)
        response_4 = xmltodict.parse(response_xml_4)
        response_5 = xmltodict.parse(response_xml_5)

        self.assertEqual(response_1['xml']['ToUserName'], 'fromUser')
        self.assertEqual(response_1['xml']['FromUserName'], 'toUser')
        self.assertEqual(response_1['xml']['MsgType'], 'text')

        self.assertEqual(response_1['xml']['Content'], 'test message')
        self.assertEqual(response_2['xml']['Content'], '测试文本')
        self.assertEqual(response_3['xml']['Content'], '测试文本')
        self.assertEqual(response_4['xml']['Content'], '<h1>你好</h1>')
        self.assertEqual(response_5['xml']['Content'],
                         '&lt;h1&gt;你好&lt;/h1&gt;')
コード例 #28
0
    def test_parse_data_link_message(self):
        message = """<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公众平台官网链接]]></Title>
<Description><![CDATA[公众平台官网链接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>"""

        wechat = WechatBasic()
        wechat.parse_data(data=message)
        message = wechat.message

        self.assertIsInstance(message, LinkMessage)
        self.assertEqual(message.id, 1234567890123456)
        self.assertEqual(message.target, 'toUser')
        self.assertEqual(message.source, 'fromUser')
        self.assertEqual(message.time, 1351776360)
        self.assertEqual(message.type, 'link')
        self.assertEqual(message.title, '公众平台官网链接')
        self.assertEqual(message.description, '公众平台官网链接')
        self.assertEqual(message.url, 'url')
コード例 #29
0
def getbasic():
    access_token = None
    access_token_expires_at = None

    accesstoken = db.session.query(AccessToken).order_by(
        AccessToken.id.desc()).first()

    if accesstoken is not None:
        access_token = accesstoken.accesstoken
        access_token_expires_at = accesstoken.expires

    conf = WechatConf(
        token=os.environ.get('WECHAT_TOKEN'),
        appid=os.getenv('appid') or 'wx2fa77d7048b61431',
        appsecret=os.getenv('appsecret') or 'd9dd89550c7c221d44ccd581a6558fd6',
        encrypt_mode='normal',
        access_token=access_token,
        access_token_expires_at=access_token_expires_at,
    )

    basic = WechatBasic(conf=conf)

    now = time()

    if access_token_expires_at - now < 60:
        token = basic.get_access_token()
        db.session.add(
            AccessToken(accesstoken=token['access_token'],
                        expires=token['access_token_expires_at']))

    return basic
コード例 #30
0
    def test_parse_data_voice_recognition(self):
        message = """<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<Recognition><![CDATA[腾讯微信团队]]></Recognition>
<MsgId>1234567890123456</MsgId>
</xml>"""

        wechat = WechatBasic()
        wechat.parse_data(data=message)
        message = wechat.message

        self.assertIsInstance(message, VoiceMessage)
        self.assertEqual(message.id, 1234567890123456)
        self.assertEqual(message.target, 'toUser')
        self.assertEqual(message.source, 'fromUser')
        self.assertEqual(message.time, 1357290913)
        self.assertEqual(message.type, 'voice')
        self.assertEqual(message.media_id, 'media_id')
        self.assertEqual(message.format, 'Format')
        self.assertEqual(message.recognition, '腾讯微信团队')