本文共 4419 字,大约阅读时间需要 14 分钟。
接入文档地址:。
注:该接口支持沙箱环境测试。
网站支付宝登录无需单独签约,在Appid对应的应用上添加获取会员信息功能包即可。
(1)。
(2)生成密钥:参考或者。
(3)。
(4)添加功能包:进入,根据自己的业务需求,选择“应用类型”,再点击要添加功能的应用,进入应用详情页,然后进行如下操作。
。
授权链接拼接示例如下:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=UrlEncode(授权回调地址)
授权链接上的各参数说明
app_id:开发者应用的app_id,如何获取可参考。
scope:网站支付宝登录的scope可填写成auth_user或者auth_base,2则区别可参考进行了解。
redirect_uri:授权回调地址,必须以http或者https开头。
state:商户自定义参数,用户授权后,重定向到 redirect_uri 时会原样回传给商户,可不传递。
授权商户访问拼接好的应用授权URL拼接链接,点击授权成功跳转至授权回调页面,在授权回调页面会带有auth_code 相关的数据内容,示例如下:
http://example.com/doc/toAuthPage.html?app_id=2014101500013658&source=alipay_wallet&scope=auth_user&auth_code=ca34ea491e7146cc87d25fca24c4cD11
顺便把代码贴在这里吧。
/** * 支付宝第三方登陆 * @param code * @param appId * @param request * @param response */@RequestMapping("/qyStaffAlipay/login")public void qyStaffAlipay(@RequestParam(value = "auth_code") String code, @RequestParam(value = "app_id") String appId, HttpServletRequest request, HttpServletResponse response) throws IOException { try { JSONObject json = AlipayClientUtils.getAuthToken(code); if(json != null){ String unionId = json.getString("user_id"); if(StringUtils.isNotBlank(unionId)){ //登陆业务 }else { logger.error("登录失败:unionId为空"); } } }catch (AuthException e) { e.printStackTrace(); logger.error("登录失败:" + e.getMessage()); } catch (Exception e) { e.printStackTrace(); logger.error("登录失败:" + e.getMessage()); } response.sendRedirect("/r/login"); return;}
import com.alibaba.fastjson.JSONObject;import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.DefaultAlipayClient;import com.alipay.api.request.AlipayOpenPublicTemplateMessageIndustryModifyRequest;import com.alipay.api.request.AlipaySystemOauthTokenRequest;import com.alipay.api.response.AlipayOpenPublicTemplateMessageIndustryModifyResponse;import com.alipay.api.response.AlipaySystemOauthTokenResponse;import com.ditop.modules.gcjsy.basic.constant.AliPayLoginContant;import static com.alipay.api.AlipayConstants.CHARSET_GBK;/** * @author wwz */public class AlipayClientUtils { /** * 创建单例 * @return */ private static class AlipayClientHolder{ private static final AlipayClient alipayClient = new DefaultAlipayClient(AliPayLoginContant.SERVICE_URL, AliPayLoginContant.APPID, AliPayLoginContant.APP_PRIVATE_KEY, "json", CHARSET_GBK, AliPayLoginContant.ALIPAY_PUBLIC_KEY, "RSA2"); } /** * 获取token信息 * @param code * @return * @throws AlipayApiException */ public static JSONObject getAuthToken(String code) throws AlipayApiException { AlipayClient alipayClient = AlipayClientHolder.alipayClient; AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode(code); request.setGrantType("authorization_code"); AlipaySystemOauthTokenResponse response = alipayClient.execute(request); if(response.isSuccess()){ String body = response.getBody(); if(!StringUtils.isEmpty(body)){ JSONObject jsonObject = JSONObject.parseObject(body); JSONObject object = jsonObject.getJSONObject(AliPayLoginContant.ALIPAY_SYSTEM_OAUTH_TOKEN_RESPONSE); return object; } System.out.println("调用成功"); } else { System.out.println("调用失败"); } return null; }}
/** * @author wwz */public class AliPayLoginContant { public final static String BASE_URL = "http://wwz1994.e2.luyouxia.net:22851"; /** * 网关地址 */ public final static String SERVICE_URL = "https://openapi.alipay.com/gateway.do"; /** * appid */ public final static String APPID = "XXXXX"; /** * 回调地址 */ public final static String REDIRECT_URL = "XXXXX"; /** * 支付宝公钥(在签名) */ public final static String ALIPAY_PUBLIC_KEY = "XXXXX"; /** * 你自己生成的私钥 */ public final static String APP_PRIVATE_KEY = "XXXXX"; public static final String ALIPAY_SYSTEM_OAUTH_TOKEN_RESPONSE = "alipay_system_oauth_token_response"; }
转载地址:http://tmvbi.baihongyu.com/