首先,贴上支付宝官方开放平台地址和部分开发文档:

蚂蚁金服开放平台

开发者中心-第三方应用

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 第三方登录之支付宝登录相关推荐

  1. android第三方登录appid,AndroidQQ第三方登录

    集成QQ登录 在lib导入该open_sdk_r5886_lite.jar包 AndroidManifest.xml android:name="com.tencent.tauth.Auth ...

  2. Android 用官方SDK实现第三方(qq、微信、微博)登录

    转载请标明原地址:http://blog.csdn.net/gaolei1201/article/details/44680291 可下载体验本人在项目中的实战运用:http://zhushou.36 ...

  3. android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

    这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...

  4. android 微博 4.1sdk,android使用新浪微博最新SDK4.1进行第三方授权登录

    android使用新浪微博最新SDK进行第三方授权登录 工具:android-studio 新浪SDK版本:4.1 1Demo参考 下载官方SDK:https://github.com/sinawei ...

  5. Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题

    前言 最近在使用第三方登录和分享的过程中遇到了很多问题,一方面可以归结为自己经验的不足,另一方面其实也说明了官方文档的含糊不清.这篇博文不会写关于如何使用第三方登录分享,因为官方文档已经写明了步骤,这 ...

  6. Android 11 上传图片适配 和 第三方登录

    一  上传图片 本次适配,不添加android:requestLegacyExternalStorage="true" ,过程都用原生系统代码 1.首先选择图片 Intent in ...

  7. Android开发全程记录(九)——使用新浪微博登录第三方应用

    1.首先到官网下载SDK,下载地址:http://open.weibo.com/wiki/Sdk 2.解压SDK包,解压后,目录下会有pdf文档,同时提供有WeiboSDK和WeiboSDKDemo, ...

  8. Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细

    Android安卓开发中集成微信二维码登录的步骤: 写在前面的: 该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源.在最后,我会附上这个Activity的 ...

  9. 社会化登录分享-Android SDK的二次封装和使用

    本系列文章将第三方的登录分享功能进行二次封装,统一接口调用,简化了接不同平台登录分享的步骤. 0 系列文章 系列一 Android SDK的二次封装和使用 系列二 源码解析 系列三 微信SDK接入 系 ...

  10. (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇

    最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...

最新文章

  1. 聊聊iOS开发中耳机的那点事(监听耳机拔插、耳机线控)-b
  2. poj2352(树状数组)
  3. 领扣 LeetCode 42:接雨水(java)(网易有道面试真题)
  4. 使用npm安装TypeScript
  5. 基于ROS的移动机器人开发:视觉、语音、导航
  6. 飞龙的程序员书单 – 其它
  7. python中capital是什么意思_capital是什么意思_capital的翻译_音标_读音_用法_例句_爱词霸在线词典...
  8. Windows 7 Ultimate + Ubuntu 12.04 LTS双系统完美走起
  9. Affinity Designer 查询面板渐变颜色
  10. java线程--object.waitobject.notify
  11. [企业邮局]域名选择与注册
  12. 总结自己设计带POE的八口交换机的过程和踩坑
  13. html5 预渲染,VUE预渲染及遇到的坑
  14. import * as 是什么?
  15. dede首页php调用会员积分,dedecms织梦添加会员积分的方法
  16. 互联网公司让行政给员工发中秋节福利,看到预算后:还是别发了
  17. matlab道路检测,基于MATLAB的车道保持辅助车道检测
  18. LE 0.6 源码提供下载
  19. mysql参考手册官方版(中文)
  20. ThinkPHP优雅草小程序一键生成运营管理系统源码

热门文章

  1. nyoj 779 兰州烧饼
  2. Javascript使用三大家族和事件来DIY动画效果相关笔记(四)
  3. 怎么样才可以逆天改命
  4. 【2022 ACTF-wp】
  5. 基于Jeecg的权限获取
  6. Qt C++制作桌面天气,无边框、透明窗口,心知天气API,开放源码
  7. Python爬取中国银行外汇牌价(statsmodels预测分析)--(二)
  8. 聚合数据--汇率接口调用
  9. Android学习笔记:实现app启动界面跳过倒计时功能
  10. 面试系列-1 大厂面试幂等性