莫让这世间的庸俗扰了清修,尽管三观已被腐蚀,但未来总是光明的。
2018/01/08/ - - 0 条评论 - 浏览量 : 30

先了解获取到的支付宝相关信息:

// Array(
//     [alipay_user_info_share_response] => Array(
//             [code] => 10000
//             [msg] => Success
//             [avatar] => https://tfs.alipayobjects.com/images/partner/T19XXXX
//             [city] => 临沂市
//             [gender] => m
//             [is_certified] => T
//             [is_student_certified] => F
//             [nick_name] => 小皇
//             [province] => 山东省
//             [user_id] => 20772
//             [user_status] => T
//             [user_type] => 2
//         )
//     [sign] => eNu2uMpkfv7n68w6XzPHOQ==
// )


直接上代码

首先require sdk包,

拼接请求授权的URL,

注意:$aop->execute携带参数执行请求,有的是需要携带access_token参数的


        header("Content-type: text/html; charset=utf-8");
	require_once(SELF.'../../plugins/alipay-sdk-PHP-20171201160100/AopSdk.php');//引入sdk
        $return_url = urlencode("http://".$_SERVER['HTTP_HOST']."/oauth/alipay/index");
        $auth_code = $this->input->get('auth_code');//存放auth_code
        if(empty($auth_code)){
            //state参数用于防止CSRF攻击,成功授权后回调时会原样带回
            $alipay_state = md5(uniqid(rand(), TRUE));
            //拼接请求授权的URL
            $url = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=2017123001381011&scope=auth_user&redirect_uri=".$return_url."&state=".$alipay_state;
            echo("<script> top.location.href='" . $url . "'</script>");
        }
		$aop = new \AopClient();
        $aop->appId = '2011381011';
        $aop->rsaPrivateKey = 'MIIEowIBNe4w9F5UQHqGCkVa';//我简写了,应用的私钥
        $aop->alipayrsaPublicKey='MIIBIjAJelFwIDAQAB';//我简写了,支付宝的公钥
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        $aop->apiVersion = '1.0';
        $aop->postCharset='utf-8';
        $aop->format='json';
        $aop->signType = 'RSA2';
        //第二步使用auth_code换取接口access_token及用户userId
        $request = new \AlipaySystemOauthTokenRequest();
        //请求的必传信息
        $request->setGrantType("authorization_code");
        $request->setCode($auth_code);
        $result = $aop->execute($request);
        $result = $this->commonlib->object_array($result);//转换object格式到数组,我自己的函数
        $token = $result['alipay_system_oauth_token_response']['access_token'];
        
        $UserInfo = new \AlipayUserInfoShareRequest();
        $UserInfo = $aop->execute($UserInfo,$token);
        $UserInfo = $this->commonlib->object_array($UserInfo);//转换object格式到数组,我自己的函数

上面的这个$UserInfo, 就可以得到开头的那个数组数据了。