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

发表于:2018-1-04 15:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:YoulandaLI    来源:CSDN博客

  一、前期准备
  关于在支付宝注册应用的过程已经略过,有需要的小伙伴可以去支付宝开放平台上注册一遍即可。:)
  ●下载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文件。其实支付宝是建议将签名操作放到服务器端进行的,这样可以更好的保护我们的私钥。
  ●关于支付功能测试要注意:用户手机安装支付宝客户端和未安装客户端的情况都要测。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号