Python 支付宝免签工具发布

这是一个比较简陋的工具,起码,暂时来说,比较简陋,但是功能确实实在的。

写在最前

虽然很少上 Hostloc ,但是我对于现在各位所玩的各种玩意也是比较熟悉的。

我在论坛看到很多关于支付宝免签的工具,不负责任的说,其中的绝大多数都是由易语言等等来进行开发的,因此这些程序的运行环境都是需要 Windows 的服务器或者其他 Windows 的挂机宝,这也给各位站长带来了极大的不变,不过这也催生了 2 欧之类廉价独立服务器的市场(因为可以装 Windows)。

现在各位站长基本上都是人手一台 VPS 的了,Python 几乎是每台机子的必备,那么何不写一个 Python 版的支付宝免签工具呢?

于是,本品诞生了。

一点小坑

在分析支付宝交易记录的时候,我就感受到了深深的恶意。

也许看图片没有什么感觉,我就文字表达一下,支付宝在几乎每个文字的最前面,都加上了好多好多的制表符以及换行符,这最终导致了我需要用到 i.string[13:-8] 类似这样坑爹的形式来提取信息。幸运的是,他们的数量都是一样的,因此这个问题也很快就弄好了。

其他,也没觉得什么坑,关于 bs4 ,RTFM 就好了。

使用教程

由于我只写了一个支付宝交易记录的监控提示工具,因此与站点进行对接的 API 或者说是插件就需要你们自己去写了。

如果仅仅是想进行测试的,可以使用 RequestBin

下面我将带领你们进行使用配置

获取代码

我的代码均存放在 Github 上,项目地址:https://github.com/imlonghao/python-alipay-tool

因此可能需要你下载你的服务器环境中安装 git ,如果没有,可以执行下面的语句进行安装。

apt-get install git  (Debian/Ubuntu)
yum install git  (CentOS)

git 安装好后我们就可以获取代码了。

git clone https://github.com/imlonghao/python-alipay-tool.git

配置环境

程序使用到了几个非自带的库,因此需要我们通过 pip 进行安装。 pip 的安装如下(仅提供 Debian / Ubuntu ,CentOS 用户自行琢磨)

apt-get install python-pip

然后我们进入目录开始配置环境

cd python-alipay-tool
pip install -r requirements.txt

如果不出意外的话,环境现在就已经是配置好了。

当然,如果有问题的话,你们可以回帖进行咨询,可能需要一个 Disqus 的帐号。

获取 ALIPAYJSESSIONID

经过我的研究,只需要一个 ALIPAYJSESSIONID 就可以获取到账户的交易记录。

打开我们自己的浏览器,打开支付宝的官方网站,输入自己的帐号并且成功登录,这时候我们就有了一个 ALIPAYJSESSIONID 的值在我们的 Cookies 中了。

按 F12 进入开发人员工具(或者叫审查元素),选择 Resource ,然后选择 Cookies ,然后选择域名。

一般来说 ALIPAYJSESSIONID 会在第一个,双击 ALIPAYJSESSIONID 的值,然后 Ctrl+C 进行复制。

在这里例子中,12ez034551231236p7111231232Z00R 就是我们的 ALIPAYJSESSIONID 了。

配置程序

进入主目录后,我们可以清楚的看到 alipay.py 就是我们的主程序,你可以使用 vim 或者 nano 来进行编辑,这全取决与你的喜爱。

vim alipay.py

将我们在上面获取到的 ALIPAYJSESSIONID 填写在后面的引号中,接着设置好我们的 API 通信地址,用来和你的服务器进行交互,然后设置好 KEY ,当然你也可以不设置,只要你确保你的 API 的安全的别人不知道的。

设置好后,7-10 行大概就是这样的。

cookies = {'ALIPAYJSESSIONID': '12ez03455440s2ZwjS76p7112v05GEaUOuth12Z00R'}
url = 'https://lab.alipay.com/consume/record/items.htm'
api = 'https://imlonghao.com/api/v1'
key = '215v9b42yv7y97v1'

然后按 :wq 保存

运行程序

相信这一步不需要多说了,我相信你们由很多种方式可以运行起来的。

程序说明

生成订单

订单的生成和大多数现成的一样,都是采用支付宝的生活支付里面的转款到支付宝,可以采用如下表单或者类似的东西。

<form action='https://shenghuo.alipay.com/send/payment/fill.htm' method='post' accept-charset='gb2312' onsubmit="document.charset='gb2312'">
<input name='optEmail' type='hidden' value='[收款人 Email]'>
<input name='payAmount' type='hidden' value='[金额]'>
<input name='title' type='hidden' value='[订单号]'>
<input name='memo' type='hidden' value='请勿修改付款说明,付款后系统自动到账'>
</form>

结果回调

结果的回调会使用 POST 的方式向 API 地址发出信息,默认以 KEY 来核对身份。

向 API 发送的内容参考 alipay.py 中 44-48 行的内容

key :为用户设置的密钥

ddh :为支付宝生成的订单号

time : 为交易时间,整数时间戳

name :如果用户不改变的话即为您的程序所生成的订单号,在生活支付中为支付说明

money :金额,请在 API 中核对支付的金额何所需要支付的金额是否正确

以上 5 个项目的名字均是可以改变的,您只需要修改一下程序中的相关参数即可!

写在最后

我相信我的这个工具还是由很多的不足的,首先欢迎各位在 Github 上给我提交 PR。

如果各位围观群众有比较好的,关于程序上面的需求的话,例如掉线通知什么的,欢迎在 issues 上给我提交,我会优先处理 issues 上面的东西。

另外需要注意的是,ALIPAYJSESSIONID 的有效期并不长,因此请尽快复制到程序上并且运行程序。