今天在做支付宝国际支付业务的时候,发现一个问题,也不知道是文档写的有错误还是什么的。具体的问题表现在用户付款成功后,支付宝自动跳转到商户页面,并且带有指定的参数,但这个参数里竟然没有签名,然后文档里清清楚楚地写着:
支付宝系统接收到境外商户系统发起的请求,处理成功后返回的参数中同样 包含有参数 sign、sign_type,境外商户需根据 sign_type 计算 sign 值, 最终检验支付宝系统返回的 sign 值,这里要注意的是境外商户需要对每一个返 回参数的值先进行 decode 后再验证 sign。
下面是返回的参数:
code=alipay_inter
trade_no=2015030300001000970050047256
total_fee=0.02
out_trade_no=201503037126089571
trade_status=TRADE_FINISHED
currency=USD
没有sign_type,也没有sign,这样无法验证请求的真实性,用户可以伪造自己的请求,因为其中code,total_fee,out_trade_no,currency都是之前从商户页面传给支付宝的,用户可以自行拿到,而剩下的trade_status是固定值,trade_no是支付宝生成的支付宝交易号,这个值是无法进行任何验证的,即任何值都可以。(商户这边在收到返回之前是不知道这个交易号是什么的)
打电话咨询支付宝,结果给了我个技术的咨询链接,是个网页窗口,18点了支付宝的人都下班了,只能明天再继续问问了。
根据国际版支付宝wap接口开发文档,必要的参数传递之后显示ILLEGAL_SIGN。是什么原因呢? 传递的参数https://mapi.alipay.com/gateway.do?_input_charset=utf-8¤cy=USD&format=xml&merchant_url=http%3A%2F%2Fwww.365kjg.com%2Fmobile%2F&out_trade_no=20151023953882522&partner=2088021990003561&rmb_fee=0.10&service=create_forex_trade_wap&sign_type=MD5&subject=2015102395388&v=&sign=28d1170c697d3f8e51616646fec5af4c
签名错误,计算的方法有误。
不知道你现在解决了没有~~
支付宝接口的问题,我一直很头疼~~~
这是他们自身的问题。
不懂。
难道说支付宝有漏洞可利用啦
昨天和支付宝开发人员确认过了,确实有,3.15才会新版修复此问题。
我去,天地好牛逼,走在业界前沿了……