added economy_purchases_v1 from public script
This commit is contained in:
parent
ad40e54780
commit
13169c768b
185
methods/economy_purchases_v1_alt.py
Normal file
185
methods/economy_purchases_v1_alt.py
Normal file
@ -0,0 +1,185 @@
|
||||
"""
|
||||
Original code by frms. on discord / shr2mp on roblox
|
||||
"""
|
||||
|
||||
|
||||
"""
|
||||
wow we need to clean up a lot.
|
||||
"""
|
||||
|
||||
import requests
|
||||
import json
|
||||
import uuid
|
||||
|
||||
|
||||
def get_game_instance_data(cookie, place_id, game_id):
|
||||
url = "https://gamejoin.roblox.com/v1/join-game-instance"
|
||||
|
||||
headers = {
|
||||
"Host": "gamejoin.roblox.com",
|
||||
"Accept": "*/*",
|
||||
"Cookie": f".ROBLOSECURITY={cookie}",
|
||||
"Cache-Control": "no-cache",
|
||||
"User-Agent": "Roblox/DarwinRobloxApp/0.663.0.6630659 (GlobalDist; RobloxDirectDownload)",
|
||||
"Content-Type": "application/json",
|
||||
"PlayerCount": "0",
|
||||
"Requester": "Client",
|
||||
"Pragma": "no-cache"
|
||||
}
|
||||
|
||||
payload = {
|
||||
"placeId": place_id,
|
||||
"gameId": game_id,
|
||||
"isPlayTogetherGame": False,
|
||||
"gameJoinAttemptId": str(uuid.uuid4())
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
|
||||
join_script = data.get("joinScript", {})
|
||||
analytics_session_id = join_script.get("AnalyticsSessionId")
|
||||
universe_id = join_script.get("UniverseId")
|
||||
game_id = join_script.get("GameId")
|
||||
place_id = join_script.get("PlaceId")
|
||||
|
||||
if not analytics_session_id and isinstance(data.get("SessionId"), str):
|
||||
session_data = json.loads(data["SessionId"])
|
||||
analytics_session_id = session_data.get("SessionId")
|
||||
universe_id = session_data.get("UniverseId")
|
||||
game_id = session_data.get("GameId")
|
||||
place_id = session_data.get("PlaceId")
|
||||
|
||||
return {
|
||||
"AnalyticsSessionId": analytics_session_id,
|
||||
"UniverseId": universe_id,
|
||||
"GameId": game_id,
|
||||
"PlaceId": place_id
|
||||
}
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print("Request failed:", e)
|
||||
return None
|
||||
|
||||
|
||||
def get_collectible_details(cookie, item_id):
|
||||
url = f"https://economy.roblox.com/v2/assets/{item_id}/details"
|
||||
|
||||
headers = {
|
||||
"Host": "economy.roblox.com",
|
||||
"Accept": "application/json",
|
||||
"Cookie": f".ROBLOSECURITY={cookie}",
|
||||
"Cache-Control": "no-cache",
|
||||
"User-Agent": "Roblox/DarwinRobloxApp/0.663.0.6630659 (GlobalDist; RobloxDirectDownload)"
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.get(url, headers=headers)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
|
||||
return {
|
||||
"CollectibleItemId": data.get("CollectibleItemId"),
|
||||
"CollectibleProductId": data.get("CollectibleProductId")
|
||||
}
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print("Request failed:", e)
|
||||
return None
|
||||
|
||||
|
||||
def get_game_id_from_presence(cookie, user_id):
|
||||
url = "https://presence.roblox.com/v1/presence/users"
|
||||
|
||||
headers = {
|
||||
"Host": "presence.roblox.com",
|
||||
"Accept": "application/json",
|
||||
"Cookie": f".ROBLOSECURITY={cookie}",
|
||||
"Cache-Control": "no-cache",
|
||||
"User-Agent": "Roblox/DarwinRobloxApp/0.663.0.6630659 (GlobalDist; RobloxDirectDownload)",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
payload = {
|
||||
"userIds": [user_id]
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
|
||||
user_presences = data.get("userPresences", [])
|
||||
if user_presences:
|
||||
return user_presences[0].get("gameId")
|
||||
|
||||
print("User is not in a game.")
|
||||
return None
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print("Request failed:", e)
|
||||
return None
|
||||
|
||||
|
||||
def purchase_item(cookie, collectible_item_id, collectible_product_id, analytics_session_id, price, user_id, place_id,
|
||||
universe_id, game_id):
|
||||
url = f"https://apis.roblox.com/marketplace-sales/v1/item/{collectible_item_id}/purchase-item"
|
||||
|
||||
headers = {
|
||||
"Host": "apis.roblox.com",
|
||||
"Accept": "application/json",
|
||||
"Cookie": f".ROBLOSECURITY={cookie}",
|
||||
"Cache-Control": "no-cache",
|
||||
"User-Agent": "Roblox/DarwinRobloxApp/0.663.0.6630659 (GlobalDist; RobloxDirectDownload)",
|
||||
"Roblox-Place-Id": str(place_id),
|
||||
"Roblox-Universe-Id": str(universe_id),
|
||||
"Roblox-Game-Id": str(game_id),
|
||||
"PlayerCount": "5",
|
||||
"Requester": "Client"
|
||||
}
|
||||
|
||||
payload = {
|
||||
"expectedCurrency": 1,
|
||||
"expectedPrice": price,
|
||||
"expectedPurchaserId": user_id,
|
||||
"expectedPurchaserType": "User",
|
||||
"collectibleProductId": collectible_product_id,
|
||||
"idempotencyKey": analytics_session_id,
|
||||
"purchaseAuthToken": ""
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, json=payload)
|
||||
if response.status_code == 403 and "x-csrf-token" in response.headers:
|
||||
csrf_token = response.headers["x-csrf-token"]
|
||||
headers["x-csrf-token"] = csrf_token
|
||||
|
||||
response = requests.post(url, headers=headers, json=payload)
|
||||
|
||||
return response.json()
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print("Request failed:", e)
|
||||
return None
|
||||
|
||||
|
||||
server_id = get_game_id_from_presence(cookie, user_id)
|
||||
server_result = get_game_instance_data(cookie, place_id, server_id)
|
||||
item_result = get_collectible_details(cookie, item_id)
|
||||
|
||||
if server_result and item_result:
|
||||
purchase_result = purchase_item(
|
||||
cookie,
|
||||
item_result["CollectibleItemId"],
|
||||
item_result["CollectibleProductId"],
|
||||
server_result["AnalyticsSessionId"],
|
||||
price,
|
||||
user_id,
|
||||
server_result["PlaceId"],
|
||||
server_result["UniverseId"],
|
||||
server_result["GameId"]
|
||||
)
|
||||
print("Purchase Result:", purchase_result)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user