consumePurchase() for recurring IAB purchases on Android

My game uses IAB. Any player can purchase some money in the game.
But google collect and send all purchase transactions with every next purchase. This increased traffic dramatically
(1st purchase - 1 transaction data, 2d - 2 (current and 1st), 3rd - 3 and etc.)
This issue is SHOW STOPPER for me :frowning:

I need possibility to consume purchases (as described http://developer.android.com/google/play/billing/api.html )

Additionally,

All my purchases is Consumable. Each purchase is finished by calling of store.finishTransaction( transaction )

I made four purchases, and when I call store.restore(), my transactionCallback called 4 * 4 = 16 times. After I made ??2 more purchases and my transactionCallback called 6 * 6 = 36 times?
What do I need to do to fix this problem?

Thanks.

_PS. I think problem is:
Google: Important: Before provisioning the consumable item in your application, you must send a consumption request to Google Play and receive a successful response indicating that the consumption was recorded.(!!!) …
and
If the purchase was successful, consume the purchase by making a consumePurchase call.(!!!)

PS2.
With Apple IAP all works correct!_

[import]uid: 15448 topic_id: 35420 reply_id: 335420[/import]

Can you post some code? [import]uid: 199310 topic_id: 35420 reply_id: 140852[/import]

Sample code:

[lua]store = require(“store”)

function transactionCallback( event )
local transaction = event.transaction
if transaction.state == “purchased” then
– purchaseCallBack()
– local alert = native.showAlert( “In App Purchase”, “Purchase succeeded!”, { “OK” } )
print(“productIdentifier:”, transaction.productIdentifier)
print(“receipt:”, transaction.receipt)
print(“transactionIdentifier:”, transaction.identifier)
print(“date:”, transaction.date)
print("originalReceipt: ", transaction.originalReceipt)
print("originalTransactionIdentifier: ", transaction.originalIdentifier)
print(“originalDate: “, transaction.originalDate)
print(”__________________________________________________________”)
elseif transaction.state == “restored” then
print(“Transaction restored (from previous session)”)
print("productIdentifier: ", transaction.productIdentifier)
print("receipt: ", transaction.receipt)
print("transactionIdentifier: ", transaction.identifier)
print("date: ", transaction.date)
print("originalReceipt: ", transaction.originalReceipt)
print(“originalTransactionIdentifier: “, transaction.originalIdentifier)
print(“originalDate: “, transaction.originalDate)
print(”__________________________________________________________”)
local alert = native.showAlert( “In App Purchase”, “Transaction restored!”, { “OK” } )
elseif transaction.state == “cancelled” then
local alert = native.showAlert( “In App Purchase”, “Transaction cancelled!”, { “OK” } )
elseif transaction.state == “failed” then
local alert = native.showAlert( “In App Purchase”, “Transaction failed, type:”…tostring(transaction.errorType)…”:”…tostring(transaction.errorString), { “OK” } )
else
print(“unknown event”)
local alert = native.showAlert( “In App Purchase”, “Unknown event!”, { “OK” } )
end
store.finishTransaction( transaction )
end

if store.availableStores.apple then
store.init(“apple”, transactionCallback)
print(“APPLE”)
elseif store.availableStores.google then
store.init(“google”, transactionCallback)
storeSuffix = “g”
print(“GOOGLE”)
end

if (myDevice==“Android”) then
store.restore()
end

local function makePurchase( pid, f )
if store.isActive then
–purchaseCallBack = f
store.purchase( { pid…storeSuffix } )
else
local alert = native.showAlert( “In App Purchase”, “Store is not active now!”, { “OK” } )
end
end[/lua] [import]uid: 15448 topic_id: 35420 reply_id: 140862[/import]

Transaction log (for store.restore) FOR 6 FINISHED PURCHASES - 36 callbacks:
********with store.purchase I got same log +N new records (N=number of total purchases), in case 7 purchases I got 49 callbacks, 8 - 64 callbacks :frowning:

01-29 10:16:20.190: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.190: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:20.190: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:20.190: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:20.190: I/Corona(26106): originalReceipt:
01-29 10:16:20.190: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.190: I/Corona(26106): originalDate:
01-29 10:16:20.190: I/Corona(26106): __________________________________________________________
01-29 10:16:20.190: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.190: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:20.190: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:20.195: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:20.195: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:20.195: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:20.195: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:20.195: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:20.285: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:20.285: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:20.285: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:20.285: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:20.285: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:20.285: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:21.115: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:21.115: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:21.115: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:21.115: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:21.115: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:21.115: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:21.425: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:21.425: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:21.425: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:21.425: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:21.425: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:21.425: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.935: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.935: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:21.935: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:21.935: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:21.935: I/Corona(26106): originalReceipt:
01-29 10:16:21.935: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.935: I/Corona(26106): originalDate:
01-29 10:16:21.935: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:21.940: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:21.940: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:21.940: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:21.940: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:21.940: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:22.210: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:22.210: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:22.210: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:22.210: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:22.210: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:22.210: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
[import]uid: 15448 topic_id: 35420 reply_id: 140864[/import]

What version of Corona SDK are you using?

Google changed the IAP system back ground Christmas and you need 984 or later. See Josh’s post on this thread:

http://developer.coronalabs.com/forum/2013/01/30/storefinishtransaction-not-working-properly

[import]uid: 199310 topic_id: 35420 reply_id: 140984[/import]

I am having the exact same problem here. http://developer.coronalabs.com/forum/2013/01/30/storefinishtransaction-not-working-properly
Using 2013.1016 [import]uid: 143031 topic_id: 35420 reply_id: 140995[/import]

Using 2013.1016 [import]uid: 15448 topic_id: 35420 reply_id: 140997[/import]

The only thing I can figure is that your finish isn’t getting called. Put some prints around it and make sure it’s getting called. [import]uid: 199310 topic_id: 35420 reply_id: 141139[/import]

Hi Rob,

I am facing this issue too, and putting a print before and after the store.finishTransaction(...) confirmed that the function is being called.

Still this problem goes on. [import]uid: 143031 topic_id: 35420 reply_id: 141148[/import]

Rob,

Look at the following image carefully.
Could I say you about finish transaction or you know about?

All my transaction was carefully finished, shipped and money added to my account, but I continue get them in my transaction callback (and 7 successfully processed transaction get me 49 callbacks)

[import]uid: 15448 topic_id: 35420 reply_id: 141153[/import]

Are you calling [lua]store.restore()[/lua] on application start up?
Because that’s what I’m seeing in your sample code.

If so, then that is the source of your duplicate purchase notifications.

Google Play unfortunately does not differentiate between “restored” purchases and current purchases. This means that you’ll never receive an [lua]event.transaction.state[/lua] set to “restored”.

That said, your app is expected to save the purchased item to file or database when a purchase notification has been received. So, when a restored purchase is received (which is received as a normal purchase via Google Play), then you can look up its product ID in your config file/database to recognize if it is already purchased. This is how you can recognize that it is a restored purchased.
[import]uid: 32256 topic_id: 35420 reply_id: 141289[/import]

Joshua, thank for response,

but store.restore in my example for test only (Google have no difference restore or purchase callbacks). Really, I make calls of store.purchase only.

ANY CALL OF store.purchase GET ME N*N NOTIFICATIONS (where N number of all my previous purchases). For example,

Second purchase:
1 - Callback with first Purchase
2 - Callback with second Purchase
1 - Callback with first Purchase
2 - Callback with second Purchase

3rd Purchase:
1 - Callback with first Purchase
2 - Callback with second Purchase
3 - Callback with 3rd Purchase
1 - Callback with first Purchase
2 - Callback with second Purchase
3 - Callback with 3rd Purchase
1 - Callback with first Purchase
2 - Callback with second Purchase
3 - Callback with 3rd Purchase

4 Purchase:
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4

[import]uid: 15448 topic_id: 35420 reply_id: 141293[/import]

Can you post some code? [import]uid: 199310 topic_id: 35420 reply_id: 140852[/import]

Sample code:

[lua]store = require(“store”)

function transactionCallback( event )
local transaction = event.transaction
if transaction.state == “purchased” then
– purchaseCallBack()
– local alert = native.showAlert( “In App Purchase”, “Purchase succeeded!”, { “OK” } )
print(“productIdentifier:”, transaction.productIdentifier)
print(“receipt:”, transaction.receipt)
print(“transactionIdentifier:”, transaction.identifier)
print(“date:”, transaction.date)
print("originalReceipt: ", transaction.originalReceipt)
print("originalTransactionIdentifier: ", transaction.originalIdentifier)
print(“originalDate: “, transaction.originalDate)
print(”__________________________________________________________”)
elseif transaction.state == “restored” then
print(“Transaction restored (from previous session)”)
print("productIdentifier: ", transaction.productIdentifier)
print("receipt: ", transaction.receipt)
print("transactionIdentifier: ", transaction.identifier)
print("date: ", transaction.date)
print("originalReceipt: ", transaction.originalReceipt)
print(“originalTransactionIdentifier: “, transaction.originalIdentifier)
print(“originalDate: “, transaction.originalDate)
print(”__________________________________________________________”)
local alert = native.showAlert( “In App Purchase”, “Transaction restored!”, { “OK” } )
elseif transaction.state == “cancelled” then
local alert = native.showAlert( “In App Purchase”, “Transaction cancelled!”, { “OK” } )
elseif transaction.state == “failed” then
local alert = native.showAlert( “In App Purchase”, “Transaction failed, type:”…tostring(transaction.errorType)…”:”…tostring(transaction.errorString), { “OK” } )
else
print(“unknown event”)
local alert = native.showAlert( “In App Purchase”, “Unknown event!”, { “OK” } )
end
store.finishTransaction( transaction )
end

if store.availableStores.apple then
store.init(“apple”, transactionCallback)
print(“APPLE”)
elseif store.availableStores.google then
store.init(“google”, transactionCallback)
storeSuffix = “g”
print(“GOOGLE”)
end

if (myDevice==“Android”) then
store.restore()
end

local function makePurchase( pid, f )
if store.isActive then
–purchaseCallBack = f
store.purchase( { pid…storeSuffix } )
else
local alert = native.showAlert( “In App Purchase”, “Store is not active now!”, { “OK” } )
end
end[/lua] [import]uid: 15448 topic_id: 35420 reply_id: 140862[/import]

Transaction log (for store.restore) FOR 6 FINISHED PURCHASES - 36 callbacks:
********with store.purchase I got same log +N new records (N=number of total purchases), in case 7 purchases I got 49 callbacks, 8 - 64 callbacks :frowning:

01-29 10:16:20.190: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.190: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:20.190: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:20.190: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:20.190: I/Corona(26106): originalReceipt:
01-29 10:16:20.190: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.190: I/Corona(26106): originalDate:
01-29 10:16:20.190: I/Corona(26106): __________________________________________________________
01-29 10:16:20.190: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.190: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:20.190: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:20.195: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:20.195: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:20.195: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:20.195: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.195: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.195: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:20.195: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:20.195: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:20.195: I/Corona(26106): originalReceipt:
01-29 10:16:20.195: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.195: I/Corona(26106): originalDate:
01-29 10:16:20.195: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:20.285: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:20.285: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:20.285: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:20.285: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:20.285: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:20.285: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:20.285: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:20.285: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:20.285: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:20.285: I/Corona(26106): originalReceipt:
01-29 10:16:20.285: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:20.285: I/Corona(26106): originalDate:
01-29 10:16:20.285: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:21.115: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:21.115: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:21.115: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:21.115: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:21.115: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.115: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.115: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:21.115: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:21.115: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:21.115: I/Corona(26106): originalReceipt:
01-29 10:16:21.115: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.115: I/Corona(26106): originalDate:
01-29 10:16:21.115: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:21.425: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:21.425: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:21.425: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:21.425: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:21.425: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.425: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.425: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:21.425: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:21.425: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:21.425: I/Corona(26106): originalReceipt:
01-29 10:16:21.425: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.425: I/Corona(26106): originalDate:
01-29 10:16:21.425: I/Corona(26106): __________________________________________________________
01-29 10:16:21.935: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.935: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:21.935: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:21.935: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:21.935: I/Corona(26106): originalReceipt:
01-29 10:16:21.935: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.935: I/Corona(26106): originalDate:
01-29 10:16:21.935: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:21.940: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:21.940: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:21.940: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:21.940: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:21.940: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:21.940: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:21.940: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:21.940: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:21.940: I/Corona(26106): originalReceipt:
01-29 10:16:21.940: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:21.940: I/Corona(26106): originalDate:
01-29 10:16:21.940: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1388810836272259
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: -7413114802842745564
01-29 10:16:22.210: I/Corona(26106): date: Sat Jan 26 17:41:37 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1396512160890022
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: -9041969022576657806
01-29 10:16:22.210: I/Corona(26106): date: Sat Jan 26 18:06:07 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1324762167665607
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 6285804668253461275
01-29 10:16:22.210: I/Corona(26106): date: Mon Jan 28 12:17:40 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1371452972423316
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 4516957750665163580
01-29 10:16:22.210: I/Corona(26106): date: Mon Jan 28 12:36:52 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1397062339281989
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 819427838012361068
01-29 10:16:22.210: I/Corona(26106): date: Mon Jan 28 17:55:37 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
01-29 10:16:22.210: I/Corona(26106): __________________________________________________________
01-29 10:16:22.210: I/Corona(26106): productIdentifier: towersgoldpack1g
01-29 10:16:22.210: I/Corona(26106): receipt: 12999763169054705758.1351583323069715
01-29 10:16:22.210: I/Corona(26106): transactionIdentifier: 8617448155328645705
01-29 10:16:22.210: I/Corona(26106): date: Tue Jan 29 10:16:14 EET 2013
01-29 10:16:22.210: I/Corona(26106): originalReceipt:
01-29 10:16:22.210: I/Corona(26106): originalTransactionIdentifier:
01-29 10:16:22.210: I/Corona(26106): originalDate:
[import]uid: 15448 topic_id: 35420 reply_id: 140864[/import]

Hmm… I’ve never seen this behavior before. I know the [lua]store.finishTransaction()[/lua] function works, because if it didn’t, then your app would eventually receive a “cancelled” notification due to the purchase being timed out by Google Play… and you said that you’re not receiving cancelled notifications. And you’re not seeing any errors either, right?
Otherwise I’d say our CONFIRM_NOTIFICATIONS request is not getting through for some reason.

Do you see anything else in the Android log that may provide clues as to what is going wrong?
For example, log entries starting with “Finsky” comes from Google’s in-app purchase system.
I assume you are using the Android SDK tool “adb logcat” or “ddms” to view the log, and if not, give one of those tools a try since it will print log entries from all apps currently running on the device. The Google Play app is the one that is actually doing the communications, so we need to view its errors if any.

Also, can you double check that you have Android permission “com.android.vending.BILLING” set in your “build.settings” file please? You “should” get an error response if it is missing, but it doesn’t hurt to double check.
[import]uid: 32256 topic_id: 35420 reply_id: 141574[/import]

What version of Corona SDK are you using?

Google changed the IAP system back ground Christmas and you need 984 or later. See Josh’s post on this thread:

http://developer.coronalabs.com/forum/2013/01/30/storefinishtransaction-not-working-properly

[import]uid: 199310 topic_id: 35420 reply_id: 140984[/import]

I am having the exact same problem here. http://developer.coronalabs.com/forum/2013/01/30/storefinishtransaction-not-working-properly
Using 2013.1016 [import]uid: 143031 topic_id: 35420 reply_id: 140995[/import]

Using 2013.1016 [import]uid: 15448 topic_id: 35420 reply_id: 140997[/import]

Here is the logcat from my side:

[blockcode]
D/Finsky ( 1054): [1] ServerNotificationReceiver.onReceive: Handling notificationId=[CQ0dgn_a45ct]
D/Finsky ( 1054): [1] DfeNotificationManagerImpl.handleNotification: Handling notification type=[5], id=[CQ0dgn_a45ct]
D/Finsky ( 1054): [27391] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky ( 1054): [27391] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/dalvikvm( 1054): GC_CONCURRENT freed 2256K, 15% free 14919K/17380K, paused 8ms+5ms, total 122ms
D/Finsky ( 1054): [1] 2.onResponse: Notification [CQ0dgn_a45ct] successfully ack’d.
D/dalvikvm( 1398): GC_CONCURRENT freed 258K, 4% free 8956K/9240K, paused 3ms+2ms, total 20ms
D/Finsky ( 1054): [27397] PendingNotificationsService.setMarketAlarm: Setting alarm for account=v.handed@gmail.com, duration=20000
D/Finsky ( 1054): [1] MarketBillingService.sendResponseCode: Sending response RESULT_OK for request 5239820599412125809 to net.topfuncoolgames.barfriends.
D/Finsky ( 1054): [27391] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky ( 1054): [27391] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky ( 1054): [27390] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky ( 1054): [27390] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.



E/Volley (17087): [78095] BasicNetwork.performRequest: Unexpected response code 429 for https://android.clients.google.com/vending/api/ApiRequest
E/Finsky (17087): [1] NotifyingErrorListener.onErrorResponse: Server error on InAppPurchaseInformationRequest: com.android.volley.ServerError
D/Finsky (17087): [1] MarketBillingService.sendResponseCode: Sending response RESULT_SERVICE_UNAVAILABLE for request 5339091311568418726 to net.topfuncoolgames.barfriends.
D/Finsky (17087): [78118] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Volley (17087): [1] Request.finish: 4600 ms: [] https://android.clients.google.com/vending/api/ApiRequest NORMAL 1052 InAppPurchaseInformationRequestProto
D/dalvikvm(21661): GC_CONCURRENT freed 574K, 28% free 10115K/13940K, paused 2ms+2ms, total 18ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 9ms
D/Finsky (17087): [78087] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Finsky (17087): [78119] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/ActivityManager( 382): Process net.topfuncoolgames.pizzafriends (pid 23526) has died.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/dalvikvm(21661): GC_CONCURRENT freed 384K, 27% free 10209K/13940K, paused 3ms+2ms, total 20ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 12ms
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/dalvikvm(21661): GC_CONCURRENT freed 476K, 27% free 10210K/13940K, paused 2ms+1ms, total 26ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 12ms
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/dalvikvm(21661): GC_CONCURRENT freed 476K, 27% free 10210K/13940K, paused 2ms+2ms, total 19ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 14ms
D/Finsky (17087): [78117] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Finsky (17087): [78088] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/dalvikvm(21661): GC_CONCURRENT freed 477K, 27% free 10210K/13940K, paused 3ms+8ms, total 34ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 24ms
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Finsky (17087): [78087] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky (17087): [78119] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky (17087): [78117] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky (17087): [78118] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
D/Finsky (17087): [78088] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/dalvikvm(21661): GC_CONCURRENT freed 481K, 27% free 10210K/13940K, paused 4ms+1ms, total 40ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 6ms
D/Finsky (17087): [78087] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/dalvikvm(21661): GC_CONCURRENT freed 478K, 27% free 10209K/13940K, paused 1ms+1ms, total 18ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 13ms
D/Finsky (17087): [78119] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Finsky (17087): [78117] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/LightsService( 382): Excessive delay setting light: 67ms
D/dalvikvm(21661): GC_CONCURRENT freed 478K, 27% free 10209K/13940K, paused 3ms+2ms, total 24ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 15ms
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : purchased net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Finsky (17087): [78118] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : purchased net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
D/Finsky (17087): [78088] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/ActivityManager( 382): Start proc android.process.acore for content provider com.android.providers.contacts/.ContactsProvider2: pid=23553 uid=10000 gids={50000, 3003, 1015, 1028}
D/Finsky (17087): [78119] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
I/ActivityThread(23553): Pub com.android.voicemail: com.android.providers.contacts.VoicemailContentProvider
I/ActivityManager( 382): Start proc jp.naver.line.android for service jp.naver.line.android/.service.NaverLineService: pid=23565 uid=10067 gids={50067, 1006, 3003, 1015, 1028}
I/dalvikvm(23565): Turning on JNI app bug workarounds for target SDK version 7…
D/Finsky (17087): [78117] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
I/Corona (21661): +++++++++++++++ TRANSACTION STATE : cancelled net.topfuncoolgames.barfriends.diamond1++++++++++++++++++++++++
I/ActivityThread(23553): Pub com.android.contacts.dumpfile: com.android.providers.contacts.debug.DumpFileProvider
I/ActivityThread(23553): Pub applications: com.android.providers.applications.ApplicationsProvider
D/dalvikvm(21661): GC_CONCURRENT freed 482K, 27% free 10210K/13940K, paused 8ms+2ms, total 51ms
D/dalvikvm(21661): WAIT_FOR_CONCURRENT_GC blocked 9ms
D/Finsky (17087): [78118] MarketBillingService.getPreferredAccount: net.topfuncoolgames.barfriends: Account from first account.
E/Volley (17087): [78094] BasicNetwork.performRequest: Unexpected response code 429 for https://android.clients.google.com/vending/api/ApiRequest
E/Finsky (17087): [1] NotifyingErrorListener.onErrorResponse: Server error on InAppPurchaseInformationRequest: com.android.volley.ServerError
D/Finsky (17087): [1] MarketBillingService.sendResponseCode: Sending response RESULT_SERVICE_UNAVAILABLE for request 64222083666128220 to net.topfuncoolgames.barfriends.
[/blockcode]
This is not the complete one, as the complete one already too long. (about 40 * 40).

This is very easy to reproduce, just purchase 2 and more items on Android ( i tested on Galaxy Nexus and Nexus 7) [import]uid: 143031 topic_id: 35420 reply_id: 141725[/import]