轻松实现支付宝服务窗网页授权从配置到获取授权获取用户信息

前言:

  最近在开发一个商业街区的聚合扫码支付功能,其中需要用到的有支付宝,微信两种支付方式,当然对于开发微信支付而已作为自己的老本行已经比较熟悉了,然而对于我来说支付宝支付还是头一次涉及到。这次项目中需要用到的是支付宝公众号支付这一功能,因为需要进行支付宝授权获取到用户的User_ID然后在进行支付宝公众号支付,在这里我就顺带把用户信息也获取了。因为第一次玩,大概配置支付宝开发平台的应用信息到获取到用户User_ID遇到了几个坑,今天记录一下希望能够帮助一下没有做个这样方面的同仁哪些的方有坑,并且加深一下自己的印象,最后我要声明一下我所开发语言是.net mvc 非JAVA,因为这里java和非java的秘钥生成的秘钥格式有所不同。

第一步:登录支付宝开放平台,注册开发者,创建应用添加所需功能和配置应用信息:

登录地址:https://openhome.alipay.com/

1、创建应用:点击开发者中心>创建一个应用>获取拿到对应应用的appid(后期程序中会用到)

2、添加对应功能:因为我在这里只需要使用到获取会员信息授权的功能,所以添加(获取会员信息的功能即可),如下图所示:

第三步、应用信息配置,这里最为主要的还是RSA(SHA256)密钥生成,有坑需注意:

在应用信息配置的时候我们需要配置:应用网管(没有时不需要配置),授权回调地址,加签方式(RSA(SHA256)密钥)

1.这里主要讲的是RSA(SHA256秘钥生成):在这里首先我们下载秘钥生成工具使用这个最后,可视化(window系统的用户)

下载地址:https://docs.open.alipay.com/291/105971

秘钥生成指导视频:https://openclub.alipay.com/index.php?c=read&a=video&fid=76&tid=3699

2.下载完成后我们需要打开工具,这里还要强调一下因为我是.Net MVC,所以我们要选择的Rsa秘钥格式为:PKCS1(非Java适用),秘钥长度选择2048(因为支付宝配置所需的是RSA256,假如是RSA的话适用1024即可),如下图所示:

第二步:适用.Net MVC 实现支付宝网页授权代码(功能可以,已在开发环境适用此代码):

1.了解支付宝授权的流程:

如上图所示,需要拿取到用户信息需要分四步走:

1、获取Auth_Code(授权码)

2、通过Auth_Code换取接口access_token及其用户user_id

3、调用接口获取用户信息

2.代码实现:

在写代码之前,先下载 AopSdk.dll (我编译,生产的SDK)阿里已经给我们写好了所需的方法我们只需调用其类型,传递参数即可。

阿里未编译的SDK下载地址:https://docs.open.alipay.com/54/103419

猛料来了,业务逻辑实现:

#region 支付宝网页授权获取userid
/// <summary>
///支付宝授权登录
/// </summary>
/// <param name="Sid">店铺编号</param>
/// <returns></returns>
public ActionResult SupplierAliPay()
{
try
{
string ReturnUrl = "";//第一步:获取auth_code接口拼接
var admins = new admins { Id = 1 }.SelectObject();
string AliRedirect_url ="获取回调地址";//http请求格式必须与公众平台配置的一致
//注意假如你需要获取到用户的新的的话SCOPe类型使用auth_userinfo,而我在支付那里使用的是auth_base这样不需要用户授权,可以让用户丝毫没有感觉,体验性好
ReturnUrl = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=" +应用APPid+ "&scope=auth_base&state=" + 自定义参数(非必填)+ "&redirect_uri=" + Url.Encode(AliRedirect_url) + "";return Redirect(ReturnUrl);
}
catch (Exception ex)
{
return View();
}
}

/// <summary>
///获取用户buyer_id调转AliPaypage获取支付宝账号的userid (授权回调)
/// </summary>
/// <param name="auth_code"></param>
/// <param name="state"></param>
/// <returns></returns>
public  ActionResult GetUserAliUserID(string auth_code, string state)
{

try
{
auth_code= Request.QueryString["auth_code"];//授权码
state = Request.QueryString["state"];

string AliAppid="";//支付宝应用Appid
string Userid = "";//支付宝用户唯一编号//应用私钥
string YOUR_PRIVATE_KEY= "";

//支付宝公钥
string ALIPAY_PUBLIC_KEY = "";

 Aop.Api.IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do",AliAppid, YOUR_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, "GBK", false);
//获取access_token
AlipaySystemOauthTokenRequest requestAccess_token = new AlipaySystemOauthTokenRequest();
requestAccess_token.GrantType = "authorization_code";
requestAccess_token.Code = auth_code;
AlipaySystemOauthTokenResponse responseAccess_token = client.Execute(requestAccess_token);
Userid = responseAccess_token.UserId;//支付宝用户的唯一userId //responseAccess_token.AlipayUserId;用户的open_id( 已废弃,请勿使用 )

//获取用户信息,通过access_token调用用户信息共享接口获取用户信息
  AlipayUserInfoShareRequest requestUserinfo = new AlipayUserInfoShareRequest();
  AlipayUserInfoShareResponse responseUserinfo = client.Execute(requestUserinfo, responseAccess_token.AccessToken);
  UserName = responseUserinfo.NickName;
  Address = responseUserinfo.City;

return Redirect("/mobile_user/HstyAliPayPayment/AliPayPage?Sid="+Sid+ "&buyer_id="+Userid+"");
}
catch (Exception ex)
{
return view();
}
}
#endregion

总结:

  其实做第三方对接开发的时候我们第一要做的是读懂文档,熟悉开发流程,流程不清晰可能导致程序设计推翻重做,有的时候往往一个空格一个字母问题可以让你找上一天,所以做任何事情我们都要细心、仔细、认真。

原文地址:https://www.cnblogs.com/Can-daydayup/p/10269630.html

时间: 2024-10-22 03:55:28

轻松实现支付宝服务窗网页授权从配置到获取授权获取用户信息的相关文章

关于微信授权登录并获取Openid以及用户信息

一.集成微信授权登录 二.集成代码 1. AppDelegate 代码 #import "AppDelegate.h"#import "WXApi.h"#import "WXApiManager.h"@interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchin

支付宝手机网页即时到账接口(1)之相关信息介绍

前言 博主近几周在写一个微商城的项目,里面有涉及到付款模块,发现原来电脑端的支付宝接口与手机端的接口不一致(原来的电脑端平台非本人开发).然后便去支付宝商家服务下载集成开发包. 该集成开发包包含即时到账批量退款有密接口.商户接入支付宝收银台界面展示标准-无线和手机网页即时到账接口三个文件夹. 1.即时到账批量退款有密接口 demo 该文件夹下有8个示例项目,分为4种不同语言(ASP.CSHARP.JAVA.PHP)和2种不同编码(GBK.UTF-8) 更新日志 即时到账批量退款有密接口(refu

微信网页授权-公众号支付(获取openid、用户信息等)

名词解释: openid 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID 业务功能描述:实现H5页面可以在微信浏览器里面进行微信支付,所以需要使用微信公号支付功能才能实现, 微信公众号支付功能需要用户的openid,所以进入页面时需要通过网页授权首先获取到openid. 支付流程大致流程如下: 1,进入支付页面时,请求以下链接获取code appid 是 公众号的唯一标识 https://open.weixin.qq.com/connec

支付宝手机网页即时到账接口(2)之授权接口请求

前言 这篇文章主要讲诉系统调用支付宝手机网页即时到账授权接口获取支付宝返回的request_token. 上篇文章地址:支付宝手机网页即时到账接口(1)之相关信息介绍. 这是上篇文章结尾调用授权接口的图解. 官方文档中对授权接口的说明是: 商户利用编程方法来模拟http请求远程解析html,获取支付宝返回的结果数据后,可以结合自身网站的业务逻辑进行数据处理. 说明中不难看出我们的代码中需要模拟http提交参数,然后解析支付宝返回的结果再进行处理.该项目是用java编写的,所以后续代码也是用jav

微信开发笔记——微信网页登录授权,获取用户信息

最近做了一个公司的微信的公众号,对微信的流程清楚了不少,这里记录下,算不上多高深的,只希望能帮助到一部分人吧. 我们公司的测试微信公众号:NPCgo 可以感受下,哈哈~~ 闲话少说,开始: 首先大家要看下微信的API文档. 微信网页授权,获取用户的微信官方API文档地址:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 三次握手微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过c

小白学react之网页获取微信用户信息

通过上一篇<小白学react之EJS模版实战>我们学习了如何通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划,去获取微信扫码用户的信息,并将头像显示在我们页面的右上角上. 最终实战效果将如下所示. 首先根据我们的网站url生成二维码,比如我们可以通过浏览器的FeHelper来生成: 然后用户通过微信扫码: 最后用户确定授权后获取到用户的基本信息,并将头像显示在右上角: 1. 内网穿透准备 我们获取微信用户信息的过程中,

支付宝手机网页即时到账接口(5)之交易接口页面跳转同步通知

前言 这篇文章主要讲诉系统调用支付宝手机网页即时交易接口后支付宝返回的同步通知. 支付宝对商户的请求数据处理完成后,会将处理的结果数据通过系统程序控制客户端页面自动跳转的方式通知给商户网站.这些处理结果数据就是页面跳转同步通知参数.支付宝以GET方式访问商户网站(参数call_back_url,在"手机网页即时到账授权接口(alipay.wap.trade.create.direct)"中指定). html同步返回特性 支付宝处理完请求的数据后,当前界面会自动刷新,立刻显示处理结果:

微信OAuth2网页授权获取用户信息

文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html !!! 微信跟用户没有关系类接口采用了OAUTH2 [客户端模式(Client Credentials Grant)],而跟用户有关系的接口,采用OAuth2.0服务端[授权码模式(Authorization Code)]来获得用户的openid:另外需要注意的一点就是需要在开发者中心页配置授权回调域名,域名必须与设置的域名在同一个域下. 网页授权ac

微信公众号开发之网页授权(获取用户信息)

这次暑假留在学校参与工作室的项目,对微信公众号比较感兴趣,所以参与这方面的学习研究. 昨天完成了关于网页授权,获取用户信息方面的功能,所以乘热打铁,写上一篇.实现本篇涉及的 功能,还需要完成一些基础.在写完这篇博客后,我会尽快补上. -------------------------废话不多说直入正题 需要的工具: 微信公众号(可以申请,但做开发的,可以申请测试号,申请详细不多说了) 服务器(可以自行购买,我使用的是新浪的sae.) 编辑器(随意,不做推荐) 微信公众号开发文档(地址) ----