Steamworks 文献库
TradeSetOwned/v0001
当 Steam 经济体服务器需要将之前设置为无主的资产或货币区块转移到一个用户的库存中时,需要调用此 API。 由资产服务器验证对此资产或币种进行的更改是否符合规定。 需要检查资产确实无主,资产或货币可以交易,并确实存在所请求的数量。

对于可堆栈的资产与货币,此请求可能提供少于最初设置的无主数量。 这种情况下,无主资产或货币的数量应该减少,且需创建新资产。

如果您有一个能在社区市场上架的可堆栈物品时,便会出现这种情况。 例如,如果有人通过单次上架将大量物品放入市场,那么可能会出现多次少量购买。

当上架物品创建时,资产服务器将收到一次 TradeSetUnowned 调用,然后每次购买将有一次 TradeSetOwned 调用。 如果市场上架物品第一次购买,那么 TradeSetOwned 调用中的 audit_reference 值将与 TradeSetUnowned 调用中的 audit_reference 值一致。 接下来对该上架物品的各次购买均将为 audit_reference 提供不同的值,但仍引用相同的 assetid。 如果上架被取消,所导致的 TradeSetOwned 调用中的 audit_reference 值将不会是之前任何其他 TradeSetOwned 调用所用过的值,因此不保证与物品上架创建时在 TradeSetUnowned 调用中使用的值一样。

调用方: 交易系统

HTTP 方法: POST

参数:

名称类型是否必需描述
keystring这是在合作伙伴网站上,您在自己应用的 Steam 经济体设置中提供的“资产服务器密钥”。
appiduint32与资产相关联的应用程序的 32 位 App ID。
owneruint64资产或货币的新所有者的 64 位 Steam ID。
contextiduint64资产或货币所在的上下文的 64 位 ID。
assetiduint64要转移的 64 位资产 ID。 assetid 或 currencyid 将表示哪种对象应设置为有主。
currencyiduint32要移除的货币的 32 位 ID。 将用 assetid 或 currencyid 表示哪种对象应设置为有主。
amountuint32要转移的资产或货币的数量。 对于不可堆栈资产,此数字应始终为 1。
此数字将总小于或等于 Steam 经济体服务器认为此资产或货币在此上下文中所存在的量。 默认为 1。
trade_start_timeuint32此操作的交易会话的开始时间,表示为从 1970 年 1 月 1 日起的秒数。
audit_actionuint32一个 32 位数字,指明哪种操作导致此资产或货币设置为有主。
audit_referenceuint64一个 64 位数字,指明操作与哪个事件关联。 资产服务器也许希望记录此数字,用于审核与调试。
leave_originalbool如果此布尔参数设置为 1(表示 true),那么资产服务器正在被要求复制物品并创建新有主物品,作为指明资产的副本。 只有客服对交易单方撤销时才为 true。 默认为 0(false)。
request_repeatedbool若设置为 1(表示 true),那么 Steam 经济体服务器表示其在过去曾有一个完全相同的请求,但未明确是否成功,或请求失败。 如果资产或货币看起来已为同样的 audit_action 和 audit_reference 设置为有主,则资产服务器应该返回成功并将 new_assetid 和 new_contextid 设置为对第一个请求所返回的值。
is_marketbool如果设置为 1(表示 true),那么请求正在执行,以响应 Steam 社区市场上的某些活动。 当 audit_action 为 101(交易提交)时,表示用户已购买了此物品。 当 audit_action 为 102 时,表示用户正在取消其市场上架,或者由于创建上架出错,物品正在被返还用户。

返回

此方法的输出应为 JSON 格式。

响应:
  • result
    • success - 如果方法成功,为 true。 如果资产服务器返回 false,应将 error 设置为解释原因的字符串 。
    • error - 描述为何此调用失败的字符串。 这条消息将记录入错误日志,可在 Steamworks 站点的“经济体”选项卡下查看。
    • new_assetid(可选)- 此资产的无主版本的 64 位资产 ID。 只为资产转移设置。 视资产服务器的实现而定,
      可以为新资产 ID,或者与请求指定的资产 ID 相同。
      默认为与传入的资产 ID 相同。

      注意:我们建议,为了审核目的,资产服务器实现应创建资产的新副本,并在 TradeSetOwned 响应中返回新资产 ID。 由于这意味着一旦一个资产被删除或无主,该资产将永远保持该状态,我们发现这样有助于防止出错。 记录新旧资产之间的联系(例如,保存游戏中的资产第一次创建时的一些“原始资产 ID”)也会很有帮助。 我们只是发现这些方法有用,但并不强制要求您采用。
    • new_contextid(可选) - 此资产或货币新拥有版本的 64 位上下文 ID。 视资产服务器的实现而定,可以为不同的上下文 ID,或者与请求指定的上下文 ID 相同。 默认为与传入的上下文 ID 相同。

审核操作

这是可以通过此方法传入的审核操作的当前列表。 新审核类型能随时添加入此列表,因此资产服务器应为处理任何无符号的 32 位数字的审核操作做好准备。
  • 101 - 交易提交 - 请求为提交一项交易的一部分。 audit_reference 为交易 ID。
  • 102 - 交易回滚 - 请求为回滚一项交易的一部分。 audit_reference 为交易 ID。