function capture_user_authenticate($from_sso = false, $origin = false)
{
    global $vbulletin;
    $redirect_uri = $from_sso && $origin ? $vbulletin->options['bburl'] . "/?from_sso=true&origin=" . urlencode($origin) : $vbulletin->options['bburl'] . "/";
    $auth_code = $_GET["code"];
    new_access_token($auth_code, $redirect_uri);
    $profile = load_user_entity();
    if (isset($profile)) {
        if ($vbulletin->userinfo = $vbulletin->db->query_first("\n            SELECT userid, usergroupid, membergroupids, username\n                FROM " . TABLE_PREFIX . "user\n                WHERE userid IN (\n                    SELECT userid FROM " . TABLE_PREFIX . "userfield WHERE {$vbulletin->options['janrain_capture_uuid']} = '{$profile['result']['uuid']}'\n                )\n            ")) {
            capture_user_sync($profile);
            capture_user_login();
        } elseif ($vbulletin->userinfo = $vbulletin->db->query_first("\n            SELECT userid, usergroupid, membergroupids, username\n                FROM " . TABLE_PREFIX . "user\n                WHERE email = '{$profile['result']['email']}'\n            ")) {
            capture_user_sync($profile, true);
            capture_user_login();
        } else {
            capture_create_user($profile);
        }
    } else {
        die("Could not load user profile. Please try again");
    }
}
} elseif ($orders['pay_status'] == 2) {
    $pay_status = '支付状态:已付款';
}
$http_ret1 = stristr($cfg_order['image'], 'http://');
$http_ret2 = stristr($cfg_order['image'], 'http:\\');
if ($http_ret1 or $http_ret2) {
    $w_picurl = $cfg_order['image'];
} else {
    $w_picurl = $cfg_baseurl . $cfg_order['image'];
}
$post_msg = '{
   "touser":"******",
   "msgtype":"news",
   "news":{
       "articles": [
        {
            "title":"' . $w_title . '",
            "description":"' . $w_description . '",
            "url":"' . $w_url . '",
            "picurl":"' . $w_picurl . '"
        }
        ]
   }
}';
$ret_json = curl_grab_page($url, $post_msg);
$ret = json_decode($ret_json);
if ($ret->errmsg != 'ok') {
    $access_token = new_access_token($db);
    $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' . $access_token;
    curl_grab_page($url, $post_msg);
}
function create_menu($db)
{
    access_token($db);
    $ret = $db->getRow("SELECT `access_token` FROM `wxch_config`");
    $access_token = $ret['access_token'];
    if (strlen($access_token) >= 64) {
        $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . $access_token;
        $data = array();
        $sql = "SELECT * FROM  `wxch_menu` WHERE  `aid` =0";
        $data['first'] = $db->getAll($sql);
        foreach ($data['first'] as $k => $v) {
            if (empty($data['first'][$k]['name'])) {
                unset($data['first'][$k]);
            } else {
                $data['first'][$k]['name'] = urlencode($v['name']);
                if ($v['menu_type'] == 'click') {
                    $data['first'][$k]['array'] = array('type' => $v['menu_type'], 'name' => $data['first'][$k]['name'], 'key' => $v['value']);
                } elseif ($v['menu_type'] == 'view') {
                    $data['first'][$k]['array'] = array('type' => $v['menu_type'], 'name' => $data['first'][$k]['name'], 'url' => $v['value']);
                }
            }
        }
        $sql = "SELECT * FROM  `wxch_menu` WHERE  `aid` =1";
        $data['second1'] = $db->getAll($sql);
        $second1 = 'no';
        foreach ($data['second1'] as $k => $v) {
            if (empty($data['second1'][$k]['name'])) {
                unset($data['second1'][$k]);
            } else {
                $v['value'] = urlencode($v['value']);
                $v['name'] = urlencode($v['name']);
                if ($v['menu_type'] == 'click') {
                    $array1[] = array('type' => $v['menu_type'], 'name' => $v['name'], 'key' => $v['value']);
                } elseif ($v['menu_type'] == 'view') {
                    $array1[] = array('type' => $v['menu_type'], 'name' => $v['name'], 'url' => $v['value']);
                }
                $second1 = 'yes';
            }
        }
        $sql = "SELECT * FROM  `wxch_menu` WHERE  `aid` =2";
        $data['second2'] = $db->getAll($sql);
        $second2 = 'no';
        foreach ($data['second2'] as $k => $v) {
            if (empty($data['second2'][$k]['name'])) {
                unset($data['second2'][$k]);
            } else {
                $v['value'] = urlencode($v['value']);
                $v['name'] = urlencode($v['name']);
                if ($v['menu_type'] == 'click') {
                    $array2[] = array('type' => $v['menu_type'], 'name' => $v['name'], 'key' => $v['value']);
                } elseif ($v['menu_type'] == 'view') {
                    $array2[] = array('type' => $v['menu_type'], 'name' => $v['name'], 'url' => $v['value']);
                }
                $second2 = 'yes';
            }
        }
        $sql = "SELECT * FROM  `wxch_menu` WHERE  `aid` =3";
        $data['second3'] = $db->getAll($sql);
        $second3 = 'no';
        foreach ($data['second3'] as $k => $v) {
            if (empty($data['second3'][$k]['name'])) {
                unset($data['second3'][$k]);
            } else {
                $v['value'] = urlencode($v['value']);
                $v['name'] = urlencode($v['name']);
                if ($v['menu_type'] == 'click') {
                    $array3[] = array('type' => $v['menu_type'], 'name' => $v['name'], 'key' => $v['value']);
                } elseif ($v['menu_type'] == 'view') {
                    $array3[] = array('type' => $v['menu_type'], 'name' => $v['name'], 'url' => $v['value']);
                }
                $second3 = 'yes';
            }
        }
        if ($second1 == 'yes') {
            $sarr1 = array('name' => $data['first'][0]['name'], 'sub_button' => $array1);
        } elseif ($second1 == 'no') {
            $sarr1 = $data['first'][0]['array'];
        }
        if ($second2 == 'yes') {
            $sarr2 = array('name' => $data['first'][1]['name'], 'sub_button' => $array2);
        } elseif ($second2 == 'no') {
            $sarr2 = $data['first'][1]['array'];
        }
        if ($second3 == 'yes') {
            $sarr3 = array('name' => $data['first'][2]['name'], 'sub_button' => $array3);
        } elseif ($second3 == 'no') {
            $sarr3 = $data['first'][2]['array'];
        }
        $arr = array('button' => array($sarr1, $sarr2, $sarr3));
        $menu = urldecode(json_encode($arr));
        $ret_json = curl_grab_page($url, $menu);
        $ret = json_decode($ret_json);
        if (!$ret->errcode == '0') {
            $access_token = new_access_token($db);
            $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . $access_token;
            $ret_json = curl_grab_page($url, $menu);
            $ret = json_decode($ret_json);
        }
        return $ret;
    } else {
        $access_token = new_access_token($db);
        return FALSE;
    }
}