android第三方登录appid,Android 第三方登录之支付宝登录
首先,贴上支付宝官方开放平台地址和部分开发文档:
蚂蚁金服开放平台
开发者中心-第三方应用
APP支付宝登录快速接入
Android集成流程详解
主要流程如下:
申请开发者,身份选择系统服务商ISV,创建应用并获取APPID。秘钥生成链接:生成密钥:快速生成RSA私钥公钥
配置应用,集成并配置SDK。参考APP支付宝登录快速接入
调用接口
注意:
(1)这里是APP支付宝第三方登录,不是第三方应用授权,开发文档不要参考错了
(2)不要在沙箱环境下做调试,直接在第一步将创建的应用上线然后再调试即可(APPID用创建的应用ID,不要用沙箱的)
(3)关于PID参数,不太好找,贴出来位置合作伙伴身份(PID)
下面是代码
/**
* APP支付宝登录
*
* 这里只是为了方便,直接向加签过程直接放在客户端完成;
* 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;
* 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;
*/
public class ALiLoginUtils {
public Activity activity;
/** 支付宝支付业务:入参app_id */
public static final String APPID = "你创建的应用APPID";
/** 支付宝账户登录授权业务:入参pid值 */
public static final String PID = "合作伙伴身份PID";
/** 支付宝账户登录授权业务:入参target_id值 可自定义,保证唯一性即可*/
public static final String TARGET_ID = "保证唯一性即可";
/** 商户私钥,pkcs8格式 */
/** 如下私钥,RSA2_PRIVATE 或者 RSA_PRIVATE 只需要填入一个 */
/** 如果商户两个都设置了,优先使用 RSA2_PRIVATE */
/** RSA2_PRIVATE 可以保证商户交易在更加安全的环境下进行,建议使用 RSA2_PRIVATE */
/** 获取 RSA2_PRIVATE,建议使用支付宝提供的公私钥生成工具生成, */
/** 工具地址:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1 */
public static final String RSA2_PRIVATE = "填你自己的应用私钥,要和配置应用时的应用公钥对应";
public static final String RSA_PRIVATE = "";
private static final int SDK_AUTH_FLAG = 2;
public ALiLoginUtils(Activity activity){
this.activity = activity;
}
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_AUTH_FLAG: {
@SuppressWarnings("unchecked")
AuthResult authResult = new AuthResult((Map) msg.obj, true);
String resultStatus = authResult.getResultStatus();
String resultCode = authResult.getResultCode();
Log.e("ALiLoginActivity", "=====resultStatus=====" + resultStatus);
Log.e("ALiLoginActivity", "=====resultCode=====" + resultCode);
// 判断resultStatus 为“9000”且result_code
// 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
// 获取alipay_open_id,调支付时作为参数extern_token 的value
// 传入,则支付账户为该授权账户
Log.e("ALiLoginActivity", "授权成功\n" + String.format("authCode:%s", authResult.getAuthCode()));
// Toast.makeText(activity,"授权成功\n" + String.format("authCode:%s", authResult.getAuthCode()), Toast.LENGTH_SHORT).show();
} else {
// 其他状态值则为授权失败
Log.e("ALiLoginActivity", "授权失败\n" + String.format("authCode:%s", authResult.getAuthCode()));
// Toast.makeText(activity,"授权失败" + String.format("authCode:%s", authResult.getAuthCode()), Toast.LENGTH_SHORT).show();
}
break;
}
default:
break;
}
};
};
/**
* 支付宝账户授权业务
*/
public void authV2() {
if (TextUtils.isEmpty(PID) || TextUtils.isEmpty(APPID)
|| (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))
|| TextUtils.isEmpty(TARGET_ID)) {
new AlertDialog.Builder(activity).setTitle("警告").setMessage("需要配置PARTNER |APP_ID| RSA_PRIVATE| TARGET_ID")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
}
}).show();
return;
}
/**
* 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;
* 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;
* 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;
*
* authInfo的获取必须来自服务端;
*/
boolean rsa2 = (RSA2_PRIVATE.length() > 0);
MapauthInfoMap = 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;
Log.e("ALiLoginActivity", "=====authInfo=====" + authInfo);
Runnable authRunnable = new Runnable() {
@Override
public void run() {
// 构造AuthTask 对象
AuthTask authTask = new AuthTask(activity);
// 调用授权接口,获取授权结果
Mapresult = 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();
}
}
然后在Activity中直接调用工具类,如下:
/** 支付宝授权登录 */
case R.id.iv_alipay:
ALiLoginUtils aLiLogin = new ALiLoginUtils(LoginActivity.this);
aLiLogin.authV2();
break;
这里,直接把privateKey等数据放在客户端,实际加签过程务必要放在服务端完成;防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;authInfo(这里拼接了要向支付宝发送的所有数据信息,尤为重要)的获取必须来自服务端;
最后,代码只贴出了主要的流程,并不完整,其余的可以参考 App支付客户端DEMO&SDK
有兴趣或者需要的朋友,这里还有 Android 第三方登录之新浪微博授权登录
android第三方登录appid,Android 第三方登录之支付宝登录相关推荐
- android第三方登录appid,AndroidQQ第三方登录
集成QQ登录 在lib导入该open_sdk_r5886_lite.jar包 AndroidManifest.xml android:name="com.tencent.tauth.Auth ...
- Android 用官方SDK实现第三方(qq、微信、微博)登录
转载请标明原地址:http://blog.csdn.net/gaolei1201/article/details/44680291 可下载体验本人在项目中的实战运用:http://zhushou.36 ...
- android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法
这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...
- android 微博 4.1sdk,android使用新浪微博最新SDK4.1进行第三方授权登录
android使用新浪微博最新SDK进行第三方授权登录 工具:android-studio 新浪SDK版本:4.1 1Demo参考 下载官方SDK:https://github.com/sinawei ...
- Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题
前言 最近在使用第三方登录和分享的过程中遇到了很多问题,一方面可以归结为自己经验的不足,另一方面其实也说明了官方文档的含糊不清.这篇博文不会写关于如何使用第三方登录分享,因为官方文档已经写明了步骤,这 ...
- Android 11 上传图片适配 和 第三方登录
一 上传图片 本次适配,不添加android:requestLegacyExternalStorage="true" ,过程都用原生系统代码 1.首先选择图片 Intent in ...
- Android开发全程记录(九)——使用新浪微博登录第三方应用
1.首先到官网下载SDK,下载地址:http://open.weibo.com/wiki/Sdk 2.解压SDK包,解压后,目录下会有pdf文档,同时提供有WeiboSDK和WeiboSDKDemo, ...
- Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细
Android安卓开发中集成微信二维码登录的步骤: 写在前面的: 该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源.在最后,我会附上这个Activity的 ...
- 社会化登录分享-Android SDK的二次封装和使用
本系列文章将第三方的登录分享功能进行二次封装,统一接口调用,简化了接不同平台登录分享的步骤. 0 系列文章 系列一 Android SDK的二次封装和使用 系列二 源码解析 系列三 微信SDK接入 系 ...
- (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇
最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...
最新文章
- 聊聊iOS开发中耳机的那点事(监听耳机拔插、耳机线控)-b
- poj2352(树状数组)
- 领扣 LeetCode 42:接雨水(java)(网易有道面试真题)
- 使用npm安装TypeScript
- 基于ROS的移动机器人开发:视觉、语音、导航
- 飞龙的程序员书单 – 其它
- python中capital是什么意思_capital是什么意思_capital的翻译_音标_读音_用法_例句_爱词霸在线词典...
- Windows 7 Ultimate + Ubuntu 12.04 LTS双系统完美走起
- Affinity Designer 查询面板渐变颜色
- java线程--object.waitobject.notify
- [企业邮局]域名选择与注册
- 总结自己设计带POE的八口交换机的过程和踩坑
- html5 预渲染,VUE预渲染及遇到的坑
- import * as 是什么?
- dede首页php调用会员积分,dedecms织梦添加会员积分的方法
- 互联网公司让行政给员工发中秋节福利,看到预算后:还是别发了
- matlab道路检测,基于MATLAB的车道保持辅助车道检测
- LE 0.6 源码提供下载
- mysql参考手册官方版(中文)
- ThinkPHP优雅草小程序一键生成运营管理系统源码