You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OVH API的Python脚本添加DNS Zone后未生成订单,请求排查

问题分析与修复方案

核心错误点

  • 订单ID获取逻辑错误:你在调用checkout之前就获取了cart_info,此时订单还未生成,cart_info['orders']里不会包含刚创建的订单ID。正确的做法是直接从checkout接口的返回结果中提取orderId。
  • 缺少必要的购物车预检查:OVH API建议在结算前调用购物车预览接口,确认购物车内容、价格等信息是否正确,避免结算时出现隐性错误。
  • 无异常捕获机制:未处理API请求可能出现的HTTP错误(比如权限不足、参数错误),导致失败时无法定位问题。

修正后的代码

import json
# 假设已正确初始化OVH client

try:
    # 1. 创建新购物车
    cart = client.post('/order/cart', ovhSubsidiary='PL')
    cart_id = cart.get('cartId')
    if not cart_id:
        print("创建购物车失败")
        exit()

    # 2. 设置DNS Zone参数并添加到购物车
    zone_name = 'testttt.pl'
    result = client.post(
        f'/order/cart/{cart_id}/dns',
        domain=zone_name,
        duration="P1Y",
        planCode="zone",
        pricingMode="default",
        quantity=1
    )

    if 'itemId' not in result:
        print(f"添加DNS Zone {zone_name}到购物车失败")
        exit()
    print(f'DNS zone {zone_name}已添加到购物车')

    # 3. 预览购物车(可选但推荐,确认内容和价格)
    cart_preview = client.get(f'/order/cart/{cart_id}/preview')
    print(f'购物车预览:\n{json.dumps(cart_preview, indent=4)}')

    # 4. 结算购物车
    order = client.post(
        f'/order/cart/{cart_id}/checkout',
        autoPayWithPreferredPaymentMethod=True
    )
    order_id = order.get('orderId')
    if not order_id:
        print("提交订单失败")
        exit()
    print(f'订单 {order_id} 已提交')

    # 5. 查询订单状态
    order_status = client.get(f'/me/order/{order_id}/status')
    print(f'订单 {order_id} 状态: {order_status}')

except Exception as e:
    print(f'API请求出错: {str(e)}')

额外注意事项

  • 确保你的OVH API密钥拥有order和dns相关的权限。
  • 检查zone_name是否符合OVH的域名规则,且未被占用。
  • 如果autoPayWithPreferredPaymentMethod=True失败,可尝试手动选择支付方式,调用/order/cart/{cartId}/paymentMethod接口查看可用支付方式后再结算。

内容的提问来源于stack exchange,提问作者sphtd97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:20:18