注释:
要继承微信支付和支付宝功能,必须要有以下配置信息,微信支付和支付宝支付申请的秘钥等提供给开发者(当然也可以自己去申请),将配置信息放在静态类中,已被统一使用(安全考虑,微信支付宝推荐这些数据放在服务其中)
1.支付宝集成前提条件
(1)商户应该在b.alipay.com上产品签约
(2)BSA生成私钥及公钥的生成
生成方式一:生成的方式可以选择支付宝提供的一键只生成工具
生成方式二:也可以使用OpenSSL工具命令生成(首先进入openSSL工具,再输入生成命令,即可生成公钥和私钥)
(3)上传BSA公钥,在支付宝上进行签名验证(公钥是 一行格式,其中不能有注释,空格,换行等)
(4)接口调用
支付宝上下载的alipaySDK的jar包,放在libs文件夹下,然后进行Build Path(构建)
(5)然后进行代码配置商家订单信息等
2.配置Manifest文件配置信息

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

activity配置这里必须要这么配置

android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >

2.根据支付的方式调用支付宝的类
AlipayUtil.java

public class AlipayUtil {private Activity context;private OrderInfo order;private Handler mhandler;private static final int SDK_PAY_FLAG = 1;public AlipayUtil(Activity context, OrderInfo order,Handler mhandler) {this.context=context;this.order=order;this.mhandler=mhandler;pay();}private void pay() {//判断是否注册商户到支付宝if (TextUtils.isEmpty(ParameterConfig.PARTNER) || TextUtils.isEmpty(ParameterConfig.RSA_PRIVATE) || TextUtils.isEmpty(ParameterConfig.SELLER)) {new AlertDialog.Builder(context).setTitle("警告").setMessage("需要配置PARTNER | RSA_PRIVATE| SELLER\n请到ParameterConfig.java里配置").setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialoginterface, int i) {//((Activity)context).finish();}}).show();return;}String orderInfo = getOrderInfo(order);/*** 特别注意,这里的签名逻辑需要放在服务端,切勿将私钥泄露在代码中!*/String sign = sign(orderInfo);try {/*** 仅需对sign 做URL编码*/sign = URLEncoder.encode(sign, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}/*** 完整的符合支付宝参数规范的订单信息*/final String payInfo = orderInfo + "&sign=\"" + sign + "\"&" + getSignType();Runnable payRunnable = new Runnable() {@Overridepublic void run() {// 构造PayTask 对象PayTask alipay = new PayTask(context);// 调用支付接口,获取支付结果String result = alipay.pay(payInfo, true);Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};// 必须异步调用Thread payThread = new Thread(payRunnable);payThread.start();}@SuppressLint("HandlerLeak")private Handler mHandler = new Handler() {@SuppressWarnings("unused")public void handleMessage(Message msg) {switch (msg.what) {case SDK_PAY_FLAG: {PayResult payResult = new PayResult((String) msg.obj);/*** 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&* docType=1) 建议商户依赖异步通知*/String resultInfo = payResult.getResult();// 同步返回需要验证的信息String resultStatus = payResult.getResultStatus();// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档if (TextUtils.equals(resultStatus, "9000")) {mhandler.sendEmptyMessage(9000);//Toast.makeText(context, "支付成功", Toast.LENGTH_SHORT).show();} else {// 判断resultStatus 为非"9000"则代表可能支付失败// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)if (TextUtils.equals(resultStatus, "8000")) {Toast.makeText(context, "支付结果确认中", Toast.LENGTH_SHORT).show();} else {// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误Toast.makeText(context, "支付宝支付失败", Toast.LENGTH_SHORT).show();}mhandler.sendEmptyMessage(8000);}break;}default:break;}};};/*** create the order info. 创建订单信息* */private String getOrderInfo(OrderInfo order) {// 签约合作者身份IDString orderInfo = "partner=" + "\"" + ParameterConfig.PARTNER + "\"";// 签约卖家支付宝账号orderInfo += "&seller_id=" + "\"" +ParameterConfig.SELLER + "\"";// 商户网站唯一订单号orderInfo += "&out_trade_no=" + "\"" + order.outtradeno + "\"";// 商品名称orderInfo += "&subject=" + "\"" + order.productname + "\"";// 商品详情orderInfo += "&body=" + "\"" + order.desccontext + "\"";// 商品金额orderInfo += "&total_fee=" + "\"" +  order.totalamount + "\"";// 服务器异步通知页面路径orderInfo += "¬ify_url=" + "\"" + ParameterConfig.aliPay_notifyURL + "\"";// 服务接口名称, 固定值orderInfo += "&service=\"mobile.securitypay.pay\"";// 支付类型, 固定值orderInfo += "&payment_type=\"1\"";// 参数编码, 固定值orderInfo += "&_input_charset=\"utf-8\"";// 设置未付款交易的超时时间// 默认30分钟,一旦超时,该笔交易就会自动被关闭。// 取值范围:1m~15d。// m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。// 该参数数值不接受小数点,如1.5h,可转换为90m。orderInfo += "&it_b_pay=\"30m\"";// extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付// orderInfo += "&extern_token=" + "\"" + extern_token + "\"";// 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空orderInfo += "&return_url=\"m.alipay.com\"";// 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)// orderInfo += "&paymethod=\"expressGateway\"";return orderInfo;}/*** sign the order info. 对订单信息进行签名* * @param content*            待签名订单信息*/private String sign(String content) {return SignUtils.sign(content, ParameterConfig.RSA_PRIVATE);}/*** get the sign type we use. 获取签名方式* */private String getSignType() {return "sign_type=\"RSA\"";}
}

3.注意事项
(1)返回码:
9000 订单支付成功
8000 正在处理中
4000 订单支付失败
6001 用户中途取消
6002 网络连接错误
(2)
签名注意:商户在接入的过程中,对于订单的行为需要发生在服务器端
通知地址:通知的地址建议走Https,确保商户的信息不外泄
测试场景:安装支付宝,或者没有安装支付宝,确保两种模式都能安装成功。

更多资源源码下载:
不一样的RecyclerView优雅实现复杂列表布局
android自定义视频播放器
MediaPlayer和SurfaceView的结合使用
FloatingActionButton的使用
多层Fragment与ViewPager结合使用

Android 集成支付宝支付相关推荐

  1. android如何实现支付宝,(Android集成支付宝支付)react-native实现支付宝支付

    网上关于RN的支付宝支付组件大部分都是IOS的,Android要实现支付宝支付只剩下走原生这一步了. 整体思路: 1.在蚂蚁金服开放平台申请应用 2.在android原生集成支付宝 3.封装andro ...

  2. Android 集成支付宝支付,支付宝支付2.0

    成功起调支付宝支付 下载支付sdk复制到libs文件夹下并add  as library:https://docs.open.alipay.com/54/104509 1.首先申请支付宝 企业账户  ...

  3. Android集成支付宝支付

    2019独角兽企业重金招聘Python工程师标准>>> 相比微信支付,支付宝支付简单了许多,它的交互过程如图: 首先导入jar包:alipaySdk-20161222.jar,可以去 ...

  4. Android集成支付宝支付SDK,实现支付功能

    官方集成文档地址:https://docs.open.alipay.com/204/105296/ 一.导入支付宝SDK 1.将 alipaySdk-15.6.5-20190718211159.aar ...

  5. Android端集成支付宝支付

    Android端集成支付宝支付 1.申请账号及配置变量 支付宝快速接入链接点击打开链接 支付宝扫码或者账号密码登录 下面是支付宝给出的接入介绍 第一步:创建应用并获取APPID 要在您的应用中接入支付 ...

  6. Android 集成微信支付和支付宝支付工具类

    Android 集成微信支付和支付宝支付工具类 1.前言 去年年底接了一个商城app 外包项目,里面尼涉及到 微信和支付宝支付,这里我整理出几个工具类,下面就和大家分享一下,废话不多说,下面我一步一步 ...

  7. Android集成微信支付

    Android集成微信支付 项目中集成第三方支付的功能,基本是我们app中经常用到的功能.今天先给大家讲一下微信支付的集成过程,重点只说一下代码部分.首先,你要到微信开发者平台注册账号,并创建你的应用 ...

  8. Android集成银联支付最新版3.8.5(银联真NM坑)

    Android集成银联支付(银联真N&M坑) 1.这是银联Android 开发包的下载地址开发包下载地址 2.下载完里面的内容是这样的 3.其实调起来银联支付(云闪付),就一句代码,其他的都是 ...

  9. Android集成Nets支付

    关于Android集成Nets支付 最近做了一个跨境物流方面的项目,涉及到了很多国内不常使用的库,如Here地图,还有就是今天要总结的Nets支付了.国外的支付有很多,至于为什么选择用Nets支付,用 ...

  10. Android 仿支付宝支付密码输入框的具体实现

    Android仿支付宝支付密码框 前言 1. 设计思路 2. 项目地址和implementation使用方法 3. 涉及到的内容 4. 设计流程 4.1 Layout 4.2 GridView和Ada ...

最新文章

  1. php点击字切换验证码,PHP生成图片验证码、点击切换实例 Web程序 - 贪吃蛇学院-专业IT技术平台...
  2. 百联OJ:2723:不吉利日期
  3. vscode运行conda出现 “无法加载文件C:\Users\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本” 的错误
  4. 求二进制数中1的个数(转)
  5. Linux用户对System76的Darter Pro笔记本电脑的评论
  6. orm2 中文文档 3. 定义模型
  7. Java中二维数组和面向对象
  8. 度量相似性数学建模_数学之美读书笔记
  9. 如何批量登陆远程主机和配置【转】
  10. 复杂对象ibatis插入,属性为list,怎么一次性插入
  11. nginx reload报错 ---nginx: [alert] kill(1668, 1) failed (3: No such process)
  12. dism++封装系统使用教程_【原创】最新WIN10系统封装教程2019系列(一)——定制母盘...
  13. web开发中实现页面记忆的几种方式
  14. QQ空间欢迎动画代码大全
  15. 这有10款好玩游戏,游戏迷速来围观
  16. 免费视频存储平台(微云、百度网盘、谷歌硬盘、酷播云)的截图对比
  17. Python-数据库
  18. 旅行社旅游APP开发维护经验
  19. 微信小程序python token验证_微信小程序登录对接Django后端实现JWT方式验证登录
  20. 计算机的音乐数字要全是数字,数字中的音乐

热门文章

  1. CAT分布式监控系统(一):CAT功能介绍 CAT监控系统是什么、能做什么?
  2. 利率掉期(利率互换)的解释
  3. 【C++】【记录自己的自学过程】用string简单的写一个拼字小游戏,只需要掌握string find方法即可。
  4. 从草根到百万年薪程序员的十年风雨之路,小白也能看明白
  5. 基因重组-冲刺日志(第一天)
  6. AI燃到爆!中关村人工智能产业论坛十位大咖演讲干货
  7. 江苏小高考计算机知识点,江苏文科小高考哪几门 考试内容是什么
  8. 腾讯是如何一刀刀,在15年间干死那些竞争对手的?! (zz)
  9. Could not initialize class com.android.build.gradle.internal.VariantManager解决方案
  10. 美团2015校园招聘笔试题