你的过程其实跟微信认证的服务号扫描登录类似,二维码内容可以是支付宝授权的URL,回调网页增加了一个GUID参数,因为用户信息会存放在这个全局变量中,完成信息共享(不知道Java有没有,应该有一个所有用户都可以共享的对象,注意是所有用户都可以访问,而不仅仅是当前访问用户,跟下面说的两步是不一样的)。
当用户扫描二维码时,会出现两个步骤
1)手机会跳转到授权页面,授权后再跳转到你的回调URL。回调页面获取GUID和支付宝相关的用户信息(如支付宝的唯一ID,类似微信公众号),判断是否已经注册过、注册过、绑定过账号(操作完成后,通过GUID设置用户身份信息,方式与注册步骤相同)。如果已经注册过,则读取用户信息,通过GUID值设置分享信息为这个用户的相关身份信息。
2)扫描二维码后阻止二维码启动定时器+ajax训练服务器的页面,并用guid值附加训练服务器的共享信息,如果这个guid的值存在,则设置用户身份,并返回一个标志位,比如1表示扫码成功,然后如果训练结果为1,则跳转到用户后台或者上次访问的页面。
如果有帮助的话请点击【本答案右上角】采纳,谢谢~~
string guid=...//java生成guid的代码; string callback = "http://你的域名域名/oauth/alipay.ashx?guid=xxxxxxxx&op=getalipayinfo";//设置guid,op参数可以省略,不过建议加上,方便区分操作。如果省略需要判断guid不为空执行获取支付宝信息操作,否则跳转支付宝授权网址 string url = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=" + AlipayConfig.app_id + "&scope=auth_user&redirect_uri=" + context.Server.UrlEncode(callback);//这个就是二维码存储的地址