PC网站支付宝扫码登录

news2024/11/23 8:33:05

1.电脑网站支付宝登录,拼接授权链接,在浏览器上访问授权链接即可
登录 - 支付宝欢迎登录支付宝,支付宝-全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验以及转账收款/水电煤缴费/信用卡还款等生活服务应用;为广大为从事电子商务的网站提供支付产品/支付服务的在线订购和技术支持等服务,帮助商家快速接入支付工具,高效、安全、快捷地开展电子商务。icon-default.png?t=N7T8https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init

2.使用 auth_code 换取 access_token 及用户 userId

composer安装 alipaysdk/easysdk依赖包

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/8/4
 * Time: 16:47
 */

namespace app\api\controller;

use Alipay\EasySDK\Kernel\Factory;
use Alipay\EasySDK\Kernel\Config;
use app\common\controller\Api;

class Alipay  extends Api
{
    protected $noNeedLogin = '*';
    protected $noNeedRight = '*';
    protected $app_id;
    protected $private_key;
    protected $ali_public_key; //

    public function _initialize()
    {
        parent::_initialize();

        if (!\think\Config::get('fastadmin.usercenter')) {
            $this->error(__('User center already closed'));
        }
        $this->app_id = '20***************08';
        $this->private_key = '你的私钥';
        $this->ali_public_key = '你的公钥';

    }
    /**
     * auth_token获取用户信息
     * @return array
     * @throws \Exception
     */
    public function getUserInfo()
    {
        $auth_token = $this->request->post('auth_token');
        Factory::setOptions($this->getOptions());
        //设置系统参数(OpenAPI中非biz_content里的参数)
        $textParams = array(
            "code" => "{$auth_token}",
            "grant_type" => "authorization_code"
        );
        //设置业务参数(OpenAPI中biz_content里的参数)
        $bizParams = array();
        $resJson = Factory::util()->generic()->execute("alipay.system.oauth.token", $textParams, $bizParams)->httpBody;
        $resJsonToArray = json_decode($resJson, true);

        if (isset($resJsonToArray['alipay_system_oauth_token_response'])) {
            $this->success('授权成功',$resJsonToArray['alipay_system_oauth_token_response']);
        } else {
            $this->error('授权失败',$resJsonToArray);
        }
    }


    /**
     * 【新版】配置
     * @return Config
     */
    private function getOptions()
    {
        $options = new Config();
        $options->protocol = 'https';
        $options->gatewayHost = 'openapi.alipay.com';
        $options->signType = 'RSA2';
        $options->appId = $this->app_id;

        // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
        $options->merchantPrivateKey = $this->private_key;
        //$options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->';
        //$options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt" -->';
        //$options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->';
        //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
        // $options->alipayPublicKey = '<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->';
        $options->alipayPublicKey = $this->ali_public_key;

        //可设置异步通知接收服务地址(可选)
        // $options->notifyUrl = "";
        //可设置AES密钥,调用AES加解密相关接口时需要(可选)
        // $options->encryptKey = "";

        return $options;
    }

    /**
     * 返回给前端获取code
     * 【新旧都可用】
     * InfoStr APP登录需要的的infostr
     * @return String
     */
    public function infoStr()
    {
        $infoStr = http_build_query([
            'apiname' => 'com.alipay.account.auth',
            'method' => 'alipay.open.auth.sdk.code.get',
            'app_id' => $this->app_id,
            'app_name' => 'mc',
            'biz_type' => 'openservice',
            'pid' => $this->pid,
            'product_id' => 'APP_FAST_LOGIN',
            'scope' => 'kuaijie',
            'target_id' => time(), //商户标识该次用户授权请求的ID,该值在商户端应保持唯一
            'auth_type' => 'AUTHACCOUNT', // AUTHACCOUNT代表授权;LOGIN代表登录
            'sign_type' => 'RSA2',
        ]);
        $infoStr .= '&sign=' . $this->enRSA2($infoStr);
        return $infoStr;
    }

    /**
     * 【生成签名sign】
     * enRSA2 RSA加密
     * @param String $data
     * @return String
     */
    private function enRSA2($data)
    {
        $str = chunk_split(trim($this->private_key), 64, "\n");
        $key = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";
        // print_r($key);die;
        // $key = file_get_contents(storage_path('rsa_private_key.pem')); 为文件时这样引入
        $signature = '';
        //$signature = openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256)?base64_encode($signature):NULL;
        $signature = openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256) ? base64_encode($signature) : NULL;
        return $signature;
    }

     /**
     * myHttpBuildQuery 返回一个 http Get 传参数组
     * 之所以不用 自带函数 http_build_query 时间带 ‘:’ 会被转换
     *
     * @param Array
     * @return String
     */
    private function myHttpBuildQuery($dataArr)
    {
        ksort($dataArr);
        $signStr = '';
        foreach ($dataArr as $key => $val) {
            if (empty($signStr)) {
                $signStr = $key . '=' . $val;
            } else {
                $signStr .= '&' . $key . '=' . $val;
            }
        }
        return $signStr;
    }
}

前端将auth_code 提交到getUserInfo方法获取唯一表示userid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1100913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

winform 修改句柄数量

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 1、GDIProcessHandleQuota 此项设置GDI句柄数量&#xff0c;默认值为2710(16进制)/10000(10进制)&#xff0c;该值的允许范围为 256 ~ 16384 &#xff0c;将其调整为大于默认的10000的值。如果…

2023年中国乳胶制品产量、需求量及市场规模分析[图]

乳胶泛指聚合物微粒分散于水中形成的胶体乳液&#xff0c;又称胶乳。习惯上将橡胶微粒的水分散体称为胶乳&#xff0c;而将树脂微粒的水分散体称为乳液。以乳胶为原料制成的制品称乳胶制品&#xff0c;常见的如海绵、手套、玩具、胶管等。 我国乳胶制品细分主要分为避孕套、乳胶…

使用magic-api构建迅速开发平台的成功案例分享

通过一个简单的demo让您了解magic-api的强大功能。在开始之前&#xff0c;请确保您已经满足以下条件&#xff1a; 拥有Java开发环境及相关IDE。 拥有Mysql环境。 对Spring Boot有一定的了解。 对Maven有基本的了解。 只需要几个简单的步骤&#xff0c;您就可以开始使用mag…

易点易动引入RFID标签自动精准盘点,让固定资产盘点更高效

随着企业规模的扩大和固定资产数量的增加&#xff0c;固定资产的盘点工作变得越来越繁琐&#xff0c;传统的手工盘点方式不仅效率低下&#xff0c;还容易出现错误。为了解决这一问题&#xff0c;我们推出了易点易动固定资产管理系统&#xff0c;该系统引入了RFID&#xff08;射…

如何打造智慧公厕管理系统,提升公共厕所智能化服务质量?

在城市的角角落落&#xff0c;公共厕所是人们生活中不可或缺的基础设施之一。然而&#xff0c;过去公共厕所由于采用粗放式的管理&#xff0c;只关注清洁卫生&#xff0c;而在管理上会存在着一系列问题&#xff0c;如卫生状况不佳、维护不到位、管理不科学等。为了改善这一现状…

github: kex_exchange_identification: Connection closed by remote host

问题描述 (base) ➜ test git:(dev) git pull kex_exchange_identification: Connection closed by remote host Connection closed by 192.30.255.113 port 22 致命错误&#xff1a;无法读取远程仓库。解决方案 参照下边文档 https://docs.github.com/en/authentication/tr…

面试58同城!面试官问我redis 雪崩、穿透、击穿怎么处理?

一、Redis 缓存雪崩 1.1 缓存雪崩的概念 缓存雪崩指的是在某个时间点&#xff0c;缓存中的大量数据同时失效&#xff0c;导致大量请求直接落到数据库上&#xff0c;造成数据库压力过大&#xff0c;甚至引发系统崩溃。 1.2 缓存雪崩发生的原因 缓存雪崩通常是由以下原因引起…

在微信公众号怎么做扫码抽奖活动

微信扫码抽奖是一种流行的互动营销方式&#xff0c;它通过扫描二维码或使用微信内置的扫描功能来参与抽奖活动。这种活动方式不仅简单易用&#xff0c;而且可以吸引大量用户参与&#xff0c;提高品牌知名度。本文将介绍微信扫码抽奖的步骤、优势、案例以及如何策划一次成功的微…

百度发布全新 AI 互动式搜索:百度简单搜索

本心、输入输出、结果 文章目录 百度发布全新 AI 互动式搜索&#xff1a;百度简单搜索前言主要能力 相关资料能力介绍 百度搜索升级发文告用户如何获取百度简单搜索百度简单搜索的定位百度简单搜索在 APP 上面的体验讨论和点评我们关注的几个问题 弘扬爱国精神 百度发布全新 AI…

JDBC-day05(DAO及相关实现类)

七&#xff1a;DAO及相关实现类 1. DAO介绍 DAO&#xff1a;Data Access Object访问数据信息的类和接口&#xff0c;包括了对数据的CRUD&#xff08;Create、Retrival、Update、Delete&#xff09;&#xff0c;而不包含任何业务相关的信息。有时也称作&#xff1a;BaseDAO作用…

【Java实战】Mysql读写分离主从复制搭建保姆级教程

MySQL 的数据同步通常采用主从复制&#xff08;Master-Slave&#xff09;的方式。 主从复制基于二进制日志&#xff08;binlog&#xff09;。主服务器&#xff08;Master&#xff09;在 binlog 中记录数据更改&#xff0c;从服务器&#xff08;Slave&#xff09;将这些日志读取…

坚持每日分享5款好用的小软件

今天推荐5款十分小众的软件&#xff0c;知道的人不多&#xff0c;但是每个都是非常非常好用的&#xff0c;有兴趣的小伙伴可以自行搜索下载。 1.素材管理——Billfish ​ Billfish是一款免费的素材管理软件&#xff0c;可以帮助设计师、摄影师、视频制作人等管理本地的图片、…

CSS3 就可以写出一个苹果官方渐变颜色文字效果,真的太逼真了!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

使用Cpolar和Tipas在Ubuntu上搭建私人问答网站,构建专业问答系统

文章目录 前言2.Tipask网站搭建2.1 Tipask网站下载和安装2.2 Tipask网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3 Cpolar稳定隧道&#xff08;本地设置&#xff09; 4. 公网访问测试5. 结语 前…

01、RocketMQ--安装windows版本

目录 安装windows版本&#xff1a;启动&#xff1a;启动mq&#xff1a;启动broker&#xff1a;启动管控台&#xff1a; 启动jar包启动linux的RocketMQ服务 安装windows版本&#xff1a; 1、使用rocketmq解压到指定的目录 2、需要配置环境变量 ROCKETMQ_HOME 3、修改broker的…

用户行为数据案例

一、环境要求 HadoopHiveSparkHBase 开发环境。 二、数据描述 本数据集包含了2017-09-11至2017-12-03之间有行为的约5458位随机用户的所有行为&#xff08;行为包括点击、购买、加购、喜欢&#xff09;。数据集的每一行表示一条用户行为&#xff0c;由用户ID、商品ID、商品类…

[MQ]Win平台RocketMQ安装启动

1、下载 官网下载地址&#xff1a;https://rocketmq.apache.org/zh/download 2、解压ZIP包 解压rocketmq-all-x.x.x-bin-release.zip到目录。 比如我解压到了E:\Env\MQ_rocket\rocketmq-all-5.1.4-bin-release 3、配置环境变量 ROCKETMQ_HOME 4、RocketMQ JVM内存配置 这个需要…

k8s 暴露pod

kubenretes中暴露Pod及Service的6种方式 &#xff0c;分别为port_forward、hostNetwork、hostPort、nodePort、loadBalancer、Ingress。 下面讲下nodeport nodePort Kubernetes中的service默认情况下都是使用的ClusterIP这种类型&#xff0c;这样的service会产生一个Cluster…

2023年全球及中国小分子化药CDMO市场发展概况分析:CDMO市场有望进一步扩大[图]

小分子药物指具有单一明确有效成分、分子量在1000道尔顿以下的有机化合物分子。广义上来说&#xff0c;小分子化药通常是化学合成的。小分子成分可制成易于被机体吸收的片剂或胶囊&#xff0c;活性物质相对较易溶解&#xff0c;被机体吸收经肠壁进入血液。此外&#xff0c;与生…

用对配音软件,轻松制作专业配音~

听说很多做短视频的小伙伴都在找简单好用的配音软件&#xff01;摆在应用商店里的配音软件成百上千&#xff0c;但却屡试不爽&#xff0c;有的配音员选择少&#xff0c;有的配音效果不自然&#xff0c;不知道大家是否也会有这样的烦恼&#xff1f;今天在这里为大家推荐一个简单…