Android微信支付爬坑

前言:微信用户越来越庞大,微信支付已经慢慢成为人们购买东西时,不可缺少的一个环节。本文是由ywl5320授权本公众号独家发布,ywl5320的blog链接:http://blog.csdn.net/ywl5320/。话不多说,看正文

最近在做支付模块,最常用的就是微信支付和支付宝支付,其中最坑的就是微信支付了!!各种问题,官方文档也写得不详细。。。哎 不过最后还是成功的爬坑完成集成了微信支付。先附上一张支付成功的页面高兴高兴 哈哈哈:

下面就是爬坑过程

微信支付分为以下几个步骤:

1、首先要在微信开放平台注册,添加自己的APP并成功申请支付功能

2、下载微信支付的SDK并添加到自己的项目里(以上都是最基本的,问题不大)

3、现在就可以着手集成微信支付了(从下单到支付):

(1):准备好需要的资料数据,并向微信注册当前APP

首先要在微信后台配置当前APP打包key所生成的签名(微信官网有签名工具),然后还必须设置商户的key(32位,商户自己设置的),然后就是APP_ID这个是微信为每一个APP生成的,最后就是开通了支付功能的商户的ID用户我们把钱支付给商家。

然后在适当的地方注册APP(oncreate中)

(2):调用统一下单接口(https://api.mch.weixin.qq.com/pay/unifiedorder)生成订单,这一步是最容易出错的(此乃大坑)。

1、首先我们设计好所要传给微信的必要参数(OrderPayBean):

例如以下商品数据:

2、商品参数准备好了,接下来我们为之生成签名:

签名算法如下:

构造商品参数集合:

3、因为统一下单接口需要以xml格式post发送给微信,所以我们先拼接xml格式的参数:

然后是我们的异步线程请求统一下单接口:

这里从微信返回来的正确的结果为:xml格式的字符串,里面的“prepay_id”就是我们需要用在调取支付界面所要的重要参数。其中的Util.httpPost(url, str)方法可以在微信提供的demo中拷贝过来就行。(在这一步很多时候都返回的是“签名错误”,就要检查商户key是否正确,最常见的错误就是“body”字段是中文,然后post发送的时候没有转换为“iso8859-1”编码,导致签名错误。

4、通过统一下单接口成功获取到了“prepay_id”后,就可以调取支付接口了(如果是服务器生成订单,可以直接从这一步开始):

使用到的工具类方法:

其中:

这里用到了把xml转换为list的方法(用的是dom4j.jar):

5、这样就成功的调到了支付界面

这是刚开始解决中文乱码是,单独对中文转码后的结果,微信端没有转码,就成这样了。

这是body是英文的时候,能正常支付。

6、最后在微信回调页面处理支付结果:

这样微信支付爬坑结束,不容易啊。。。 哈哈哈

原文发布于微信公众号 - 何俊林(DriodDeveloper)

原文发表时间:2016-11-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开发技术

负载均衡+session共享(memcached-session-manager实现)

  本文的形成参考了很多人的博客,最多的应该是青葱岁月兄的这篇博客,大家可以先去看下,熟悉一些内容,因为本文是直接实践,一些理论性的知识就需要大家自己去补充了。

2303
来自专栏Java技术栈

彻底理解正向代理和反向代理

平时工作中我们会接触到各种代理,它到底是什么概念呢,又是什么工作原理,下面我们具体来分析一下。 1、概念 正向代理 这个很好理解,比如说你现在要访问一个外国的社...

4379
来自专栏数据订阅

通过云数据库审计解决安全和性能分析问题

企业使用数据库,可能面临如下安全风险,该类风险需要完整的事后审计和追溯机制,数据库审计能力就由此诞生。

2344
来自专栏小特工作室

WinForm中使用DDE技术(含源码)

  提起DDE技术,相信很多人不知道是啥东东,尤其是90后的程序员们。不过,有时候这个东西还是有用处的,用一句话可以总结:实现Winform程序间的通信。比如:...

19810
来自专栏FreeBuf

用某品牌随身WiFi进行钓鱼测试

本文内容仅代表作者观点且只做测试展示,目的是提醒读者注意 WiFi 联网安全,严禁将内容用于不法用途。 前言 搭建钓鱼 WiFi 来盗取账号密码已经成为一种很...

2335
来自专栏FreeBuf

基于ThinkPHP的2个CMS后台GetShell利用

0x00 前言 ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的,由于其简单易用,很多cms都基于该框架改写。然而 Thinkphp在缓存使...

4769
来自专栏JAVA烂猪皮

你完全没了解过的日志异步落库

在互联网设计架构过程中,日志异步落库,俨然已经是高并发环节中不可缺少的一环。为什么说是高并发环节中不可缺少的呢? 原因在于,如果直接用mq进行日志落库的时候,低...

1192
来自专栏程序猿

安装 VMware workstation

VMware Workstation 是 VMware 公司推出的一款桌面虚拟计算软件,具有 Windows、Linux 版本。VMware Worksta...

80612
来自专栏信安之路

用 360 随身 WiFi 钓鱼

我也是最近因为余弦大大的推荐才关注了信安之路,可以感受到他们对于信安的热爱与认真,遂想与其观望别人,不如自己也加入进来,与大家分享自己在学习上的一些东西,也希望...

1960
来自专栏伪君子的梦呓

安装和激活 VMware workstation

1924

扫码关注云+社区

领取腾讯云代金券