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版 ...
随机推荐
- 二值形态学——腐蚀与膨胀 及 C语言代码实现
参考文献:数字图像处理(第三版) 何东健 西安电子科技大学出版社 二值形态学中的运算对象是集合, 但实际运算中, 当涉及两个集合时并不把它们看作是互相对等的. 一般设A为图像集合, S为结构元素, 数 ...
- sed.md
SED sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用s ...
- Mysql分区表及自动创建分区Partition
Range分区表建表语句如下,其中分区键必须和id构成主键和唯一键 CREATE TABLE `test1` ( `id` char(32) COLLATE utf8mb4_unicode_ci NO ...
- BZOJ3175:[TJOI2013]攻击装置(二分图最大独立集)
Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1),(x+1,y-2), ...
- Spring(四)之Bean生命周期、BeanPost处理
一.Bean 生命周期 Spring bean的生命周期很容易理解.当bean被实例化时,可能需要执行一些初始化以使其进入可用状态.类似地,当不再需要bean并从容器中移除bean时,可能需要进行一些 ...
- RAID基本知识
RAID是英文Redundant Array of Independent Disks(独立磁盘冗余阵列),简称磁盘阵列.下面将各个级别的RAID介绍如下. 一.为什么使用Raid? 1.对磁盘高速存 ...
- mysql自增ID过大修改方法
执行sql: alter table table_name AUTO_INCREMENT=100
- css 写打印样式问题
(1)背景颜色打印不出来问题解决方法 background样式要加上 !important: color样式要加上 !important: -webkit-print-color-adjust: ...
- OC字符串处理
接到一个需求, 现有多个品牌的商品,使用字符串保存已选中的品牌,使用','隔开,可以反选. 分析问题可知: 1. 字符串由多个品牌名字组成,由 ',' 隔开. 2.如果选中的品牌不在字符串内,则拼接到 ...
- Web | Webpack快速上手
概述 Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 一般我们在开发中都是使用终端去进行安装,使用npm,关于npm ...