0x00 前言
今天2点钟更新了一下SCDN的安全规则,结果发现在进行支付测试的时候无法实现正常的异步支付回调,并且后续订单的自动查询也是存在问题,如下图所示:
0x01 排查
首先我看了下(WPCOM Member Pro)插件的代码,想看看它的订单查询方式是什么,这里我用的是虎皮椒支付。最开始我以为他的支付是单独写的逻辑,全局「query.html」结果什么都没找到,最后还是在支付文档中查找到:
付款成功回调通知
用户付款成功后,我们会向您在发起付款接口传入的notify_url网址发送通知。您的服务器只要返回内容:success,就表示回调已收到。如果返回内容不是success,我们会再尝试回调6次。
这种由支付服务商提供的付款回调虽好,但是放在如今,几乎每个网站都有那么些简单的防御措施。如果站长没有放行相关接口或者加白虎皮椒的服务器IP,那肯定是通知不了的。
虎皮椒同时也提供了订单查询接口,我们的「ForgeRomms」也将使用这种方法来进行支付回调。后续给WPCOM客服反馈下,让他们后续版本支持一下。
通过查询相关日志,我拿到了虎皮椒的通知服务器IP和相关的通知路径:
路径关键词:payment-notify
加白服务器IP或者这个路径都行,不过如果你想要极致的安全,就加白这个IP就行了,或者问下虎皮椒的客服,我是因为这么晚了客服可能不在所以就直接自己处理。
0x02 解决办法
在WAF规则中增加一下判断条件,IP、路径和Referer均满足即放行这个请求即可
在看下修改后的异步通知数据是否正常传入:
[2025-01-21 03:23:17][wxpay-xunhu]: #虎皮椒异步通知数据:{"trade_order_id":"","total_fee":"1.00","transaction_id":"","open_order_id":"2027036***","order_title":"Eswlnk Blog #*********","status":"OD","plugins":"wpcom-member-pro","nonce_str":"","time":"1737400996","appid":"","hash":""}
[2025-01-21 03:23:17][wxpay-xunhu]: #2025012103230880517 异步通知验证成功:OD;虎皮椒订单:2027036***
OK,支付正常回调,并且回显正常,收工!
所有的努力,不是为了让别人觉得你了不起,而是为了能让自己打心眼里看得起自己
@Eswlnk 😊😊😊表情符号支持