IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP生成支付宝签名(用户授权登录) -> 正文阅读

[PHP知识库]PHP生成支付宝签名(用户授权登录)

在对接支付宝授权登录的时候 遇到很多 整理一下
支付宝文档是真坑 文档多乱七八糟
在APP授权登录的时候 要生成一个签名 与 支付宝规定好的字符串 拼接之后返回给前端
但是我在对接的时候 然后去找文档 文档地址
在这里插入图片描述
然后我又根据这个文档 文档地址
在这里插入图片描述
要组成一个这个形式的字符串
然后我按照他说的去生成 然后又找到了 这个文档 文档链接
根据里面参数构造 来来回回整不好 签名一直有问题
然后联系了客服 给到了这个文档 文档链接

上代码吧

		require VENDOR_PATH . 'alipay-sdk-php-all/aop/AopClient.php';
        $target_id = time();
        //$str = 'apiname=com.alipay.account.auth&method=alipay.open.auth.sdk.code.get&app_id=2021002172672046&app_name=mc&biz_type=openservice&target_id=' . $target_id . '&auth_type=AUTHACCOUNT&sign_type=RSA2';
        $str = 'apiname=com.alipay.account.auth&app_id=2021002172672046&app_name=mc&auth_type=AUTHACCOUNT&biz_type=openservice&method=alipay.open.auth.sdk.code.get&pid=2088241235324422&product_id=APP_FAST_LOGIN&scope=kuaijie&sign_type=RSA2&target_id='.$target_id;
        $json = json_encode($str);
        $aop = new \AopClient();
        //私钥
        $privatekey = $this->rsaPrivateKey;
        //签名方式
        $signType = "RSA2";
        //待签名字符串
        //$data = "app_id=2021002172672046&biz_content='.$json.'&charset=UTF-8&format=json&method=alipay.open.auth.sdk.code.get&sign_type=RSA2&timestamp=2019-04-01 14:43:53&version=1.0";
        //sdk内封装的签名方法
        $sign = $aop->alonersaSign($str, $privatekey, $signType, false);
       // dump($sign);
        $sign = $str.'&sign='.urlencode($sign);

获取到 code之后 就要用code获取token

		require VENDOR_PATH . 'alipay-sdk-php-all/aop/AopClient.php';
        require VENDOR_PATH . 'alipay-sdk-php-all/aop/request/AlipayUserInfoShareRequest.php';
        require VENDOR_PATH . 'alipay-sdk-php-all/aop/request/AlipaySystemOauthTokenRequest.php';
        $this->checkLogin();
        $user = $this->userInfo;
		
		//接受前端返回的字符串 最后是一个字符串 code 
		//参考 $code = 'c0e7cc8ff3384f60baf85a2b22a7OB46';
        $code = input('data');
        $json = json_decode(htmlspecialchars_decode($code), true);
        $code = $json['data']['authCode'];


        $aopToken = new \AopClient();
        $aopToken->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        $aopToken->appId = $this->appId;
        $aopToken->rsaPrivateKey = $this->rsaPrivateKey;
        $aopToken->alipayrsaPublicKey = $this->alipayrsaPublicKey;
        $aopToken->apiVersion = '1.0';
        $aopToken->signType = 'RSA2';
        $aopToken->postCharset = 'UTF-8';
        $aopToken->format = 'json';
        $request = new \AlipaySystemOauthTokenRequest();
        $request->setGrantType("authorization_code");
        $request->setCode($code);
        $result = $aopToken->execute($request);
        //赋值Token
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";

        $accessToken = $result->$responseNode->access_token;

		//token 获取成功之后 用token 换取 用户信息 
        if ($result->$responseNode->access_token) {
            $aop = new \AopClient();
            $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';
            $requests = new \AlipayUserInfoShareRequest();
            $results = $aop->execute($requests, $accessToken);
            //halt($results);
            //$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";

            $resultCode = $results->alipay_user_info_share_response->code;

            if (!empty($resultCode) && $resultCode == 10000) {
                //获取成功  存储或更新
                //检测是否存储
             $add_data = array(
             	'avatar'     => $results->alipay_user_info_share_response->avatar,
                'nick_name'  => $results->alipay_user_info_share_response->nick_name,
                'province'   => $results->alipay_user_info_share_response->province,
                'city'       => $results->alipay_user_info_share_response->city,
                'gender'     => $results->alipay_user_info_share_response->gender,
                'user_id' => $results->alipay_user_info_share_response->user_id,
              );
            } else {
                //echo "失败";
                $this->error('获取失败');
            }
        }

最后获取到用户信息存储绑定就行

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:26:21  更:2021-09-08 10:27:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:42:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码