Skip to content

Commit 3f6aaac

Browse files
committed
moved purchase tokens handling within fox.playstore
1 parent 8badab6 commit 3f6aaac

File tree

2 files changed

+70
-26
lines changed

2 files changed

+70
-26
lines changed

docs/exporting/ios.md

+13
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,16 @@ ios/plugins
4040
├── inappstore.gdip
4141
└── inappstore.release.xcframework
4242
```
43+
44+
## install and run a debug build on a device
45+
46+
```sh
47+
> xcrun devicectl list devices
48+
> xcrun devicectl device install app --device XXXXXXX _build/iOS/battle-squares-debug.app
49+
> xcrun devicectl device process launch --device XXXXXXX com.uralys.battlesquares
50+
```
51+
52+
```sh
53+
> brew install libimobiledevice
54+
> idevicesyslog
55+
```

fox/stores/playstore.gd

+57-26
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ extends Node
1212

1313
var playStore
1414
var queryingPurchasesAtStart = false
15+
var purchasesToConsume = {}
1516

1617
# ------------------------------------------------------------------------------
1718

@@ -22,7 +23,7 @@ signal skuDetailsReceived
2223
func _ready():
2324
if Engine.has_singleton('GodotGooglePlayBilling'):
2425
G.log('-------------------------------')
25-
G.log('✅ PlayStore starting: GodotGooglePlayBilling was found')
26+
G.log('✅ GodotGooglePlayBilling was found, connecting PlayStore.')
2627
playStore = Engine.get_singleton('GodotGooglePlayBilling')
2728
connectPlayStore()
2829

@@ -94,7 +95,7 @@ func receivedPurchases(query_result):
9495

9596
# _purchase is_acknowledged but not consumed => either not consumed or not consumable
9697
elif _purchase.purchase_state == 1:
97-
Player.storePurchaseToken(_purchase.purchase_token, _purchase.sku)
98+
storePurchaseToken(_purchase.purchase_token, _purchase.sku)
9899
onPurchaseAcknowledged(_purchase.purchase_token)
99100

100101
else:
@@ -106,27 +107,6 @@ func receivedPurchases(query_result):
106107

107108
# ==============================================================================
108109

109-
func onPurchaseAcknowledged(purchaseToken):
110-
var sku = Player.getSKUFromPurchaseToken(purchaseToken)
111-
var storeItem = G.STORE[sku]
112-
113-
if(storeItem.isConsumable):
114-
playStore.consumePurchase(purchaseToken)
115-
else:
116-
onPurchaseDone(purchaseToken)
117-
118-
# ------------------------------------------------------------------------------
119-
120-
func onPurchaseAcknowledgementError(id, message, purchaseToken):
121-
Router.hideLoader()
122-
G.log('🔴 Purchase acknowledgement error:', {
123-
id = id,
124-
message = message,
125-
purchaseToken = purchaseToken
126-
})
127-
128-
# ==============================================================================
129-
130110
func purchase(sku):
131111
G.log('purchasing ', sku);
132112
Router.showLoader()
@@ -164,7 +144,7 @@ func onPurchasesUpdated(purchases):
164144
for _purchase in purchases:
165145
var sku = JSON.parse_string(_purchase.original_json).productId
166146
var purchaseToken = _purchase.purchase_token
167-
Player.storePurchaseToken(purchaseToken, sku)
147+
storePurchaseToken(purchaseToken, sku)
168148

169149
playStore.queryPurchases('inapp')
170150

@@ -184,6 +164,57 @@ func onPurchaseDone(purchaseToken):
184164
Router.hideLoader()
185165

186166
if(queryingPurchasesAtStart):
187-
Player.foundPreviousPurchase(purchaseToken)
167+
foundPreviousPurchase(purchaseToken)
188168
else:
189-
Player.onPurchaseCompleted(purchaseToken)
169+
onPurchaseCompleted(purchaseToken)
170+
171+
# ==============================================================================
172+
# android purchases backup waiting to be acknowleged
173+
# ==============================================================================
174+
175+
func storePurchaseToken(purchaseToken, sku):
176+
Player.state.purchasesToConsume[purchaseToken] = sku
177+
Player.save()
178+
179+
func _getSKUFromPurchaseToken(purchaseToken):
180+
var sku = Player.state.purchasesProcessing[purchaseToken]
181+
return sku
182+
183+
func setPurchaseProcessed(purchaseToken):
184+
Player.state.purchasesProcessing.erase(purchaseToken)
185+
Player.save()
186+
187+
# ---------------
188+
189+
func onPurchaseCompleted(purchaseToken):
190+
setPurchaseProcessed(purchaseToken)
191+
var sku = _getSKUFromPurchaseToken(purchaseToken)
192+
Player.bought(sku)
193+
194+
# ---------------
195+
196+
func foundPreviousPurchase(purchaseToken):
197+
setPurchaseProcessed(purchaseToken)
198+
var sku = _getSKUFromPurchaseToken(purchaseToken)
199+
Player.previouslyBought(sku)
200+
201+
# ------------------------------------------------------------------------------
202+
203+
func onPurchaseAcknowledged(purchaseToken):
204+
var sku = _getSKUFromPurchaseToken(purchaseToken)
205+
var storeItem = G.STORE[sku]
206+
207+
if(storeItem.isConsumable):
208+
playStore.consumePurchase(purchaseToken)
209+
else:
210+
onPurchaseDone(purchaseToken)
211+
212+
# ---------------
213+
214+
func onPurchaseAcknowledgementError(id, message, purchaseToken):
215+
Router.hideLoader()
216+
G.log('🔴 Purchase acknowledgement error:', {
217+
id = id,
218+
message = message,
219+
purchaseToken = purchaseToken
220+
})

0 commit comments

Comments
 (0)