前言:

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

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

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

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

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

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

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

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)阿里已经给我们写好了所需的方法我们只需调用其类型,传递参数即可。

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

#region 支付宝网页授权获取userid

///

///支付宝授权登录///

/// 店铺编号

///

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) + "";returnRedirect(ReturnUrl);

}catch(Exception ex)

{return View();

}

}///

///获取用户buyer_id调转AliPaypage获取支付宝账号的userid (授权回调)///

///

///

///

public ActionResult GetUserAliUserID(string auth_code, stringstate)

{try{

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

state= Request.QueryString["state"];string Userid = "";//通过Auth_code获取用户//应用私钥

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

string ALIPAY_PUBLIC_KEY = "";

Aop.Api.IAopClient client= new DefaultAopClient("https://openapi.alipay.com/gateway.do",admins.AliAppid, YOUR_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, "GBK", false);//获取access_token

AlipaySystemOauthTokenRequest requestAccess_token = newAlipaySystemOauthTokenRequest();

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

总结:

其实做第三方的开发的时候我们第一要做的就是读懂文档,熟悉开发流程,有的时候往往一个空格一个字母问题可以让你找上一天,所以做任何事情我们都要细心、仔细、认真。

java支付宝网页授权_轻松实现支付宝服务窗网页授权从配置到获取授权获取用户信息...相关推荐

  1. 钉钉授权时报获取钉钉用户信息失败,失败原因:访问ip不在白名单之中的解决办法

    前言 公司里的一个钉钉h5应用项目,进入里需要钉钉授权,提示:钉钉授权时报获取钉钉用户信息失败,失败原因:访问ip不在白名单之中的解决办法,这个错误有一段时间了,后来在官方的文档里找到解决方法 钉钉官 ...

  2. html打开网页过场动画_轻松教你学会网页设计

    吴江哪里学网页设计 2019吴江网页设计培训哪家好 网页设计介绍 Web2.0标准布局之网页长期签约就业班(全日制) 课程收费: 7680元 课程周期: 5-6个月 (45分钟/课) 使用教材: &l ...

  3. 实现微信打开网页时,获取当前微信用户信息(Java)(基于snsapi_userinfo方式)

    /*** 1 第一步:用户同意授权,获取code* 2 第二步:通过code换取网页授权access_token* 3 第三步:刷新access_token(如果需要)* 4 第四步:拉取用户信息(需 ...

  4. 微信公众号网页授权--前端获取code及用户信息(vue)

    前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的踩坑填坑之路. 一.测试号相关配置 首先在你公司申请的测试号上配置好相关信息 ...

  5. 静态网页案例_手把手教你构建网页

    ​ 网页 网页是构成网站的基本元素,是承载各种网站应用的平台.通俗地说,您的网站就是由网页组成的,如果您只有域名和虚拟主机而没有制作任何网页的话,您的客户仍旧无法访问您的网站. 网页是一个包含HTML ...

  6. python正则表达式爬取网页数据_常用正则表达式爬取网页信息及HTML分析总结

    Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取 标签之间内容2.获取 超链接之间内容3.获取URL最后一个参数命名图片或传递参数4.爬取网页中所有URL链接5.爬取网页标题titl ...

  7. 微信最新授权登录 微信小程序无法弹出授权弹框 open-type getUserInfo获取不到用户信息 授权不弹框

    解决办法 使用getUserProfile接口 !!!! 大大的坑啊,调试了半天 getUserProfile(e) {// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接 ...

  8. 微信小程序授权登录(获取手机号及用户信息)

    目录 1.开放平台绑定微信小程序 2.小程序AppID/AppSecret获取 3.获取授权信息 4.获取用户信息

  9. JAVA版微信公众号获取openId,微信用户信息

    一. 前端页面js 1.获取页面传来的数据 function GetQueryString(name) {var reg = new RegExp("(^|&)" + na ...

  10. java粒子特效教程_使用particles.js实现网页背景粒子特效

    得知途径 B3log提供了两套博客系统,一个是用Java开发的,叫做Solo,我也是在网上搜索Java博客系统时发现了它,之后才了解了B3log:还有一个是用Go语言开发的,叫做Pipe.其中Solo ...

最新文章

  1. Nature指数2021亚太区排名:7所中国高校挺进前10!看看有没有你的母校?
  2. Golang 解决no buildable Go source file in问题
  3. Window.Open- ShowModalDialog- Window.Open Session丢失的Solution
  4. eggjs的参数校验模块egg-validate的使用和进一步定制化升级
  5. nginx服务器配置安全维护,Nginx服务器相关的一些安全配置建议
  6. Silverlight 4+RIA Services–搜索引擎优化(SEO)
  7. 拉格朗日中值定理ξ怎么求_高等数学3.1中值定理
  8. Android UI学习之---Button
  9. 移动终端WAPI证书快速下载并自动连接解决方案
  10. 计算机网络 —— 冲突域和广播域
  11. WinAPI 数据类型
  12. 在html中调用js函数
  13. ICT融合和创新带来制造业的持续变革
  14. 麦子学院I2C设备驱动201117
  15. android-ultra-pull-to-refresh list,Android下拉刷新控件android-Ultra-Pull-To-Refresh 使用
  16. (姊妹仨)BlazePalm: 先检手掌再检骨架,虚拟合成数据助力 2.5D 信息输出
  17. docker安装minio:Access key length should be at least 3, and secret key length at least 8 characters
  18. 【百金轻】:乍暖还寒 最难将息
  19. 《The Wiley Handbook of Human Computer Interaction 》 中Accessibility章节(690-702页)翻译
  20. python 模拟点击第三方软件_使用Python模拟腾讯第三方认证-篇4 [自动爬取分析及下载]...

热门文章

  1. The Dominant Color (20)
  2. 中国大学计算机专业排名教育部,中国校友会网2018中国大学计算机类各本科专业排行榜...
  3. 中间状态+三方预约下单接口测试项目
  4. 什么是电影衍生品,电影衍生品是用来干嘛的?
  5. 案例分析:从误删除数据库血案看数据库系统的安全设计
  6. axure中继器求和_Axure学习笔记:中继器之价格统计
  7. 姓舒男孩名字简单大气
  8. [视频教程][斯坦福大学公开课:ios7应用开发 18集]
  9. pygame 实现 pong 小游戏
  10. 硬回车、软回车、java转义字符