想在自己的网站上面玩玩微信的在线支付接口,无奈注册的时候需要营业执照,只好作罢。
不甘心,想自己整一个,在这里记录一下。
自制微信在线支付接口
准备工作
一台已经ROOT好的安卓手机,我用小米4
一个自己的网站,我用阿里云的独立IP VPS,如果没有,也可以使用内网服务器搞个端口穿透,应该是一样的。网站使用python、Django、Apache搭建web服务器。
基本思路,安卓手机使用USB线连接一台主机,准备使用Linux-Debian9-32位。在Linux上面使用python脚本驱动安卓adb去轮询安卓手机通知消息。筛选出通知中的收钱包到账的消息。再使用python-urllib库告诉服务器web-Apache到账消息。服务器收到入账通知后再进行下一步处理。
实施过程
手机端测试
环境:下载安卓adb软件,win10系统USB链接手机正常,CMD下进入adb目录,执行
adb shell dumpsys notification
可以看见收钱到账的消息,前提条件成立。
接下来,在python中使用
os.popen("adb shell dumpsys notification").read()
遇到编码错误。
使用 subprocess 模块解决问题。
import subprocess
res = subprocess.Popen(cmd,stdout=subprocess.PIPE)
res_read = res.stdout.read() # 读到二进制内容
res_read.ecode() # 在进行解码
print(res.poll()) # 检查是否结束,并返回执行结果。
print(res.wait()) # 等待结束并返回执行结果
python顺利拿到微信收款信息。
cmd = adb_path + ' shell dumpsys notification'
#xx = subprocess.run(cmd,stdout=subprocess.PIPE)
while True:
sleep(1)
xx = subprocess.Popen(cmd,stdout=subprocess.PIPE)
xx = xx.stdout.read()
xxx = xx.decode()
str1 = re.findall(r'微信支付:.*',xxx)
if len(str1) > 0 :
print(str1)
接下来是付款及确认付款的基本逻辑
web服务器在付款页面显示收款二维码
用户扫描并付款
Linux系统脚本轮询安卓手机的广播消息,获得收款记录。
Linux系统脚本通过requests模块推送消息给web服务器
web服务器确认付款记录,并刷新付款页面向用户反馈付款结果
收款确认逻辑:
- 准备收款页面
- 付款完成后页面跳转(这里需要使用js做页面局部刷新,卡住了,下一篇研究)