Android客户端三步完成支付宝支付SDK接入

简介: Android客户端三步完成支付宝支付SDK接入

1.下载SDK

下载地址:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1


解压并导入jar包,并Add As Library.


2.添加声明

AndroidManifest.xml文件里面添加声明(支付宝客户端调用和H5页面调用)


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


3.调用处理

在去支付的按钮点击事件里面加入下面代码

Runnable payRunnable = new Runnable() {
            @Override
            public void run() {
                //调用支付宝
                PayTask payTask = new PayTask(这里是上下文);
                String result = payTask.pay(orderBean.payUrl, true);
                Message msg = new Message();
                msg.what = SDK_PAY_FLAG;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        };
        // 必须异步调用
        Thread payThread = new Thread(payRunnable);
        payThread.start();


payTask.pay(orderBean.payUrl, true)中的orderBean.payUrl是服务器返回给我的数据,也就是支付宝需要的参数(后台封装好的,支付宝也不建议前台去搞),都在里面了,只需要拿数据去请求就行了。


第二个参数true,表示在请求支付的时候是否加入Loading的dialog


返回结果在Handler中处理

@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);
                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                    String resultStatus = payResult.getResultStatus();
                    if (TextUtils.equals(resultStatus, "9000")) {
                        MyUtil.showToast("支付成功");
                    } else {
                        // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准
                        if (TextUtils.equals(resultStatus, "8000")) {
                            MyUtil.showToast("支付结果确认中");
                        }
                        else if (TextUtils.equals(resultStatus, "6001")) {
                            MyUtil.showToast("支付取消");
                        }
                        else if (TextUtils.equals(resultStatus, "6002")) {
                            MyUtil.showToast("网络异常");
                        }
                        else if (TextUtils.equals(resultStatus, "5000")) {
                            MyUtil.showToast("重复请求");
                        }
                        else {
                            // 其他值就可以判断为支付失败
                            MyUtil.showToast("支付失败");
                        }
                    }
                    break;
                }
            }
        }
    };

 

加入上面的代码就需要一个PayResult 类去接收返回结果了(直接copy下载的sdk中的demo里面的就行)



PayResult payResult = new PayResult((String) msg.obj);如果这句报错,就是类型转换的问题,有的是String,有的是Map的,去实体类中改就好了,在类型转换的时候改也行。



所以接入支付宝SDK只需要3个步骤:


添加jar包

manifest中添加声明

加入上面两段代码和一个实体类


以上皆为Android客户端的接入




接入中遇到支付失败,code 4000,报错ALI59


按照官网的解决方案去检查了一遍,最后发现是参数格式的问题


支付宝请求参数中的订单总金额单位为元,精确到小数点后两位,如果是10.0000这样的就会报错ALI59,正确10.00


而微信支付的请求参数中的总金额单位为分,对账单中的交易金额单位是为元的。

目录
相关文章
|
1月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
Java 应用服务中间件 开发工具
如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务
如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务
|
1月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
747 0
|
1月前
|
XML API PHP
Android使用XML-RPC实现blog客户端
Android使用XML-RPC实现blog客户端
19 2
|
1月前
|
Android开发
Android WindowFeature小探究,Android客户端Web页面通用性能优化实践
Android WindowFeature小探究,Android客户端Web页面通用性能优化实践
|
8天前
|
jenkins 持续交付 开发工具
Android使用Jenkins打包自动维护sdk版本号
Android使用Jenkins打包自动维护sdk版本号
13 0
|
9天前
|
Java Linux 开发工具
由" failed to run the android sdk manager"引起的一系列问题 android
由" failed to run the android sdk manager"引起的一系列问题 android
|
16天前
|
开发工具 Android开发 Windows
Android Studio安装Unable to access Android SDK add-on list处理方法
Android Studio安装Unable to access Android SDK add-on list处理方法
18 0
|
1月前
|
开发工具 iOS开发 Perl
mac电脑升级到10.15.7含有支付宝SDK的组件更新报错:AlipaySDK.framework/AlipaySDK for architecture arm64
mac电脑升级到10.15.7含有支付宝SDK的组件更新报错:AlipaySDK.framework/AlipaySDK for architecture arm64
27 0
|
1月前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档