文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php获取支付宝用户信息

2023-08-31 17:23

关注

一:创建应用

要在您的应用中使用支付宝开放产品的接口能力:

  1.  您需要先去蚂蚁金服开放平台(open.alipay.com),在开发者中心创建登记您的应用,此时您将获得应用唯一标识(APPID);
  2. 请在【功能信息】中点击【添加功能】,选择【获取会员信息】;
  3. 提交审核,等待审核通过,该应用正式可以使用。

需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。

二:配置密钥

开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考《配置应用环境》。

三:搭建和配置开发环境

1. 下载服务端SDK

为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。

各语言版本服务端SDK详细使用说明,请参考《服务端SDK说明》,本文需要下载的就是PHP的SDK包了。

2. 接口调用配置

先看前端代码:

1 先从后台获取二维码,并且展示出来

function show(){    var parmss = {        phone:userName    };    $.ajax({        url: model.base_url + "/Alipay/getQRcode",        data: parms,        type: "post",        dataType: "text",        success: function(res, status, xhr) {            if(res != '' || res != null){                //将二维码显示出来                var url = res.body.url;                popupUrl.find(".pm-left").find("img").attr("src",url);            }        },        error: function(data) {        }    });    $("#popup-bind").show();    int = setInterval(model.bindQuery,"1000");//通过定时器,判断是否绑定过第三方支付}

2 定时器,判断是否绑定成功

//根据请求后台看是否数据已经绑定function bindQuery(){    var parmss = {            phone:userName        };    $.ajax({        url: model.base_url+"Authorland/getBindsucess",        data: parmss,        type: "post",        dataType: "text",        success: function(res, status, xhr) {            if(res != '' || res != null){    if(bind_num == 0){                    var zfb_id = res.body.zfb_id;                    bind_num = 1;                }else{                    var wx_ids = res.body.wx_id;                }           如果支付宝已经绑定,就把已经绑定的图片换上去,并且把二维码关闭掉                if(zfb_id != undefined || zfb_ids != undefined){                    $("#bind-zfb").unbind();                    $("#bind-zfb").addClass("on");                    $("#bind-zfb").find("p").text("已绑定支付宝");                    $("#bind-zfb").find("img").attr("src","/public/Content/Images/wallet/zfb_on.png");                }                if(wx_id != wx_ids || zfb_id != zfb_ids){                    clearInterval(int);//清除定时器                }            }                    }    });}

3 php 后台处理代码

直接看php代码

appid='2018111362173186';        $this->alipayrsaPublicKey='您的公钥';        $this->rsaPrivateKey='您的私钥';        //该回调地址必须和支付宝开发者平台对应的应用设置的回调地址一致        $this->grantRedirect='https://www.baidu.com/Alipay/getAlipayUseInfo';                $this->aop = new AopClient();        $aop=$this->aop;        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';        $aop->appId = $this->appid;        $aop->rsaPrivateKey = $this->rsaPrivateKey;        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;        $aop->apiVersion = '1.0';        $aop->signType = 'RSA2';        $aop->postCharset='UTF-8';        $aop->format='json';        parent::__construct();    }        public function alipayCreateQRcode(){        $phone = input("param.phone");//接收电话号码        $codeObj  = new  \qrcode\QRcode();        $url='https://www.baidu.com/Alipay/goQRcodefunc?mobile='.$phone;//url拼接电话号码参数,准备只做二维码        $dir = './public/qrcode/';        $size = 10;        if(!is_dir($dir)){            @mkdir($dir,0777);        }        $createDirImg = $dir.$moblie.'_alipay.jpg';//生成的二维码图片的地址        $codeObj::png($url,$createDirImg,'L',$size,2);//生成二维码        $msg['code'] = 10000;        $msg['url'] = 'https://www.baidu.com'.substr($createDirImg,1,strlen($createDirImg));;        $msg['mobile'] = $moblie;        echo json_encode($msg);//返回二维码地址    }        public  function  goQRcodefunc(){        $mobile=input("param.mobile");//接收二维码传过来的电话        $this->grantRedirect=urlencode($this->grantRedirect."?mobile=$mobile");//拼接授权回调的地址,吧mobile传过去        $url ="https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id={$this->appid}&scope=auth_user&redirect_uri={$this->grantRedirect}";        header("Location:".$url);//跳转到下面的url拉起授权页面    }        public function  getAccess_token($code){        $request = new AlipaySystemOauthTokenRequest();        $request->setGrantType("authorization_code");        $request->setCode($code);//这里传入 code        $result = $this->aop->execute($request);        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";        if(isset($result->$responseNode->access_token)&& !empty($result->$responseNode->access_token)){            return $result->$responseNode->access_token;        }else{            $files = 'ali/'.date("Ymd").".txt";            $log = 'time:'.date('Y-m-d H:i:s').'---errsssssss code:'.$code.'---response:'.json_encode($result)."\n\n";            filePutContents($files,$log);        }    }        public function  getAlipayUserdata($code){        $access_token=$this->getAccess_token($code);        $request_a = new AlipayUserInfoShareRequest();        $result_a = $this->aop->execute ($request_a,$access_token); //这里传入获取的access_token                $user_id = $result_a->alipay_user_info_share_response->user_id;   //用户唯一id        $city = $result_a->alipay_user_info_share_response->city;    //用户城市        $province = $result_a->alipay_user_info_share_response->province;    //用户省份        $avatar = $result_a->alipay_user_info_share_response->avatar;    //用户头像        $is_student_certified = $result_a->alipay_user_info_share_response->is_student_certified;        $gender = $result_a->alipay_user_info_share_response->gender;    //用户性别        $user_type = $result_a->alipay_user_info_share_response->user_type;            $user_status = $result_a->alipay_user_info_share_response->user_status;            $is_certified = $result_a->alipay_user_info_share_response->is_certified;            return array(            'user_id'=>$user_id,            'gender'=>$gender,            'city'=>$city,            'avatar'=>$avatar,            'nickname'=>'',            'province'=>$province,            'is_student_certified'=>$is_student_certified,            'user_type'=>$user_type,            'user_status'=>$user_status,            'is_certified'=>$is_certified        );    }        public function getAlipayUseInfo(){        $input = input('param.');//获取传过来的参数        $code = $input['auth_code'];        $param=$this->getAlipayUserdata($code);  //第三方信息if(isset($param['user_id'])){            //此处是将数据存储到数据库的逻辑       //删除二维码图片           $createDelImg = './public/qrcode/'.$moblie.'_alipay.jpg';           @unlink($createDelImg);            echo '

绑定支付宝成功

'; }else{ $msg['code'] = 405; $msg['msg'] = '服务器繁忙,请稍后再绑定'; exit(json_encode($msg)); } }}?>

来源地址:https://blog.csdn.net/weixin_46742102/article/details/130650138

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯