支付回调异步通知的排查及腾讯云域名解析A记录添加

支付回调异步通知的排查及腾讯云域名解析A记录添加


# 本机Nginx转发 → upstream → Java服务,全部200
curl -i http://127.0.0.1/autoPayAlipaySecondary/alipay/v3/notifyRcv
HTTP/1.1 200 ✅

curl -i -X POST http://127.0.0.1/autoPayAlipaySecondary/alipay/v3/notifyRcv
HTTP/1.1 200 ✅

curl -i http://172.16.1.254:1380/alipay/v3/notifyRcv
HTTP/1.1 200 ✅
结论:Nginx配置、upstream、Java应用全部OK,问题不在服务器内部。

服务器clb安全组需要添加微信和支付宝的允许放行的IP白名单
微信支付回调
203.205.219.128/25
121.51.30.128/25
58.251.80.0/25
183.3.234.0/25
121.51.58.128/25
140.207.54.0/25
101.226.103.0/25

支付宝回调
2400:B200::/32
45.113.40.0/22
43.227.188.0/22
203.209.224.0/19
119.42.224.0/19
110.76.48.0/20
110.76.0.0/19
110.75.224.0/19
110.75.128.0/19
103.52.196.0/22
103.47.4.0/22


外网浏览器访问 pay.mytesttest.com/autoPayAlipaySecondary/alipay/v3/notifyRcv, 不通,发现是域名解析没有解析pay

排查:
dig pay.mytesttest.com +short
# 或
nslookup pay.mytesttest.com

看返回的IP是什么:
如果返回 空​ → DNS没解析,域名根本没配
如果返回 CLB的IP(CLB.IP.addr )​ → 进CLB控制台看有没有 pay.mytesttest.com 的监听器
如果返回 其他IP​ → 可能解析到了别的机器,没转到1.180


# 看DNS解析
dig pay.mytesttest.com +short

# 看外网连通性
curl -I https://pay.mytesttest.com/autoPayAlipaySecondary/alipay/v3/notifyRcv

# 看端口
telnet pay.mytesttest.com 443


如果必须用 pay.mytesttest.com
DNSPod 添加 pay.mytesttest.com 的 A 记录 → 指向 CLB IP CLB.IP.addr
CLB 添加 HTTPS:443 监听器,域名填 pay.mytesttest.com,证书用 mytesttest.com 的通配证书
后端绑定 1.180/1.181 的 443 端口
等待 DNS 生效(5-10分钟)
验证:curl https://pay.mytesttest.com/autoPayAlipaySecondary/alipay/v3/notifyRcv

 

第一步:配置公网 DNS 解析(解决当前报错)
需要登录域名 mytesttest.com 所在的 DNS 服务商(通常是 DNSPod 或腾讯云 DNS 解析控制台):
添加一条 A 记录。
主机记录填写:pay。
记录值填写:腾讯云 CLB(负载均衡)的公网 IP(例如之前提到的 CLB.IP.addr )。
保存后,等待几分钟让 DNS 生效。可以在本地电脑用 ping pay.mytesttest.com 验证是否能解析出 IP。

第二步:在 CLB(负载均衡)上配置 HTTPS 监听器
因为接口使用的是 https 协议,且 Nginx 配置了 ssl_certificate:
进入腾讯云 CLB 控制台,找到对应的实例。
添加 HTTPS:443 监听器。
域名绑定:填写 pay.mytesttest.com。 -- 腾讯云上面没有 --
证书配置:选择 mytesttest.com 的 SSL 证书(确保证书包含 pay.mytesttest.com 这个 SAN 扩展名)。 -- 腾讯云上面没有 --
后端转发:将请求转发到后端服务器组(绑定 1.180 或 1.181 机器的 443 端口)。

 

[root@VM-1-180-centos pay]$dig pay.mytesttest.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.3 <<>> pay.mytesttest.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 34423
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;pay.mytesttest.com.            IN      A

;; AUTHORITY SECTION:
mytesttest.com.         30      IN      SOA     musician.dnspod.net. freednsadmin.dnspod.com. 1785898659 3600 180 1209600 180

;; Query time: 14 msec
;; SERVER: 183.60.83.19#53(183.60.83.19)
;; WHEN: Tue Aug 25 15:48:04 CST 2026
;; MSG SIZE  rcvd: 111

 

status: NXDOMAIN
AUTHORITY: mytesttest.com. SOA musician.dnspod.net. freednsadmin.dnspod.com.

意思就是:pay.mytesttest.com 这个主机记录在 DNSPod 里根本不存在,DNS 解析层级直接返回"域名不存在"。​
这和你浏览器报的 ERR_NAME_NOT_RESOLVED、以及之前所有"资源解析服务请求失败"是同一件事——外网请求在 DNS 阶段就死了,永远到不了 CLB/Nginx。


所有"资源解析服务请求失败 / ERR_NAME_NOT_RESOLVED"的根因只有一个:pay.mytesttest.com 在 DNSPod 没有 A/CNAME 记录(NXDOMAIN)。在 DNSPod 给 pay 加一条 A 记录指向 CLB 公网 IP,DNS 生效后外网即可到达 Nginx,内网已经验证过全链路 200,无需动 Nginx 和 Java 服务。


解决方案:
前往腾讯云 DNSPod 添加 A 记录

登录 腾讯云控制台,进入 DNSPod(云解析 DNS)​ 产品页面。
在域名列表中找到 mytesttest.com,点击进入其 解析设置。
点击 添加记录,填写以下内容:
主机记录:pay
记录类型:A
线路类型:默认(或全网默认)
记录值:填写 腾讯云 CLB 的公网 IP(例如之前提到的 (),请以实际 CLB 实例的 VIP 为准)
TTL:600(秒,为了快速生效)
保存记录。

 

posted on 2026-08-26 11:50  oktokeep  阅读(16)  评论(3)    收藏  举报