Android第三方支付——支付宝APP支付

Android第三方支付——支付宝APP支付

目录

乘热打铁,今天写了一篇关于Android微信支付的文章,索性就把支付宝支付也一并写入博客,一方面就当是自己一个开发笔记,另一方面也希望能够帮助那些刚刚接触支付宝APP支付开发者们。

集成流程

  • 1.将支付宝JAR包放入工程libs下并引入到工程中。
  • 2.在Manifest文件中声明所需activity
<activity
            android:name="com.alipay.sdk.app.H5PayActivity"
     android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
</activity>
// 如果用户手机未安装支付宝APP,会调起支付宝网页去支付

<activity android:name="com.alipay.sdk.auth.AuthActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
 </activity>
 // 调起支付宝APP授权activity

3.添加权限声明

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

4.添加混淆规则

// 在应用工程的proguard-project.txt里添加以下相关规则

-libraryjars libs/alipaySDK-20150602.jar
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}

支付流程图

这里写图片描述

调起支付

获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),代码示例:

final String orderInfo = info;   // 后台返回的订单信息

        Runnable payRunnable = new Runnable() {

            @Override
            public void run() {
                PayTask alipay = new PayTask(PayActivity.this);
                Map<String, String>result = alipay.payV2(orderInfo,true);

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

获取支付结果并处理

通过调用支付时候handler发送的消息,通过回调函数获取结果。
代码示例:

private Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        PayResult payResult = new PayResult((Map<String, String>) msg.obj);
        String resultInfo = payResult.getResult();
        String resultStatus = payResult.getResultStatus();
        if(TextUtils.equals(resultStatus, "9000")) {
            // 支付成功
        } else {
            //支付失败
        }
    };
};

注意事项

支付宝支付提供了沙箱环境用于测试,正式上线必须进行正式环境的测试。
支付宝沙箱环境配置是在调用支付宝支付前进行配置:

EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值