这是一个比较简陋的工具,起码,暂时来说,比较简陋,但是功能确实实在的。
写在最前
虽然很少上 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
的有效期并不长,因此请尽快复制到程序上并且运行程序。