您的位置:首页 > 移动开发 > Android开发

对Android中集成支付宝支付流程的总结

2016-03-22 10:33 591 查看

一、前期准备

关于在支付宝注册应用的过程已经略过,有需要的小伙伴可以去支付宝开放平台上注册一遍即可。:)

下载jar包,网址:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1#s2

将jar包导入到项目中。

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文件。其实支付宝是建议将签名操作放到服务器端进行的,这样可以更好的保护我们的私钥。

关于支付功能测试要注意:用户手机安装支付宝客户端和未安装客户端的情况都要测。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  支付宝 支付 android