Steamworks 문서
TradeSetUnowned/v0001
Steam Economy 서버가 기존에 설정되었다가 사용자의 에셋 혹은 통화 묶음을 제거하고 이를 소유자 없음으로 설정해야 할 때 호출됩니다. 에셋 서버는 해당 에셋 혹은 통화 유형에 합법적인 변화를 줄 수 있는지 확인해야 합니다. 에셋 소유권이 명시된 소유주와 일치하는지, 에셋 혹은 통화가 거래 가능하며 요청한 수량이 존재하는지 확인해야 합니다.

호출: Trading System

HTTP 메서드: POST

매개변수:

이름종류필수설명
keystring이것은 귀하가 파트너 사이트에 제공한 귀사 앱의 Steam 경제 설정에 있는 "자산 서버 키"입니다.
appiduint32에셋과 연관된 애플리케이션의 32비트 앱 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_actionuint3232비트 숫자로, 이 에셋 혹은 통화를 소유자 없음으로 설정하게 만드는 동작의 종류를 명시합니다.
audit_referenceuint64동작이 연관된 이벤트를 식별하는 64비트 숫자. 에셋 서버가 이 숫자를 감사 및 디버깅 목적으로 기록하려 할 수 있습니다.
leave_originalbool부울 매개변수를 1로 설정할 경우(true로 표시하기 위해), 에셋 서버가 아이템 복제 요청을 받고 명시된 에셋의 사본에 해당하는, 소유자 없는 새 아이템을 생성하게 됩니다. 이 값은 고객 지원 담당자의 일방적인 거래 취소 시에만 true입니다. 기본값은 0(false)입니다.
request_repeatedbool1로 설정할 경우(true로 표시하기 위해), Steam 경제 서버가 과거에 이와 유사한 요청을 보냈으나 명확한 성공 혹은 실패 메시지를 받지 못했음을 뜻합니다. 에셋 혹은 통화가 동일한 audit_action와 audit_reference에 소유자 없음으로 이미 설정된 경우, 에셋 서버는 성공을 반환하고 처음 요청 시 반환한 값에 새로운 new_assetid와 new_contextid를 설정해야 합니다.
is_marketbool1로 설정할 경우(true로 표시하기 위해), Steam 커뮤니티 장터의 어떤 활동에 대한 응답으로 요청이 실행되는 중입니다.

반환값

이 메서드의 출력은 JSON 형식으로 인코딩되어야 합니다.

응답:
  • 결과
    • success - 메서드가 성공일 때 true. 에셋 서버가 false를 반환하면, 그 원인을 설명하는 error를 문자열에 설정해야 합니다.

      참고: 성공이 false로 설정된 경우 혹은 응답에 오류가 있거나 기간이 만료된 경우, Steam은 성공할 때까지 TradeSetUnowned 요청을 다시 시도합니다. 오류가 영구적인 실패라면(예: 아이템이 존재하지 않음) should_retry를 0으로 설정하세요.
    • should_retry - 기본적으로 Steam은 요청이 성공할 때까지 TradeSetUnowned 호출을 다시 시도합니다. 이는 다음 동작을 결정하기 전에 먼저 아이템이 일관적인 상태인지 확인하기 위한 것입니다. 그러나 다시 시도해도 응답 결과가 달라지지 않는 영구적인 실패의 경우(예: 아이템이 더 이상 존재하지 않음), 이 필드의 값을 0으로 설정할 수 있습니다.

      또한 일시적인 오류인 경우, 값을 1로 설정하여 Steam에 이 사실을 확실하게 알릴 수 있습니다(예: 데이터베이스를 확인/수정하지 못한 경우).

      에셋 서버에서 동일한 assetid에 두 개의 다른 TradeSetUnowned 요청을 받을 경우를 대비하여 이 필드가 필요하지만 audit_reference 값이 달라야 합니다. 예를 들어, 사용자가 커뮤니티 장터에 아이템을 판매 등록하는 동시에 아이템 거래를 시도하려 할 수도 있습니다.
      에셋 서버는 첫 TradeSetUnowned 요청을 수락해야 하지만, 두 번째 요청은 아이템이 더 이상 사용자의 소유가 아니므로 거부해야 합니다. 이 예시에서 해당 요청은 절대 성공할 수 없고 성공해서는 안 되기 때문에, 요청에 대한 응답은 should_retry를 0으로 설정해야 합니다.

      중요: 이 값이 0일 경우, Steam은 귀하의 에셋 서버가 TradeSetUnowned 요청에 대한 응답으로 이 에셋을 변경하지 않았다고 가정합니다.
      그러므로 TradeSetUnowned 요청이 한 번도 처리되지 않은 것이 확실할 때에만 필드 값을 0으로 설정해야 합니다. 이 부분에서 실수하면 사용자가 아이템을 잃어버릴 수 있습니다.
      예를 들어, 이중 요청을 처리할 수 있는 로직과 에셋이 여전히 존재함을 확인하는 로직이 있다면, 요청 복제 처리를 먼저 실행하는 것이 좋습니다. 그렇지 않으면 에셋 서버가 이전 요청에 대한 결과를 적절하게 반환하지 않고, 반복된 요청에 대해 아이템이 더 이상 존재하지 않음을 반환하며 Steam에 재시도를 멈추라고 할 것입니다.
    • error - 실패 원인을 설명하는 문자열. 이 메시지는 Steamworks 사이트의 경제 탭에 있는 오류 이력에 기록됩니다.
    • new_assetid(선택 사항) - 이 에셋의 소유자 없음 버전의 64비트 에셋 ID. 에셋 이전에만 설정됩니다. 이것은 새로운 에셋 ID이거나 혹은 에셋 서버의 구현 방법에 따라 요청에 명시된 에셋 ID일 수 있습니다.
      기본값은 전달받은 에셋 ID와 동일합니다.
    • new_contextid(선택 사항) - 이 에셋 혹은 통화의 소유자 없음 버전의 64비트 컨텍스트 ID. 이것은 에셋 서버의 구현에 따라 다른 컨텍스트 ID가 되거나 요청에 명시된 컨텍스트 ID와 동일할 수 있습니다. 기본값은 전달받은 에셋 ID와 동일합니다.

감사 동작

이 메서드로 전달할 수 있는 감사 동작의 최신 목록입니다. 언제든 새로운 감사 형식이 목록에 추가될 수 있으므로, 에셋 서버는 무부호 32비트 숫자를 감사 동작으로 처리할 준비가 되어 있어야 합니다.
  • 101 - 거래 성사 - 이 요청은 거래 성사의 일부입니다. audit_reference는 교환 ID입니다.
  • 102 - 거래 취소 - 이 요청은 거래 취소의 일부입니다. audit_reference는 교환 ID입니다.