热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android支付宝支付的示例代码

上一篇,我们已经详细讲解了Android微信支付,今天接着为大家带来支付宝支付,支付宝支付相对微信支付要简单一些,吐槽一下,而且支付宝文档确

上一篇,我们已经详细讲解了Android微信支付,今天接着为大家带来支付宝支付,支付宝支付相对微信支付要简单一些,吐槽一下,而且支付宝文档确实比微信的文档好了不少,下面开始讲解支付流程。

1、首先给出官方文档的地址

Android集成支付宝流程

2、在开始集成和开发前,首先了解一下常用的接入方式和架构建议:


支付流程.png

在开始下一步之前,给大家看看网上的很多操作.

网上的代码.png

这一大堆代码,后面还有,百来行吧,而且支付宝Demo貌似也是这么干的,估计一些新司机就有点懵逼了,至于吗?集成一个第三方的,不应该是调用越简洁越好吗,而且还是大厂的第三方,不应该啊?所以,笔者有必要出面说明一下,那些老司机,你们弄好了,也不能这么吓唬新司机啊,说正经的,网上代码那么长,是因为他们在本地区生成的订单签名,这个订单签名也就是一个字符串,他由订单信息,支付金额,订单号,商户信息等拼接起来的

下面是APP支付请求所需的参数

APP支付请求所需的参数

App支付请求参数说明.png

然而笔者告诉你,这一大堆,你并不需要,你只要了解一下就行了。因为实际开发中几乎都是在服务器端生成支付的订单签名和订单信息,因为在后台的安全性比前端要好,在APP生成,危险性很高,如果你们后台大哥不给你弄,让你自己生成,我建议你找他喝点小酒,唠唠嗑,好好说说,他估计就同意了。所以网上那种写一大堆代码的,实际上是在本地去生成签名

接下来的事情嘛,就比较简单了,

3、清单文件做如下配置









 

4、请求自己服务器,获取订单签名字符串,然后调用支付宝SDK,发起支付请求

/**
   * 显示支付宝签名
   *
   * @param aliPayBean 自己服务器返回的订单签名字符串
   */
public void aliPayData(AliPayBean aliPayBean) {
    //支付宝支付请求所需的签名字符串
    final String orderInfo = aliPayBean.getResult().getMessage();
    Runnable payRunnable = new Runnable() {
      @Override
      public void run() {
        PayTask alipay = new PayTask(PaymentActivity.this);
        Map result = alipay.payV2(orderInfo, true);
        Log.i("msp", result.toString());

        Message msg = new Message();
        msg.what = SDK_ALI_PAY_FLAG;
        msg.obj = result;
        mHandler.sendMessage(msg);
      }
    };
    // 必须异步调用
    Thread payThread = new Thread(payRunnable);
    payThread.start();
  }

5、支付宝支付结果的回调

//支付宝返回数据handler
  @SuppressLint("HandlerLeak")
  private Handler mHandler = new Handler() {
    @SuppressWarnings("unused")
    public void handleMessage(Message msg) {
      switch (msg.what) {
        case SDK_ALI_PAY_FLAG: {
          @SuppressWarnings("unchecked")
          PayResult payResult = new PayResult((Map) msg.obj);
          /**
           对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
           */
          String resultInfo = payResult.getResult();// 同步返回需要验证的信息
          String resultStatus = payResult.getResultStatus();
          String result = "";
          // 判断resultStatus 为9000则代表支付成功
          Log.i(TAG, resultStatus);
          if (TextUtils.equals(resultStatus, "9000")) {
            //支付成功
            result = "支付成功";
            aliPaySuccess();
          } else if ("6001".equals(resultStatus)) {
            result = "您取消了支付";
          } else {
            // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
            result = "支付失败";
          }
          ToastUtils.showToast(mContext, result);
          break;
        }
      }
    }
  };

注意:这里支付成功,我只是以客户端作为标准,实际传支付结果,最好以服务端为标准,我们调用支付宝支付的时候,支付宝会有2个回调,一个是APP的回调,就是我们上面这个,9000代表支付成功,一个是支付宝服务器通知我们自己的服务器,所以,我们自己的服务器也有个回调。所以APP可以请求后台的接口来获取支付结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
author-avatar
五指间的节拍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有