def weixin_sendText(userid, text):
    weixin = Weixin()
    ret=weixin.sendText(userid, text)
    return json.dumps(ret)
def weixin_listDepartment():
    weixin = Weixin()
    ret = weixin.listDepartment()
    if ret['errcode'] != 0:
        abort(503)
    return json.dumps(ret)
def weixin_listDepartment():
    weixin = Weixin()
    ret = weixin.listDepartment()
    if ret['errcode'] != 0:
        abort(503)
    return json.dumps(ret)
def weixin_sendText(userid, text):
    weixin = Weixin()
    ret = weixin.sendText(userid, text)
    return json.dumps(ret)
示例#5
0
def weixin_callback():
    msg_signature = request.args.get('msg_signature', '')
    timestamp = request.args.get('timestamp', '')
    nonce = request.args.get('nonce', '')
    app.logger.debug("%s,%s,%s" % (msg_signature, timestamp, nonce))

    cb = Callback()

    # 在回调模式下,只有验证时的请求是GET,这时候只要返回echostr即可
    # 见 http://qydev.weixin.qq.com/wiki/index.php?title=%E5%9B%9E%E8%B0%83%E6%A8%A1%E5%BC%8F
    if request.method == 'GET':
        echostr = request.args.get('echostr', '')
        app.logger.debug(echostr)
        ohcestr = cb.validate(msg_signature, timestamp, nonce, echostr)
        return render_template('weixin/echo.html', ohcestr=ohcestr), 200
    else:
        # POST请求,是微信回调(微信把用户的输入以及一些特定事件通过此方式通知企业),微信发来的消息是xml格式的,并且经过加密,需要用专用的解密算法解密
        # 见 http://qydev.weixin.qq.com/wiki/index.php?title=%E5%9B%9E%E8%B0%83%E6%A8%A1%E5%BC%8F
        body = request.get_data()
        # print(body)
        current_app.logger.debug("weixin_callback body:{}".format(body))
        msg = cb.decode(msg_signature, timestamp, nonce, body.decode("utf-8"))

        current_app.logger.debug("weixin_callback msg:{}".format(msg))

        # 从消息中可以获取相关信息,我们包装了一小部分常用的,业务可以根据自己需要再继续封装
        msg_from = cb.getFromUser(msg)
        msg_type = cb.getMsgType(msg)
        if msg_type == 'text':
            text = cb.getText(msg)
            return make_response(cb.mkTextMsg(msg_from, text), 200)
        elif msg_type == 'event':

            event = cb.getEvent(msg)

            print(event)
            if event == 'scancode_waitmsg':
                scanResult = cb.getScanResult(msg)

                print(scanResult)

                weixin = Weixin()
                ret = weixin.sendText(msg_from, "扫描内容:{}".format(scanResult))

                return make_response(cb.mkQCdode(msg_from, scanResult), 200)

            if event == 'LOCATION':
                return make_response(cb.mkTextMsg(msg_from), 200)
            if event == 'enter_agent':
                news = [{
                    'title': 'API测试',
                    'description': '',
                    'picurl':
                    'http://upload.univs.cn/2012/1120/thumb_940__1353374661982.jpg',
                    'url': ''
                }, {
                    'title': '获取用户列表',
                    'description': '',
                    'picurl':
                    'http://v1.qzone.cc/pic/201507/12/16/16/55a22256bc474195.jpg%21600x600.jpg',
                    'url': url_for('weixin_listUser')
                }, {
                    'title': '获取部门列表',
                    'description': '',
                    'picurl':
                    'http://v1.qzone.cc/pic/201507/12/16/16/55a22256bc474195.jpg%21600x600.jpg',
                    'url': url_for('weixin_listDepartment')
                }]
                return make_response(cb.mkNewsMsg(msg_from, news), 200)