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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Asp .NetCore 支付宝网页授权登录 -> 正文阅读

[大数据]Asp .NetCore 支付宝网页授权登录

人这一生不必太较真,苦了自己怨了别人,爱情无需刻意去把握,越是想抓牢自己的爱情,反而容易失去自我。🧋

文档

环境

  • .Net Core 6.0

工具

  • Visual Studio 2022
  • 支付宝开放平台开发助手

流程

以观看的角度我喜欢把代码放在前面界面的操作放在后边

新建项目

我这里是这样新建的,当然也可以使用Visual Studio中的可视化新建。

dotnet new webapi --name AlipayWebsiteAuthorizedLogin
打开程序包管理器控制台 Ctrl + `

执行安装命令依赖包

Install-Package AlipaySDKNet.Standard
新增登录接口

在Controllers文件夹下新建UserController.cs

using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace AlipayWebsiteAuthorizedLogin.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UserController : ControllerBase
    {

        const string app_id = "应用id";
        const string merchant_private_key = "应用私钥";
        const string alipay_public_key = "公钥";

        [HttpPost(nameof(Login))]
        public ActionResult<LoginResult> Login([FromBody] LoginParameters parameters)
        {
            IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", app_id, merchant_private_key, "json", "1.0", "RSA2", alipay_public_key, "UTF-8", false);
            // 获取AccessToken
            AlipaySystemOauthTokenRequest oauthTokenRequest = new AlipaySystemOauthTokenRequest();
            oauthTokenRequest.GrantType = "authorization_code";
            oauthTokenRequest.Code = parameters.Code;
            AlipaySystemOauthTokenResponse oauthTokenResponse = client.Execute(oauthTokenRequest);
            if (oauthTokenResponse.IsError)
            {
                Console.WriteLine("获取AccessToken失败!", oauthTokenResponse.Msg);
                // 我这里就不处理一些异常啦
                throw new Exception(oauthTokenResponse.Msg);
            } 
            return new LoginResult
            {
                AccessToken = oauthTokenResponse.AccessToken,
                UserId = oauthTokenResponse.UserId
            };
        }
    }

    public class LoginParameters
    {
        public string Code { get; set; }
    }

    public class LoginResult
    {
        public string UserId { get; set; }
        public string AccessToken { get; set; }
    }
}
使用UseStaticFiles配置静态目录

在Program.cs增加app.UseStaticFiles();

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();

var app = builder.Build();

app.UseStaticFiles();

app.UseAuthorization();

app.MapControllers();

app.Run();
新建页面

新增wwwroot文件夹并在下面新建index.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>支付宝授权登录</title>
</head>

<body>
    <p>授权登陆中...</p>
    <script type="module">
        let pDom = document.getElementsByTagName('p')[0];

        let url = location.href;
        let auth_code = url.match(/.*auth_code=(.*?)&/)?.[1];
        let app_id = url.match(/.*app_id=(.*?)&/)?.[1];
        if (!auth_code) location.href = `https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=[应用id]&scope=auth_user&redirect_uri=http%3A%2F%2Fa.frp.linyisonger.cn%2Findex.html&state=init`
        let r = new XMLHttpRequest();
        r.open("post", `${location.origin}/api/user/login`);
        r.setRequestHeader("Content-Type", "application/json")
        r.onloadend = () => {
            // 重新进入页面
            if (r.status == 500) location.href = '/index.html'
            else if(r.status == 200) pDom.textContent = `登录成功! \n ${r.responseText}`
        }
        r.send(JSON.stringify({
            code: auth_code
        })) 
    </script>

</body>

</html>
新建应用

进入支付宝开放平台进入控制台

image

创建好之后给应用增加能力

image

选择对应的能力?确定

image

根据引导需要关联商家,点击进入商家中心

image

进入APPID绑定页面,进行绑定。

image

注: appid在这里~

同样也要复制给页面和接口应用id字段

image

生效之后设置密钥

image

需要下载支付宝开放平台开发助手

image

复制应用私钥给接口配置merchant_private_key字段赋值

复制应用公钥填写到应用配置中去如下图

image

保存设置后

会产生一个支付宝公钥

复制给接口配置alipay_public_key字段赋值

image

设置授权回调地址

image

我这里是有反向代理的

通过frp将本地的服务代理到http://a.frp.linyisonger.cn上面

可以参考文章配置自己的反向代理服务

https://blog.csdn.net/linyisonger/article/details/123567529

image

image

哦豁~

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:28:20  更:2022-04-01 23:29:56 
 
开发: 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 5:40:20-

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