Android开发——支付宝和微信支付快速接入流程
一、Android快速实现支付宝支付
1、首先,我们需要前往支付宝开放平台,申请我们的支付功能:https://open.alipay.com/platform/home.htm

支付宝首页
这里 有两个需要注意的地方一个是管理中心,另外一个是我的支付宝
管理中心:

管理中心
我们需要创建一个应用提交给支付宝进行审核。
我的支付宝:

在这里我的支付宝是一个商户版,一会我们会需要在这里处理一下相关的密匙。
简单介绍完了,那么我们开始进入代码接入流程
一、我们需要到支付宝的sdk地址下载相关的sdk
https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.P0wrvI&treeId=54&articleId=104509&docType=1

SDK下载后长这样:

这里我们需要关注的是:客户端和OpenSSL 解压客户端里面的Android压缩包,打开看看-_-# eclipse...
不过不影响我们把它变成 studio工程

导入到 studio以后 会发现,真的没什么东西,好简单。

下面我们看看内部代码中比较重要的地方:

商户PID、收款账号、pkcs8格式的商户私钥、支付宝公钥
那么商户PID是什么?


PID在这里

收款账号:收款账号就是该支付宝账号,比如 xxxx@qq.com 等等
这里最重要的就是公钥和私钥的配置了,公钥就是支付宝所需要的密钥,私钥是我们客户端所需要的密钥。
首先我们来看看公钥如何生成。
当前页面 填写好支付宝密码和手机验证码我们会进入以下界面:

注意看里面的 RSA 加密 ,我已经添加过,所以是查看。如果没添加过这里显示添加。

好了,我们这个公钥从那里来呢?回到我们下载的SDK 目录中打开OpenSSL你会看到一个生成命令的TXT文档:

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目录


生成后我们可以通过 txt等工具打开我们的公钥

在这里我们填写的公钥是排除 -----BEGIN PUBLIC KEY-----和 -----END PUBLIC KEY-----以及制表符的,简单出来下效果

不可以有空格和和制表符号,将串码复制到刚刚我们提到的合作伙伴秘钥中。
同理:继续改造我们的私钥,将 私钥放置到我们的代码中。

配置完成了,那么另外需要注意的地方就是getOrderInfo()方法了。


见到就介绍到这里,开始集成你的支付宝吧(☆_☆)
二、Android快速实现微信支付
如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前为止最新的SDK

资源下载
不过我相信,即便你看了微信的官方文档,你依然不知道微信支付怎么集成,因为微信支付的官方文档简直太.....
如果你已经准备好了资源包,接下来正式开始集成。
我们需要的资源其实有以下几样,在开始前,就这些转备好吧
1)微信支付的APPID
2)微信支付依赖包 >>>libammsdk.jar
3)一个Activity类 >>>WXPayEntryActivity.Java
这里需要特别说明一下,这个Activity类,直接从下载到的范例代码中copy到自己的工程中即可,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,直接放图讲解:
先说一下这个类的路径,网上也有一大堆介绍了,我直接放图,路径一定,而且必须是这样的:

WXPayEntryActivity 的路径
在这个类中需要注意的地方有两个:
1、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可

回调页面的布局
2、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了,不需要把官方demo中的布局和资源都复制过来

官方的处理方式
下面是我自定义的处理方式,比较简单,就是土司显示了一下支付结果,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()

自定义的处理方式
这个类中的其余的回调方法,我们都不需要去操作
然后我们就可以开始支付了

参数列表
这是微信支付需要我们携带的参数,对于新人来说,可能比较困惑的是我怎么生成这些参数呢?其实这些参数都是服务器返回给我们的,APPID我们可以自己保存在本地一份,其余的都是服务器返回给我们的,大概介绍一下流程:

发起支付的流程,提交订单的时候的参数根据项目需要配置
最后,服务器返回给我们微信支付的参数后,我们就可以愉快的支付了,这里是关键一步,注意!!

发起支付的关键步骤
至此我们已经可以调起微信支付页面来支付了
最后还有一个需要注意的是,很多人被这一步坑了,就是关于微信开放平台签名的问题。其实只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本

微信开放平台签名
为了方便测试,我暂时填写的是我debug的签名,当然这个是可以改的,修改后会有审核期,几天就不知道,有时会很快,当应用快上线之前,记得去改为正式的签名即可,修改次数我也不知道了,可以自行百度一下!

修改签名
感谢:
http://www.jianshu.com/p/feb5923c6728
http://gold.xitu.io/entry/5718aae02e958a00688ef601
Android开发——支付宝和微信支付快速接入流程的更多相关文章
- Android 支付宝以及微信支付快速接入流程
简介 随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成! 一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:ht ...
- ThinkPHP 提供Auth 权限管理、支付宝、微信支付、阿里oss、友盟推送、融云即时通讯、云通讯短信、Email、Excel、PDF 等等
多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合好,开源供亲们参考,如 Auth 权限管理.支付宝.微信支付.阿里oss. ...
- tp5支付宝和微信支付
一.生成二维码给用户进行扫码支付 1.先在vendor目录下加入支付宝和微信支付的引用 2.付款处调用 /** * 订单支付接口 * * @api {post} {:url('order/pay')} ...
- xddpay.com 个人支付接口接入流程
作为一个独立开发者产品需要支付接口是挺麻烦的,支付宝微信都不对个人开放,注册公司维护成本太高,市面上各种收款工具要么手续费太高,要么到账很慢,体验很不好. 看到 「小叮当支付」 这个收款工具,挺有意思 ...
- Android接入支付宝和微信支付
然后把下载下来的aar包,放到项目目录下面的libs目录下,通过下面的gradle依赖进来 // 支付宝 SDK AAR 包所需的配置compile(name: 'alipaySdk-15.6.0-2 ...
- Android开发---支付宝功能接口(支付功能)(转载!)
最近在做一个关于购物商城的项目,项目里面付款这块我选的是调用支付宝的接口,因为用的人比较多. 在网上搜索了以下,有很多这方面的教程,但大部分教程过于陈旧,而且描述的过于简单.而且支付宝提供的接口一直在 ...
- .net core 支付宝,微信支付 二
源码: https://github.com/aspros-luo/Qwerty.Payment/tree/develop 今天开始微信支付 微信支付坑比较多,支付流程也不太一样,微信支付需要先生成预 ...
- .net core 支付宝,微信支付 一
源码: https://github.com/aspros-luo/Qwerty.Payment/tree/develop 支付宝支付:参考支付宝sdk及文档,https://docs.open.al ...
- NET微信公众号开发-5.0微信支付(待测试)
开发前准备. 1.0微信支付官方开发者文档 2.0官方demo下载 我们用c#所以选择.net版本 不过这个官方的demo根本跑步起来 3.0官方demo运行起来解决方案 4.0微信支付官方.net版 ...
随机推荐
- rsync 服务器配置过程
rsync的原理和相关算法不赘述,资料很多 1.准备两台机器并确保都已经安装rsync a机器:192.168.1.150 ,用作客户端测试 b机器:192.168.1.151用作server端 先介 ...
- dedecms为导航栏目添加英文标题
最近公司官网是使用 DedeCMS 做的,这个项目中要使用到为导航栏目添加英文标题,就查找资料把它实现了. 根据设计图写成静态页面后是这样的效果: 操作步骤如下: 1. 修改数据表,添加英文字段 影响 ...
- manbook pro和inode联网
macbook pro可以通过usb以太网转换器来实现有线联网. 1.下载inode 7 2.在终端中输入:sudo /library/StartupItems/iNodeAuthService/iN ...
- 消息中间件--"rocketmq"02之QuickStart
依赖 <dependency> <groupId>com.alibaba.rocketmq</groupId> <artifactId>rocketmq ...
- robotframwork的WEB功能测试(一)—切换window窗口
selenium2library提供的切换到新窗口的关键字,只有select window,而且也只能根据title.name.url去定位.如下图所示,明显在实际使用中是不够的. 所以这里总结了一下 ...
- 判断是否POST提交
if(strtolower($_SERVER['REQUEST_METHOD']) == 'post'){} //判断是否POST提交
- Android ProgressBar 进度条荧光效果
http://blog.csdn.net/ywtcy/article/details/7878289 这段时间做项目,产品需求,进度条要做一个荧光效果,类似于Android4.0 浏览器中进度条那种样 ...
- JavaScript or jQuery 获取option value值 以及文本内容的方法
1.html <div class="form-group"> <label>保险公司</label> <select class=&qu ...
- Project Euler:Problem 86 Cuboid route
A spider, S, sits in one corner of a cuboid room, measuring 6 by 5 by 3, and a fly, F, sits in the o ...
- 区别Lua模式匹配中 %a+ 与 .-
匹配单词与匹配字符 > print(string.gsub("hello!zzy","%a+","tina"))tina!tina ...