最近接入支付实名认证,需要用到快捷登录。记录踩坑过程。
进入支付宝后台
https://open.alipay.com/platform/home.htm
配置好相应的密钥,这一步跟着支付宝提示操作没什么问题
接入
Android文档下载
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.kRfjpz&treeId=193&articleId=104509&docType=1
下载相应的Demo
配置好ID和pkcs8格式的私钥
正常情况都会拿到相应的返回数据
我们需要两个参数
auth_code
user_id
将这两个参数传给后台,让后台请求支付宝获得数据
我们后台是C++写的,请求可以成功,不过返回的数据有些是乱码,所以我在本地用Java后台模拟请求支付宝的接口,只做简单的调用。
本地新建一个Java项目
把jar包引入进来
获取授权令牌文档
https://doc.open.alipay.com/doc2/apiDetail.htm?spm=a219a.7629065.0.0.k4e1Tr&apiId=1025&docType=4
获取用户信息的文档
https://doc.open.alipay.com/doc2/apiDetail.htm?spm=a219a.7629065.0.0.dmVpXA&apiId=876&docType=4
代码如下
public class main {
private static final String APP_ID = "";
/**
* pkcs8格式的秘钥
*/
private static final String APP_PRIVATE_KEY = "";
/**
* 支付宝公钥
*/
private static final String ALIPAY_PUBLIC_KEY = "";
public static void main(String[] args){
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","UTF-8",ALIPAY_PUBLIC_KEY);
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setGrantType("authorization_code");
request.setCode("客户端传过来的auth_code");
AlipaySystemOauthTokenResponse response = null;
try {
response = alipayClient.execute(request);
System.out.println();
} catch (AlipayApiException e) {
e.printStackTrace();
}
AlipayClient alipayShare = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","UTF-8",ALIPAY_PUBLIC_KEY);
AlipayUserUserinfoShareRequest alipayShareRequest = new AlipayUserUserinfoShareRequest();
try {
alipayShareRequest.setProdCode("WAP_FAST_LOGIN");
AlipayUserUserinfoShareResponse resp = alipayShare.execute(alipayShareRequest,response.getAccessToken());
System.out.println();
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
}
最终返回的数据
这里身份证信息没有拿到,只返回了相关的认证信息