b323244ac9
Reward/My-Packs tiles were emitted with no currencies row (dropped to avoid an "undefined" payment label). But FIFA 17 opens My Packs through the store PURCHASE flow (My Packs is a client-side filter over the store catalogue; the open-vs-buy fork is client-side and no response selects it), so a tile with no purchase path is not actionable — clicking it navigates instead of opening, sending no request. Fix: keep the coins currency at the pack price (0 for reward packs; no extPrice, so no `or %1s` mtx bug). The client then treats the tile as free and clicking sends POST /purchased, which the server opens for free (owned-only redeem, no debit). The empty-My-Packs sentinel keeps no currency row so it stays non-openable. pack70 golden regenerated. LIVE-PROVEN 2026-08-18: a reward Silver Pack opened and revealed cards on the retail client (host log: POST /purchased/items 200 -> GET /purchased/items).
238 lines
5.1 KiB
JSON
238 lines
5.1 KiB
JSON
{
|
|
"purchase": [
|
|
{
|
|
"assetId": 1,
|
|
"id": 1,
|
|
"packType": "BRONZE",
|
|
"description": "Bronze Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 1,
|
|
"displayGroupAssetId": 1,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 400,
|
|
"finalFunds": 400
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 10,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 1,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "bronze"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 2,
|
|
"id": 2,
|
|
"packType": "BRONZE",
|
|
"description": "Premium Bronze Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 2,
|
|
"displayGroupAssetId": 1,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 750,
|
|
"finalFunds": 750
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 10,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 3,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "bronze"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 3,
|
|
"id": 3,
|
|
"packType": "SILVER",
|
|
"description": "Silver Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 3,
|
|
"displayGroupAssetId": 2,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 2500,
|
|
"finalFunds": 2500
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 1,
|
|
"silverQuantity": 11,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 1,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "silver"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 4,
|
|
"id": 4,
|
|
"packType": "SILVER",
|
|
"description": "Premium Silver Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 4,
|
|
"displayGroupAssetId": 2,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 3750,
|
|
"finalFunds": 3750
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 1,
|
|
"silverQuantity": 11,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 3,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "silver"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 5,
|
|
"id": 5,
|
|
"packType": "GOLD",
|
|
"description": "Gold Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 5,
|
|
"displayGroupAssetId": 3,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 5000,
|
|
"finalFunds": 5000
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 10,
|
|
"rareQuantity": 1,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "gold"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 6,
|
|
"id": 6,
|
|
"packType": "GOLD",
|
|
"description": "Premium Gold Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 6,
|
|
"displayGroupAssetId": 3,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 7500,
|
|
"finalFunds": 7500
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 10,
|
|
"rareQuantity": 3,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "gold"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 70,
|
|
"id": 70,
|
|
"packType": "GOLD",
|
|
"description": "Reward Gold Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 1,
|
|
"displayGroupAssetId": 3,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 0,
|
|
"finalFunds": 0
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"silverQuantity": 0,
|
|
"goldQuantity": 11,
|
|
"rareQuantity": 11,
|
|
"itemQuantity": 11
|
|
},
|
|
"unopened": true,
|
|
"displayGroup": {
|
|
"value": "mypacks",
|
|
"priority": 1
|
|
}
|
|
}
|
|
],
|
|
"timestamp": 1596326400
|
|
}
|