我们正尝试通过API从门户网站中创建的现有报价中订购Sydney1 DC中的BareMetal服务器 . 我们在python中使用此方法提取我们的quote容器:
container = client['Billing_Order_Quote'].getRecalculatedOrderContainer(id=quote_id)
我们不对容器中的价格ID进行任何更改 . 当我们尝试验证订单或下订单时:
result = client['Product_Order'].verifyOrder(container)
它失败并出现以下错误:
Failed to order due to error: SoftLayerAPIError(SoftLayer_Exception_Public): Price # 876 does not exist.
这是显示ID 876的容器的JSON提取:
"currentPriceFlag": "",
"hourlyRecurringFee": "0",
"id": 876,
"item": {
"activePresaleEvents": [],
"attributes": [],
"availabilityAttributes": [],
"bundle": [],
"description": "Non-RAID",
"id": 487,
"itemCategory": {
"categoryCode": "disk_controller",
"id": 11,
"name": "Disk Controller",
"quantityLimit": 0,
"questions": []
},
"itemTaxCategoryId": 166,
"keyName": "DISK_CONTROLLER_NONRAID",
"softwareDescriptionId": "",
"thirdPartyPolicyAssignments": [],
"upgradeItemId": ""
},
尝试过使用不同硬件的不同引号 . 如果我们通过门户网站使用相同的报价进行订购,那么只有API在 Non-Raid
时遇到了一些问题?同样的脚本也在一周前工作,那么对Product_Order API进行了哪些更改?报价也是在我们开始收到错误的同一天创建的新报价 .
1 回答
我所知道的控制门户使用这些方法作为报价:
http://sldn.softlayer.com/reference/services/SoftLayer_Billing_Order_Quote/verifyOrder http://sldn.softlayer.com/reference/services/SoftLayer_Billing_Order_Quote/placeOrder
因此,请尝试使用这些方法修改代码,例如
注意:将quoteId替换为引用的Id
如果问题仍然可以重现,请告诉我 .
好吧,我能够重现这个问题,我有一个问题 . 你是怎么创造报价的?你是否使用同一帐户来创建报价?由于某些原因导致您的帐户使用无效价格,因此报价出现问题 . 当您调用以下方法时,请检查是否列出了价格876:
如果您看不到列出的价格876,那就是问题,它与错误的报价创建有关 .
您可以更改有效价格的价格,以避免错误,例如
不知何故,控制门户必须在执行订单之前更改无效价格,这就是它在门户网站中工作的原因,因为正如我之前告诉您的那样,两者都使用相同的API方法进行订购 .
问候