商城项目支付需要调用支付接口
而接口有类约束接口
http://www.cnblogs.com/liujianzuo888/articles/5847569.html
这里说的接口是api ---url接口
而api不是谁都能调的。需要有身份信息 PID
1 服务商给付费商户生成唯一对应的PID,支付宝会生成url给我们
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.trade.query&app_id=1398&sign_type=RSA&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&biz_content=
{
"out_trade_no":"20150320010101001",
"trade_no":"2014112611001004680 073956707"
}
如何保证我们利用的pid做的api的安全呢?
我们根据pid加客户端的时间戳进行加密md5(pid|时间戳)得到的单向加密串,与时间戳,或者其它字段的串的url给服务端。
服务端接收到请求的url进行分析
1 客户端时间与服务端的时间戳之差如果大于规定的时间比如我们规定10s,这样就是属于过期时间。防止有人黑了url,再次请求 可以用redis
2 如果上面的时间符合,再判断列表内是否存在url,如果存在则return,这样防止有人短时间获取url再次请求,我们拒绝我们只接受第一次的
3 这样前面的两个都通过 就可以了。
测试;
restful目录
#!/usr/bin/env python
#-*- coding:utf-8 -*-import tornado.ioloop
import tornado.web
import hashlib
access_record=[
]
PID_LIST=['qwe','ioui