ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第四方支付:使用Android AccessibilityService完成个人收款服务

2021-05-11 12:29:32  阅读:342  来源: 互联网

标签:第四方 二维码 AccessibilityService 支付 服务器 Android 收款 设备


因为AccessibilityService的使用很简单,本文第一篇只讲实现微信个人收款回调服务的思路以及介绍使用到的技术。我个人认为这部分的内容对比编写一个安卓脚本更有价值。

本文仅供技术交流,切勿用于非法用户

一、 了解AccessibilityService

无障碍服务旨在帮助残疾人使用Android设备和应用程序。它们在后台运行,当系统被触发时接收系统的回调。这样的事件表示用户界面中的一些状态转换,例如,焦点已经改变,按钮被点击等。这样的服务可以可选地请求查询活动窗口的内容的能力。可访问性服务的开发需要扩展该类并实现其抽象方法。

在AccessibilityService的支持下,可以使你的安卓程序支持监听页面、页面组件和消息通知等事件并支持一系列例如点击、滑动和手势等操作。由此,我们可以通过继承AccessibilityService编写脚本。但是仅仅是操作UI层面的脚本辅助,,好处是使用场景不需要root,只需要打开一些权限即可。

一般使用场景是微信抢红包、自动点赞之类的。理论上,我们能拿到通知栏就可以实现微信收款的回调。所以本文讲了如果投入到生产环境需要考虑的设计以及方案。

二、 收款回调服务

总体的逻辑是:自动生成二维码、解析二维码上传到服务器、收到收款通知的时候回调到服务器
里面就包括了一些细节,例如:请求时传输内容的加密、设备的唯一ID、心跳机制等

这样完成的支付是有很大的局限性的。例如:在设备数量有限的情况只能支持到低并发的支付请求、对设备的正常运行完全依赖

1. 自动生成收款二维码

这个步骤主要是脚本的操作。重复输入金额生成二维码。
这里说一下个人支付的方案: 假设用户目标支付是金额5元,那么最先5元的收款码一定要保留支付时间的,正常用户支付完成了就可以释放了,如果用户放弃支付,可能在1-2分钟释放这个付款码。所以我们有两种方法:

(1) 多台设备&&多个收款账户
(2) 金额偏移

第一个方案固然是可行并且最理想的。所以我们这里讲求次方案,就是生成5元支付金额时,向前(–)或者向后(++)生成数个支付码,例如4.99、4.98、5.01、5.02。当然我更倾向于向前的。

(3)两者结合

这样并发量就是一个组合结果了,对于个人收款应该足够(如果不够,应该去申请商业支付啦)

2. 解析二维码上传到服务端

因为权限问题,在一个service里面截图是被拒绝的。

(1) DisplayManagerService

这个方案是可行的。自行了解

(2) 利用微信本身的保存收钱码功能

在这里插入图片描述
嗯…这个香

3. 收到通知回调到服务器

(1) 生成设备指纹

这个搜索(android 设备指纹)一大堆啊就不过多阐述了。主要是生成一个唯一标识去辨别设备的。

(2) 传输加密

如果明文传输也可以。
这里加密主要是为了验证消息的确来自设备,万一接口暴露了,被伪造请求,会直接造成经济损失啊。
因为设备是自己保管的,不存在被逆向然后密钥泄漏风险(如果服务器被注入我就管不着了)
这里也是用常用的CBC加密PKCS7PADDING填充
具体好像搜索(android cbc)又有答案了…

(3) 心跳机制、前台服务

因为回调服务是完全依赖设备正常运行的。但是这里比较简单只是细节问题。

(1) 轮询

开一个子线程定时请求服务器,服务器去做检测,上次心跳时差大于30s就不要使用这个设备的收钱码了,并且发出通知,然后人工处理就好了。

(1) Socket

没啥好说的,自带心跳。还可以对接函数进行云控app。有想象力的自行发挥吧。

本文介绍就到这里了,下面上个demo演示视频

视频中就是我的收款码,觉得有用的直接可以赞赏咯

<iframe allowfullscreen="true" data-mediaembed="bilibili" id="lBASdW61-1620706823489" src="https://player.bilibili.com/player.html?aid=930494608"></iframe>

使用Android AccessibilityService完成个人收款服务

标签:第四方,二维码,AccessibilityService,支付,服务器,Android,收款,设备
来源: https://blog.csdn.net/qq_39649991/article/details/116646691

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有