当先锋百科网

首页 1 2 3 4 5 6 7

一、前期准备
● 下载jar包,网址:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1#s2
● 将jar包导入到项目中。
2、eclipse项目:
● 将alipaySDK-20150602.jar包放入项目的libs目录下。
● 选中jar包,右击选择“Configure Build Path”打开Java Build Path对话框,如下图。

这里写图片描述

将libs目录下的alipaySDK-20150602.jar导入,如下图。

这里写图片描述

选中Order and Export,勾选alipaySDK-20150602.jar,如下图。

这里写图片描述

AndroidStudio项目
● 将alipaySDK-20150602.jar包放入项目的libs目录下。
● 鼠标选中项目名称,按“F4”进入“Project Structure”窗口,添加jar包。如图:

这里写图片描述

二、项目集成【将签名操作放在服务器端进行】

● 在清单文件中注册H5PayActivity,并添加权限。
○ H5PayActivity这个Activity是jar包中已经存在的,当用户手机中未安装支付宝客户端时,支付会调起这个界面进行支付。

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

添加权限

<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" />

添加混淆规则,在项目的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 *;}

● 将生成的订单信息发送给后台服务器,待后台服务器将订单信息签完名后返回给我们。
● 接收到后台服务器返回的支付信息,我们需要开启支付任务【子线程中进行】,发起支付。这个支付任务支付宝已经集成在jar包中了,我们直接使用即可。如下代码:

PayTask alipay = new PayTask(MainActivity.this);

调用任务中的pay方法即可获取支付结果。pay方法需要两个参数,一个是服务器返回给我们的支付信息,另外一个是boolean值,表示是否在开启支付是显示loading对话框。如下代码:
String result = alipay.pay(payInfo, true);
得到支付结果后,我们需要通过一个handler来处理支付结果。支付结果中的结果码可以告诉我们支付状态。

这里写图片描述

● 在支付完成后,支付宝不仅给APP端返回支付结果,还会异步发送给我们的后台服务器一个支付结果。同步通知结果仅用于结果展示,入库数据需以异步通知为准。
● 值得注意的一点是,在支付宝给出的demo中将签名放在了APP端,其签名时使用的Base64文件是单独写的,而非安卓V4包中的Base64文件。其实支付宝是建议将签名操作放到服务器端进行的,这样可以更好的保护我们的私钥。
● 关于支付功能测试要注意:用户手机安装支付宝客户端和未安装客户端的情况都要测。