Android 支付宝以及微信支付快速接入流程
简介:
随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成!
1、首先,我们需要前往支付宝开放平台,申请我们的支付功能:https://open.alipay.com/platform/home.htm
![](https://img.haomeiwen.com/i1642207/56cdd5af6adf1414.png)
支付宝首页
这里 有两个需要注意的地方 一个是管理中心,另外一个是我的支付宝
管理中心:
![](http://upload-images.jianshu.io/upload_images/1642207-f489a066311d20d4.png)
管理中心
管理中心 我们需要 创建一个应用 提交给支付宝进行审核。
我的支付宝:
![](http://upload-images.jianshu.io/upload_images/1642207-80a4576667b639b9.png)
在这里我的支付宝 是一个商户版,一会我们会需要在这里处理一下相关的 密匙
简单介绍完了,那么我们开始进入代码接入流程
一、我们需要到支付宝的sdk地址下载相关的sdk,这个不用我介绍吧
https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.P0wrvI&treeId=54&articleId=104509&docType=1
![](http://upload-images.jianshu.io/upload_images/1642207-cd50deb5c639d4ff.png)
SDK下载后 长这样哦:
![](http://upload-images.jianshu.io/upload_images/1642207-8daf7fd6cf6b7940.png)
这里我们需要关注的是:客户端和OpenSSL 解压客户端里面的 Android压缩包 打开看看-_-# eclipse...
不过不影响我们把它变成 studio工程
![](http://upload-images.jianshu.io/upload_images/1642207-c66a90b6bae96f3a.png)
导入到 studio以后 会发现,真的没什么东西,好简单。
![](http://upload-images.jianshu.io/upload_images/1642207-97f84f61d8cb5d7b.png)
下面我们看看内部代码中比较重要的地方:
![](http://upload-images.jianshu.io/upload_images/1642207-061702ce6085f5ca.png)
商户ID、收款账号、pkcs8的私钥、公钥:这里 公钥可不填
那么商户是什么?
![](http://upload-images.jianshu.io/upload_images/1642207-959c6d82cea458bd.png)
![](http://upload-images.jianshu.io/upload_images/1642207-f03cc498ffb03b14.png)
PID在这里
![](http://upload-images.jianshu.io/upload_images/1642207-7f9707a3f9333cbc.png)
收款账号:收款账号就是该支付宝账号,比如 xxxx@qq.com 等等
这里最重要的就是公钥 和 私钥 的配置了 ,公钥 就是支付宝 所需要的密钥,私钥是我们客户端所需要的密钥。首先我们来看看 公钥如何生成。
当前页面 填写好支付宝密码 和 手机验证码我们会进入以下界面:
![](http://upload-images.jianshu.io/upload_images/1642207-2b4dc1e394a5a563.png)
注意看 里面的 RSA 加密 ,我已经添加过 所以是查看 如果没添加过 那么这里显示的是添加
![](http://upload-images.jianshu.io/upload_images/1642207-0e42d038609a29c2.png)
好了 我们这个公钥 从那里来呢?回到我们下载的SDK 目录中 打开 OpenSSL 你会看到一个 生成命令的 TXT文档:
![](http://upload-images.jianshu.io/upload_images/1642207-1a7179deaa503422.png)
RSA密钥生成命令
生成RSA私钥
openssl>genrsa -out rsa_private_key.pem 1024
生成RSA公钥
openssl>rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
将RSA私钥转换成PKCS8格式
openssl>pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
注意:“>”符号后面的才是需要输入的命令。
如果在mac下 那么 可以直接使用 openssl 如果是win 下 那么 需要 openssl路径下找到bin文件夹进入以后双击 openssl.exe 就ok了
首先进入 openssl目录
![](http://upload-images.jianshu.io/upload_images/1642207-cfd2dfe25cd49599.png)
![](http://upload-images.jianshu.io/upload_images/1642207-bbbe79fe56e1fb33.png)
生成后 我们可以通过 txt等工具 打开我们的 公钥
![](http://upload-images.jianshu.io/upload_images/1642207-37cd4056f9898064.png)
在这里 我们填写到支付宝的公钥 是 排除 -----BEGIN PUBLIC KEY-----和 -----END PUBLIC KEY-----以及制表符的 我们简单出来下效果
![](http://upload-images.jianshu.io/upload_images/1642207-806d66ab956419ee.png)
不可以有空格和和制表符号 将串嘛 复制到 刚刚我们提到的 合作伙伴秘钥中。
同理:继续改造我们的 私钥 将 私钥 放置到我们的 代码中。
![](http://upload-images.jianshu.io/upload_images/1642207-21fe8a9d6c081f68.png)
配置完成了 ,那么另外需要注意的地方 就是 getOrderInfo()方法了
![](http://upload-images.jianshu.io/upload_images/1642207-2a9a5a8dbfdf94cc.png)
![](http://upload-images.jianshu.io/upload_images/1642207-6ec59050e2b82706.png)
见到就介绍到这里,开始集成你的支付宝吧(☆_☆)
感谢 帅气的欧巴(简书作者)
原文链接:http://www.jianshu.com/p/feb5923c6728
二、Android快速实现微信支付
本文为Marno原创,转载请说明
转载地址(http://www.jianshu.com/p/c97639279d2e)
如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前为止最新的SDK
![](http://upload-images.jianshu.io/upload_images/960283-c7fbcf773523afdf.png)
资源下载
不过我相信,即便你看了微信的官方文档,你依然不知道微信支付怎么集成,因为微信支付的官方文档简直太.....
如果你已经准备好了资源包,接下来正式开始集成
我们需要的资源其实有以下几样,在开始前,就这些转备好吧
1)微信支付的APPID
2)微信支付依赖包 >>>libammsdk.jar
3)一个Activity类 >>>WXPayEntryActivity.java
这里需要特别说明一下,这个Activity类,直接从上下载到的范例代码中copy到自己的工程中即可,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,直接放图讲解:
先说一下这个类的路径,网上也有一大堆介绍了,我直接放图,路径一定,而且必须是这样的:
![](http://upload-images.jianshu.io/upload_images/960283-417214d32f9d1b32.png)
WXPayEntryActivity 的路径
在这个类中需要注意的地方有两个:
1、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可
![](http://upload-images.jianshu.io/upload_images/960283-4b5a9868802716d7.png)
回调页面的布局
2、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了,不需要把官方demo中的布局和资源都复制过来
![](http://upload-images.jianshu.io/upload_images/960283-821e621def59f7fc.png)
官方的处理方式
下面是我自定义的处理方式,比较简单,就是土司显示了一下支付结果,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()
![](http://upload-images.jianshu.io/upload_images/960283-744756e658fdd6be.png)
自定义的处理方式
这个类中的其余的回调方法,我们都不需要去操作
然后我们就可以开始支付了,支付很简单,真的很简单
![](http://upload-images.jianshu.io/upload_images/960283-9a0659635cd06d3a.png)
参数列表
这是微信支付需要我们携带的参数,对于新人来说,可能比较困惑的是我怎么生成这些参数呢?其实这些参数都是服务器返回给我们的,APPID我们可以自己保存在本地一份,其余的都是服务器返回给我们的,大概介绍一下流程:
![](http://upload-images.jianshu.io/upload_images/960283-7d4e155e5b2aa9b5.png)
发起支付的流程,提交订单的时候的参数根据项目需要配置
最后,服务器返回给我们微信支付的参数后,我们就可以愉快的支付了,这里是关键一步,注意!!
![](http://upload-images.jianshu.io/upload_images/960283-4d11cdfbe6b13049.png)
发起支付的关键步骤
至此我们已经可以调起微信支付页面来支付了
最后还有一个需要注意的是,很多人被这一步坑了,就是关于微信开放平台签名的问题。其实只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本
![](http://upload-images.jianshu.io/upload_images/960283-cea711cbbe1c5a7e.png)
微信开放平台签名
为了方便测试,我暂时填写的是我debug的签名,当然这个是可以改的,修改后会有审核期,几天就不知道,有时会很快,当应用快上线之前,记得去改为正式的签名即可,修改次数我也不知道了,可以自行百度一下!
![](http://upload-images.jianshu.io/upload_images/960283-dd38b1777bf6e9e5.png)
修改签名