实现效果:
截取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() {
@Override
public 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