写在前面的话
这是我第一次在简书上发文章。 上周,我公司项目因业务需要需要接入微信支付。 我之前没有接入微信支付的经验。 经过一周的噩梦,这里总结一下如何在App端接入微信支付。 详细的步骤让新手无需动脑子就能访问成功的新手教程。
接入前准备
先不要急于编写代码。 从微信开放平台/cgi-bin/官网开始访问。
1.微信开放平台
已经建立微信平台开发者账号并添加应用的同学,如果开通了微信支付,可以跳过此步骤。
申请接入步骤及流程
为什么第一步就看这个地方呢? 因为有些公司的开发团队职责分配不明确,其中有一些任务也是由开发人员完成的。 1.照顾新手。 他们可以通过阅读一篇文章来获得这个垃圾功能。 无需再去了解如何在百度上创建平台账号等琐事。 2、让开发者直接把这张图扔到产品面前,开发:“快来微信开发,创建微信平台账号了吗?添加应用了吗?申请支付功能了吗?”。
建议这部分工作由产品专业人员来完成,无论如何不要开发。 这不是懒惰或什么的。 这里有一些步骤需要提交公司的工商证明等材料,然后进行审核。 我们的小开发者没有它们。 此外,该产品甚至无法处理这个问题。 我为什么需要你们的产品?
2.微信开放平台-开发者
如果你的产品经理告诉你他已经搞定了,你打开开放平台,登录你的账户,按照步骤进入这个界面。 如果不是下图这样,你二话不说直接锤死他! ------尼古拉斯·子路
正常申请详情
如果全部审核成功,就会有一个商户号,包括商户平台的账户密码等。我们不关心商户平台,但是我们必须知道商户号。 激活微信支付需要这两个参数。 您可以在本地配置它们。 建议让服务员退回给我们。 对于我们来说从服务器获取比较正式。 ------尼古拉斯·子路
如果是这样的话,那么恭喜你,你的产品经理不是一个无用之人,只能喊“加油666”。
绑定应用签名和包名
上面的界面是怎么来的:进入“应用详情”界面,向下滚动到底部,看到“开发信息”,点击最右侧的“修改”,这是界面后的界面跳跃。
让我告诉你如何找到你的应用程序签名和包名称:
项目在AS中的包名
1.签名稍微复杂一点。 首先下载签名生成工具并将其安装到手机上。 下载签名生成工具(如果此下载链接失败,请直接进入开放平台资源中心--->资源下载--->资源下载),然后滚动到页面底部即可看到。
2. 运行签名生成工具,在框中输入应用程序包名称,然后单击 获取签名。
签名生成工具
3、签名是根据你编译时使用的jks文件来确定的。 建议你也设置为你编译时使用的jks文件(下图)。 不必去开放平台提交版本签名,等待开发调试完成,再去开放平台更改签名。 我个人觉得有点麻烦。 当然,这是你自己的选择。
设置jks文件进行编辑
温馨提示:开放平台绑定的签名必须与手机上使用签名生成工具获取的签名一致。 当然,不要误会我的包名,否则你会等待各种BOOM。 绑定包名和签名的时候,不用关心iOS等填写什么,我们只关心我们自己。 他们填写的内容与我们无关。 我想告诉大家,这种担心是没有必要的。 ------尼古拉斯·子路
是不是很简单呢? 开发平台配置完成后,可以详细阅读官方文档。 有惊喜。 以下是代码部分的官方入口(文章讲的是集成方法,只能对还在使用的朋友表示慰问。这一件事就像电脑游戏一样,有各种超清的图形,无限地图、多人竞技等等,另一个是我小时候玩的卡牌霸王,两者不能相提并论。)
代码集成 1.添加依赖并下载demo(笔记本截图太难受,屏幕太小,截图不完整)
下载
2.打开官方支付demo
将 和 (支付回调接口)复制到自己的项目中,修改错误报告,除了复制与这两个类相关的类之外,其他的忽略。 文件目录格式应如下图所示,商户应用包名+开放平台绑定的商户应用包名。 然后将其作为支付接口,激活微信支付。 如果您有自己的支付接口,请更换它。
Tips:将copy类中使用的东西替换成自己使用的东西。 我忘记了我可以回家养猪------尼古拉斯·子路
官方演示截图
3..在xml中注册
权限和注册码可以在demo中找到
在 .xml 中注册
4.完善Copy的两大类
其中,回调类中的方法可以修改如下所示。
微信支付回调方法
支付
本课程将告诉您有关付款流程的信息。 我们先来看一下演示。
微信官方演示支付课程
1、demo中的接口地址直接返回参数,可以使用浏览器查看返回值。 实际项目中,地址是由后端接口提供的,我们还需要向服务器传递几个参数,以便其调用微信的统一点餐接口。 ,然后将订单信息发送给我们。
2. 这七个参数必须传递给我们。 请与服务器讨论详细信息并查看要求。 需要注意的是,sign参数返回给我们时必须经过两次签名。 服务端调整统一点餐接口时,需要将主签名作为参数传递给微信API。 通过微信API返回的参数进行二次签名(如下图)。 这个app不需要懂,但是如果你害怕你的服务器队友没有付款,然后没有仔细阅读文档,或者在文档中丢失,那么就等无情-1来教你如何做一个好人。
商户与支付系统交互说明
最后附上我的支付类截图
传递给服务器的参数
请求激活微信支付成功
获得七颗龙珠来召唤龙
如果微信支付难度为100,那么其中80就会返回-1。 为什么这么说呢? 见下图。
回调值列表
你知道是什么导致了这个-1吗? 没人知道! 最恶心的就是这个叫“其他异常”的东西,那为什么干过微信支付的程序员都说这个东西是垃圾呢? 竖起大拇指。 值得吐槽的地方还有很多,就不一一赘述了。
微信支付返回-1时的情况及提醒:
1、一般情况下不会有错误。 犯错误的都是一些坚持用手敲的铁头小子。
2. 正式打包发布的签名。 前面提到,开放平台绑定的签名必须与手机上使用签名生成工具获取的签名一致。 概念必须清晰。 一般情况下,发布包并运行时并不是jks文件。 ,这个可以随时使用签名生成工具apk查看,问题不大。
3、开放平台对绑定签名的任何修改立即生效。 提交后即刻生效。 那些鬼魂根本就没有必要去检讨。
4.服务器订单签名,虽然调整了统一排序,但是微信API返回给他的参数在返回给我们之前并没有进行二次签名,所以我们这里就不做处理了。 这必须报告为-1,但并未完成。 正如我之前在文章中所说,经历过这种情况的人可能不知道这一点。 服务器和应用程序都可以重新签名,但我们让服务器来做。 为什么? 因为发育鸡是最大的。
跟着我的文章走,你就不会出错了。 当然,你难免会忘记写一些东西。 如果让你落入陷阱,你可以评论回复,也可以批评我,但我先声明,我经不起批评! ------尼古拉斯·子路
终于
建议您不要在上面的代码和截图中使用ctrl+C或ctrl+V。 你可以尽可能多地打字,加深印象,帮助理解。 只有了解了、掌握了,才能达到无招必胜的境界。 上山的路有很多条,希望我们都能找到一条适合自己的路。
最后我告诉你,这篇文章你一定要读,一定要理解清楚。 如果你想成为一名优秀的程序员,你必须知道它是什么以及为什么。 我放在最后是因为我觉得连接成功后读完之后更能理解。 看看代码和流程,相信所有开发者都能明白这么简单的事情。 加油,发展是第一位的。
以上激进言论与我无关。 它们是从互联网上复制的。 18岁以下人士应在成人陪同下观看。 它们是我自己的创作。 转载时只需注明出处即可。 谢谢大家。