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

亲测可用,写给小白的Android支付宝集成(超级详细)

2016-11-02 13:01 239 查看
        首先说几句,第一次注册个人的博客,这也是第一条博客。接触Android一段时间了,当初在学校和现在在公司,都没有相关的导师指导,所以一直都是看一些相关视频或者书籍自学,但当自己真正独立开发一个完整的项目时,才发现理论上的学习很难解决很多实际开发中的问题,也踩过挺多坑。所以想给后来者提供一些问题的解决方法,以后有空我也会分享一些自己收藏改编的框架,并教会大家使用。

        回归主题,前端时间刚做过产品的支付系统,但是支付宝接口写得不太清晰,具体步骤没有一一写明,尝试用新版的支付宝接口却一直没成功,所以还是推荐用老版本的支付宝接口。文章看起来可能有点长,但是都是图片多,如果完成了第一步签约支付宝,接下来按步骤20分钟即可集成。

  

一、签约支付宝

       首先打开支付宝官网,点击我是商家用户 → 产品大全 → APP支付。这里一定要先让公司注册一个企业支付宝帐号(需要公司营业执照),并进行签约。值得注意的是说明文档应该由开发者写,包括了产品说明、资费说明、接口使用场景(可截图)还有测试帐号说明,签约后可能需要几天时间审核,这步完成不了无法继续接下来的开发。

二、获取四个数据

1.商户私钥 

2.支付宝公钥 

3.商户PID  

4.商户收款帐号

 

 首先用企业支付宝帐号登录后界面如下,点击签约管理



然后点击右下角的 下载技术集成文档(这个网页先别关闭,后面会用到)



拉到页面底部点击历史接口,然后点击移动支付(别点新版APP支付产品)



下载解压后打开依次打开  支付宝钱包支付接口开发包标准版(20161011) → DEMO → openssl → bin → openssl.exe

输入生成RSA私钥命令:genrsa -out rsa_private_key.pem 1024



接着输入将RSA私钥转换成PKCS8格式命令: pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

如下图所示,白色区域为生成的即为我们要获取的第一个数据,商户私钥,请先保存好



接着输入生成支付宝公钥命令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem



然后回到bin目录中可以rsa_public_key.pem文件



用记事本打开之后为复制中间的代码,蓝色选中部分,这就是生成的支付宝公钥





然后回到之前的签约管理页面



点击 查看PID | Key , 界面如下,再点击RSA加密后面的红色标注区域,大家那里应该是 添加密钥 ,由于我这里已经添加所以是查看密钥



把刚才复制的支付宝公钥粘贴进去,此时填入的支付宝公钥就是我们要获取的第二个数据支付宝公钥。而上图中的合作者身份(PID)则是我们要获取的第三个数据商户PID,请保管好这两个数据。



第四个商户收款帐号不用我说了吧?就是收款的支付宝帐号,可以写自己的,也可以写公司的。。。实在不会也可以写我的,哈哈,开玩笑。到了这里已经完成了一半的工作,接下来的就是项目的操作的。

三、代码上的集成

  1.依赖包的导入

        打开目录 支付宝钱包支付接口开发包标准版(20161011) \ DEMO \ 客户端demo ,解压 支付宝钱包支付接口开发包标准版(Android 15.2.2).zip,得到红圈中的文件夹



然后打开Eclipse → File → Import → Android → Existing Android Code Into Workspace → Browse导入红圈中的文件夹



导入后复制PayDemoActivity下libs文件夹中的alipaySdk-20160825.jar(如果有更高版本的依赖包也可以),然后粘贴到自己工程的libs文件夹下



然后右键自己的工程文件 → Properties → Java Build Path → Libraries选项卡 →  Add JARs...选择自己工程文件下的libs文件夹下的alipaySdk-20160825.jar,然后点击OK



然后勾选Order and Export选项卡中的alipaySdk-20160825.jar,点击OK



  2.必要权限与必要类的复制、修改

        打开工程,把底部划红线的四个类复制到自己的工程文件中。



打开AndroidManifest文件加入以下代码,注意第一个activity的name要改为你的工程中H5PayDemoActivity的位置

<!--     支付宝权限声明-->

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

<!-- 支付宝平台界面注册,com.zihangege.lovesports.zhifubao.H5PayDemoActivity替换为工程文件中H5PayDemoActivity的位置-->

        <activity

            android:name="com.zihangege.lovesports.zhifubao.H5PayDemoActivity"

            android:configChanges="orientation|keyboardHidden|navigation"

            android:exported="false"

            android:screenOrientation="behind" >

        </activity>

        <activity

            android:name="com.alipay.sdk.app.H5PayActivity"

            android:configChanges="orientation|keyboardHidden|navigation|screenSize"

            android:exported="false"

            android:screenOrientation="behind"

            android:windowSoftInputMode="adjustResize|stateHidden" >

        </activity>

然后打开PayDemoActivity.这个类,发现注释为乱码,没关系,右键PayDemoActivity工程,选择Properties,选择UTF-8的编码方式,ok



得到如下界面



复制该类中除onCreate方法外的所有代码到自己APP的支付页面中,在上图区域中填入之前得到的四个数据商户PID、商户收款帐号、商户私钥、支付宝公钥。



把代码中pay方法的参数去掉,修改后如上图。在自己APP支付按钮点击时,调用pay()方法即可。

商品信息的修改:

  在下面红色画线的地方传入三个参数,分别为商品的名称、商品的描述、商品的价格



支付成功后界面的跳转:

支付成功后界面的跳转写入下图中红色标注区域以内



最后来两张截图。





以上就是Android支付宝接口的完整接入流程。原来写博客那么累,昨天花了一个下午,今早又修改了一下,关于这篇文章有什么不清楚的地方大家可以提问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息