实现效果:
截取authCode的方法
int startCity = info.indexOf("authCode={") + "authCode={".length();
int endCity = info.indexOf("}", startCity);
String code = info.substring(startCity, endCity);//获取市Log.i("lgqshouq=authcode==",code);
实现步骤
1、打开手机支付宝APP扫描登录 蚂蚁金服|开发平台
链接:https://open.alipay.com/platform/home.htm
登录后,点击 管理中心——>网页&移动应用——>支付接入——创建应用
创建成功,并签约 无线账户授权,显示已签约则成功
2、设置密钥,及APPID
鼠标放到【主账号】上,下拉,点击 密钥管理,,,,注意是mapi网关下的密钥
设置应用公钥:https://docs.open.alipay.com/291/105971
3、配置密匙成功即可实现调用支付宝SDK授权登录
(1)五个工具类,是固定值,直接cp
(2)、activity调用支付宝登录方法
/*** 支付宝账户授权业务示例*/
public void authV2(View v) {if (TextUtils.isEmpty(PID) || TextUtils.isEmpty(APPID)|| (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))|| TextUtils.isEmpty(TARGET_ID)) {showAlert(this, "支付宝授权参数缺失");return;}/** 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;* 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;* 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;** authInfo 的获取必须来自服务端;*/boolean rsa2 = (RSA2_PRIVATE.length() > 0);Map<String, String> authInfoMap = OrderInfoUtil2_0.buildAuthInfoMap(PID, APPID, TARGET_ID, rsa2);String info = OrderInfoUtil2_0.buildOrderParam(authInfoMap);String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE;String sign = OrderInfoUtil2_0.getSign(authInfoMap, privateKey, rsa2);final String authInfo = info + "&" + sign;Runnable authRunnable = new Runnable() {@Overridepublic void run() {// 构造AuthTask 对象AuthTask authTask = new AuthTask(MainActivity.this);// 调用授权接口,获取授权结果Map<String, String> result = authTask.authV2(authInfo, true);Message msg = new Message();msg.what = SDK_AUTH_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};// 必须异步调用Thread authThread = new Thread(authRunnable);authThread.start();
}
(3)剩下属于后台开发
如果status和code都正确,则认为授权成功。
此时把AuthResult的里的auth_code传给后台兄弟,他们需要这个auth_code去向支付宝换取access_token,然后才能去拿支付宝的用户公开信息返回给app
demo链接:https://download.csdn.net/download/meixi_android/11363133
在线交流bug:QQ1085220040