如何通过GoDaddy API注册域名?查询订单接口返回空结果求助
用GoDaddy API注册域名的正确姿势
嘿,你现在调用的/v1/orders是查询已有订单的接口,不是注册域名的!所以返回空订单数组完全正常(毕竟还没注册目标域名嘛)。下面给你一步步讲清楚怎么用API注册域名:
第一步:先查域名能不能注册
注册前必须确认目标域名是可注册状态,用这个GET接口查询:
curl -X GET "https://api.godaddy.com/v1/domains/available?domain=example.guru&checkType=FULL" \ -H "accept: application/json" \ -H "X-Market-Id: en-US" \ -H "Authorization: sso-key [key]:[secret]"
看响应里的available字段,值为true就说明这个域名能注册,可以放心往下走。
第二步:调用注册接口提交请求
确认域名可用后,用POST请求到/v1/domains接口完成注册,需要填全必要的信息:
curl -X POST "https://api.godaddy.com/v1/domains" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Market-Id: en-US" \ -H "Authorization: sso-key [key]:[secret]" \ -d '{ "domain": "example.guru", "period": 1, # 注册年限,一般1-10年,具体看域名后缀支持情况 "privacy": false, # 是否开启域名隐私保护 "autoRenew": true, # 是否开启自动续费 "contactRegistrant": { "addressMailing": { "address1": "123 Main St", "city": "Phoenix", "state": "AZ", "postalCode": "85001", "country": "US" }, "email": "registrant@example.com", "nameFirst": "John", "nameLast": "Doe", "phone": "+1.6025551212" # 必须带国际区号,格式要正确 }, "contactAdmin": { # 格式和注册人一致,填写管理员信息 "addressMailing": { "address1": "123 Main St", "city": "Phoenix", "state": "AZ", "postalCode": "85001", "country": "US" }, "email": "admin@example.com", "nameFirst": "John", "nameLast": "Doe", "phone": "+1.6025551212" }, "contactTech": { # 格式和注册人一致,填写技术联系人信息 "addressMailing": { "address1": "123 Main St", "city": "Phoenix", "state": "AZ", "postalCode": "85001", "country": "US" }, "email": "tech@example.com", "nameFirst": "John", "nameLast": "Doe", "phone": "+1.6025551212" } }'
几个关键提醒:
- 联系人信息是必填项,格式一定要准确,尤其是电话号码必须带国际区号(比如
+1、+86) - 如果你的账户有默认支付方式,接口会自动使用该方式扣费;需要指定支付方式的话,在请求体里添加
"paymentProfileId": "你的支付ID"即可 - 部分特殊域名后缀可能有额外资质要求,注册前最好提前确认
第三步:验证注册结果
注册成功后,再调用你之前用的/v1/orders接口,去掉不必要的时间参数,只指定域名:
curl -X GET "https://api.godaddy.com/v1/orders?domain=example.guru" \ -H "accept: application/json" \ -H "X-Market-Id: en-US" \ -H "Authorization: sso-key [key]:[secret]"
这次就能查到对应域名的注册订单数据了~
另外,你之前调用/v1/orders返回空数组,要么是还没注册这个域名,要么是你填的periodStart/periodEnd时间范围不对,调整一下参数就能正常返回啦。
内容的提问来源于stack exchange,提问作者Denis Zavyalov




