(标题要长^_^)
刚刚把支付宝对接到了自己的WHMCS平台上。
因为只签约了担保交易、使用了CloudFlare的CDN,遇到了许多小问题(非关联),整理下发出来。
1:ILLEGAL_PARTNER_EXTERFACE
这个问题是由于只有担保交易情况下,使用了其他类型接口导致的非法合作接口问题。
我已开始收集到了双功能和即时到账接口的文件,还天真的以为可以直接用双功能,直到。。。
解决方案:使用符合签约合同权限的接口
2:支付宝付款后不发货(等待卖家发货),即使启用了接口的SSL&自动发货选项
一开始遇到这问题,我还以为是自己的接口文件有问题(PS:重新找的,不是1的那个),于是换了我之前为其他商家做对接用的接口。
然并卵,后来启用了“前台返回页面处理数据”,这样确实能自动发货了,但毕竟这样不妥,在为上个商家做对接用的是异步,也就从理论上避免了掉单。但是如果使用客户付款后就关闭页面,支付宝还没有使客户浏览器跳转到商家对接页面时,这样发货消息就不会被触发,也就掉单。
而且即使发货了,确认收货后依旧没有到账。所以,往下看。
3:支付宝付款,并确认收货后不到账(即使等了10分钟)
这个问题我最终找到了原因,是由于Cloudflare的防火墙设定,导致支付宝通知服务器无法传递支付成功消息给商家服务器。(之前为其他商户做的,是国内的CDN)
解除CDN(或其他防火墙)后恢复正常(当然!你需要等待DNS缓存刷新,这通常对于GoogleDNS只有几秒钟,但对于阿里DNS[223.5.5.5],则可能长达几小时甚至更久,我就被坑过!)
CloudFlare的防火墙提供了对于可疑IP/来源的验证码验证服务,也就是可以识别可疑IP,然后发送验证码验证,如果你通过了,即可继续15分钟/几小时或一年的网站访问。
但是CF的黑名单很全,囊括了各大VPS服务商,V#PN等,可能支付宝服务器发出的提醒请求很多,也被CF列入了黑名单。
列入黑名单后你的请求就无法抵达源站,自然无法发货/确认付款。
解决方法:禁用CDN、关闭CDN防火墙 / 把支付宝IP列入白名单
这里有个很坑的地方,CloudFlare的防火墙是无法关闭的(免费版),但是你可以设定为最低(只验证特别明显的攻击),或者加IP白名单。
还有个很坑的地方!就是无法设置白名单URL(也就是无法单独把路径加进去),隔壁的360就支持。
还有个更坑的地方,IP白名单仅支持加/16网段和/24网段的。
从搜索隐禽找到的支付宝通知服务器IP:
121.0.26.0/23
110.75.128.0/19
由于CF只认16和24,
所以需要修改为:
121.0.0.0/16(注意,第三段不是26,要修改为0)
110.75.0.0/16(注意:同上)
这样才能加入,再试试,是不是成功了?
补:等等,刚刚发现,支付宝官方也有强调。。
https://cshall.alipay.com/enterprise/help_detail.htm?help_id=477479
https://cshall.alipay.com/enterprise/help_detail.htm?help_id=491096
确认发货开发流程还提到了几个IP段(保险起见还是加上咯):
121.0.26.0/23、110.75.128.0/19、110.75.225.0/24、110.75.242.0/24
3.仍然无法自动发货&收款
关闭SSL访问。
进入WHMCS系统设置,仅指定HTTP访问方式的URL。
或者实现4 ↓
4.修改插件代码,强制指定绝对通知URL
https://github.com/frankwei98/WHMCS_Alipay/issues/2
在发issue之后,又研究了下代码,找到解决方法了。
吧php中的部分改成下面的样子就行(xxx换成自己的哦!):
$alipay_config['return_url'] = "http://xxxxx.com/modules/gateways/callback/alipay_return.php";
$alipay_config['notify_url'] = "http://xxxxx.com/modules/gateways/callback/alipay_callback.php";
这样指定http通知就可以了,试了之后瞬间可以了(新订单情况)。
指定https就不能访问,也不知道是我这的问题还是(没准是CloudFlare的HSTS没折腾好。)
具体哪行也忘了,回调页面也被我改的面目全非233(小小的美化了一下。。原来的提示太low。)
PS:上面讨论的情况是,服务器支持PHP-SSL的情况(不是说https入,是出哦),应该是基本把。
Comments | 2 条评论
某宅 博主
话说你 qq 多少 -0 -我想把你加上拉进群来愉悦的交流♂
tutugreen 博主
@某宅
[嘻嘻]1619405173