1、接入支付宝

参照官方文档接入:https://docs.open.alipay.com/204/105051/

2、写在前面

1、相对应的常量

    //支付宝支付业务:入参app_idpublic static final String APPID = "";//支付宝账户登录授权业务:入参pid值public static final String PID = "2088...";//私钥public static final String RSA2_PRIVATE = "";//支付宝公钥public static String ALIPAYPUBLICKEY = "";//jsonpublic static String FORMAT = "json";//加密方式public static String SIGNTYPE = "RSA2";//编码格式public static String CHARSET = "UTF-8";

2、回调函数

    public interface AuthAlipayListener {void authAlipayResult(AuthResult _authResult);}public interface PayAlipayListener {void payAlipayResult(PayResult _payResult);}

3、支付宝授权功能

支付宝授权功能,可以获取到支付宝账号的一些信息,比如支付宝账号id
1、从服务器端获取authInfo字符串(在测试阶段可以在客户端自行加密获取,正式上线必须从服务器端获取)

    /*** 支付宝账户授权业务*/public static String getAuthAlipayString() {/*** 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;* 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;* 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;** authInfo的获取必须来自服务端;*/boolean rsa2 = (RSA2_PRIVATE.length() > 0);Map<String, String> authInfoMap = OrderInfoUtil2_0.buildAuthInfoMap(PID, APPID, "", rsa2);String info = OrderInfoUtil2_0.buildOrderParam(authInfoMap);String privateKey = RSA2_PRIVATE;String sign = OrderInfoUtil2_0.getSign(authInfoMap, privateKey, rsa2);final String authInfo = info + "&" + sign;return authInfo;}

重点: 重点是获取这里的authInfo,一串加密和签名的String,使用他来进行授权,获取相应的信息。

2、支付宝授权功能

     /*** 支付宝账户授权业务*/public void authAlipay(String _authAlipayString) {AlipayUtils.authAlipay(SettingActivity.this, _authAlipayString, new AlipayUtils.AuthAlipayListener() {@Overridepublic void authAlipayResult(AuthResult authResult) {String resultStatus = authResult.getResultStatus();// 判断resultStatus 为“9000”且result_code// 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {// 获取alipay_open_id,调支付时作为参数extern_token 的value// 传入,则支付账户为该授权账户mPid = authResult.getUserId();if (!TextUtils.isEmpty(mPid))ServiceManager.getInstance().getIAlipayService().reqBanAlipay(mPid, "", SettingActivity.this);} else {ToastUtils.showMessage("授权失败请重试");}}});}/*** 支付宝授权功能** @param _activity* @param _authAlipayString* @param _authAlipayListener*/public static void authAlipay(final Activity _activity, final String _authAlipayString, final AuthAlipayListener _authAlipayListener) {try {ThreadPoolManager.getIns().executeInSiglePool(new Runnable() {@Overridepublic void run() {// 构造AuthTask 对象AuthTask authTask = new AuthTask(_activity);// 调用授权接口,获取授权结果final Map<String, String> result = authTask.authV2(_authAlipayString, true);final AuthResult authResult = new AuthResult(result, true);HandlerUtil.getMainHandler().post(new Runnable() {@Overridepublic void run() {_authAlipayListener.authAlipayResult(authResult);}});}});} catch (Exception _e) {LogUtil.e(TAG, _e);}}

4、支付宝支付功能

1、从服务器端获取authInfo字符串(在测试阶段可以在客户端自行加密获取,正式上线必须从服务器端获取)

public static String getPayAlipayString() {boolean rsa2 = (RSA2_PRIVATE.length() > 0);Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2);String orderParam = OrderInfoUtil2_0.buildOrderParam(params);String privateKey = RSA2_PRIVATE;String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2);final String orderInfo = orderParam + "&" + sign;return orderInfo;}

重点: 重点是获取这里的authInfo,一串加密和签名的String,使用他来进行支付,调用支付宝客户端或者是网页端。

2、支付宝支付功能

/*** 支付宝支付功能** @param _activity* @param _authAlipayString* @param _payAlipayListener*/public static void payAlipay(final Activity _activity, final String _authAlipayString, final PayAlipayListener _payAlipayListener) {try {ThreadPoolManager.getIns().executeInSiglePool(new Runnable() {@Overridepublic void run() {PayTask alipay = new PayTask(_activity);Map<String, String> result = alipay.payV2(_authAlipayString, true);final PayResult authResult = new PayResult(result);HandlerUtil.getMainHandler().post(new Runnable() {@Overridepublic void run() {_payAlipayListener.payAlipayResult(authResult);}});}});} catch (Exception _e) {LogUtil.e(TAG, _e);}}@Overridepublic void payAlipayResult(PayResult _payResult) {if (null != _payResult) {String _resultStatus = _payResult.getResultStatus();if (!TextUtils.equals(_resultStatus, "9000")) {dismissProgress();return;}PayResult.BillInfo _billInfo = _payResult.getBillInfo();}}

5、相关文件下载

链接地址:http://download.csdn.net/download/llayjun/10146117,本来不想设置分数的,但不知道怎么设为0分,所以选了一个2分,见谅

android接支付宝授权和支付功能相关推荐

  1. Spring Boot集成支付宝电脑网站支付功能

    Spring Boot集成支付宝电脑网站支付功能 接入准备 登录 创建应用 添加能力 生成私钥与公钥 开发设置 沙箱环境 示例Demo的使用与学习 下载Demo 启动项目 参数配置 执行测试 Spri ...

  2. php手机网站支付宝_PHP实现支付宝手机网站支付功能

    PHP实现支付宝手机网站支付功能的方法:首先开通支付宝商家中心里面的手机网站支付:然后进入开发者中心,获取到APPID:接着去文档中心下载"DEMO":最后将"demo& ...

  3. android支付宝支付微信支付封装,如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介 ...

  4. 字节跳动小程序(抖音) uniapp PHP 支付宝SDK 开发支付功能

    目录 前提条件 正文 代码流程: 详细代码 一.获取字节跳动订单 二.获取支付宝alipay_url参数 三.开始生成orderInfo 给前端吊起支付宝咯 总结哈 keke 前提条件 字节跳动: A ...

  5. android微信支付回调方法,Android接入支付宝和微信支付的方法

    前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 ...

  6. android平台安全支付服务(msp)应用开发接口,Android接入支付宝和微信支付的方法...

    前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 ...

  7. Android接入支付宝和微信支付

    前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 ...

  8. java(服务器端)调用支付宝和微信支付功能

    之前发过这篇文章,但没有排版,今天重新整理了一下 最近项目上用到了调用微信和支付宝的第三方支付接口,因为以前没用过,所以这次用到了之后总结一下分享给大家,这里介绍两种支付方式,即app支付和扫码支付方 ...

  9. php支付宝手机网站支付功能,手机网站支付如何接入支付宝简易版支付功能PHP版...

    接入支付宝准备工作:(关于账号可以是个体商户也可以是企业账号但必须有营业执照) 1.登录蚂蚁金服开放平台  2.创建应用,应用分类网页应用和移动应用.应用提交审核审核通过后得到appid才能调用相应的 ...

  10. Spring MVC+Spring+MyBatis实现支付宝扫码支付功能(图文详解)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 思海(公众号:好好学java) 链接 | blog.cs ...

最新文章

  1. python字典{:4}_Python字典101:详细的视觉介绍
  2. 电脑只有一个c盘怎么办_电脑的C盘快满了怎么办
  3. tomcat 终止端口号时 taskkill /pid 17292 /f 中/f是什么意思
  4. mysql mgr bug_Mysql MGR架构误操作引发的问题处理
  5. php laypage,layui laypage组件常见用法总结
  6. 这些年我用过的编程语言
  7. mysql修改字段结构_MySQL修改表结构及其添加删除修改字段功能
  8. Android技术专家 高焕堂 推荐这本书
  9. 台式计算机键盘快捷键怎么设置,电脑快捷键设置修改 电脑键盘快捷键怎么更改...
  10. python append 字典_Python3中使用append添加字典元素出现问题
  11. 10.26 工作学习记录 英语短文背诵 springboot 起步依赖和配置抽取 英文背诵 英语语法 及物与不及物 语法练习 设计模式 工厂方法模式
  12. 高度自适应布局 flew伸缩布局
  13. Codeforces Round #829C CF1753C Wish I Knew How to Sort
  14. 数字图像处理 直方图均衡化 MATLAB实验
  15. Unity URP 2020 设置DOTS
  16. java soap附件_Axis2用法:soap消息携带附件
  17. 根据身份证号码生成生日和性别
  18. EPS首席执行官——荣获2021年安永年度企业家提名
  19. 中国电信计算机岗待遇,中国电信的abc类员工待遇及应届生工资定级
  20. 关于element中,table中使用 overflow:hidden; white-space:nowrap; text-overflow:ellipsis; 火狐浏览器无效的问题

热门文章

  1. Freeswitch一路呼叫的生命周期
  2. 基于SNMP协议的电信网络监测系统的实现
  3. 常用的DOS功能输入输出
  4. PAT排名汇总(排序)
  5. 2.3.3 Zero Sum 和为零(DFS)
  6. sort colors 三色排序
  7. python lambda函数 与 函数式编程
  8. 【图论】Floyd算法求任意两点间最短路
  9. mysql oracle replay_Oracle 数据库重放(Database Replay)功能演示
  10. Anaconda安装opencv3.4.1.15