Oddities with iOS IAP
Dan Friedman
dan at clearvisiontech.com
Tue Aug 15 10:48:01 EDT 2023
Panos,
Thank you for the reply. Here is my code…. You click a button, and it calls startInAppPurchase with the number of credits to purchase. After all is done, pLog is completely empty. This is working perfectly on Android.
on startInAppPurchase numCredits
//setup purchase id
if numCredits = 1 then
put 1001 into productID
put "$0.99" into productAmount
else if numCredits = 2 then
put 1002 into productID
put "$1.99" into productAmount
else if numCredits = 3 then
put 1003 into productID
put "$2.99" into productAmount
else if numCredits = 11 then
put 1011 into productID
put "$9.99" into productAmount
end if
//confirm with user
if numCredits = 1 then
put "Are you sure you want to purchase 1 credit for" && productAmount & "?" into pString
else
put "Are you sure you want to purchase" && numCredits && "credits for" && productAmount & "?" into pString
end if
if myAnswer(pString,"Cancel|Buy Now","Purchase Confirmation","|appBlue") = "Cancel" then // <-- custom answer dialog
exit startInAppPurchase
end if
//initiate the purchase
mobileStoreEnablePurchaseUpdates
mobileStoreSetProductType productID,"inapp"
mobileStoreMakePurchase productID,"1","testPayload - Android Only"
end startInAppPurchase
on purchaseStateUpdate pPurchaseID,pProductID,pState
global user
global pLog
put pState & cr after pLog
switch pState
case "paymentReceived" //2,1001,paymentReceived
//tell our server is was successful and log users credits to database
if isIPhone() then
put mobileStoreProductProperty(pProductID,"transactionIdentifier") into tIdentifier
get db_verifyPurchase(pProductID,tIdentifier)
else
//android handled in case "complete"
end if
mobileStoreConfirmPurchase pProductID //Inform the store that the purchase identifier productID was successfully delivered
mobileStoreDisablePurchaseUpdates
loadMeUp //refresh our display
break
case "error"
answer "Error occured during purchase handling:" & return & return & mobileStorePurchaseError(pPurchaseID)
mobileStoreDisablePurchaseUpdates
break
case "invalidSKU"
answer "Invalid SKU."
mobileStoreDisablePurchaseUpdates
break
case "alreadyEntitled"
answer "Already Owned."
mobileStoreDisablePurchaseUpdates
break
case "restored"
answer "restored"
offerPurchasedProduct pProductID
mobileStoreConfirmPurchase pProductID
mobileStoreDisablePurchaseUpdates
loadMeUp
break
case "canceled"
case "cancelled"
answer "Purchase Cancelled:" && pProductID
mobileStoreDisablePurchaseUpdates
break
case "complete"
if isAndroid() then
put mobileStoreProductProperty(pProductID,"orderId") into orderId
mobileStoreConsumePurchase pProductID
get db_verifyPurchase(pProductID,orderId)
end if
mobileStoreDisablePurchaseUpdates
break
end switch
end purchaseStateUpdate
Thank you!
-Dan
From: use-livecode <use-livecode-bounces at lists.runrev.com> on behalf of panagiotis m via use-livecode <use-livecode at lists.runrev.com>
Date: Tuesday, August 15, 2023 at 1:33 AM
To: How to use LiveCode <use-livecode at lists.runrev.com>
Cc: panagiotis m <merakosp at gmail.com>
Subject: Re: Oddities with iOS IAP
Hello Dan,
Could you share the code that makes the purchase, as well as the
purchaseStateUpdate message?
Although, my guess is that this is rather a TestFlight issue, since if it
was an issue in LC's API for in-app purchase on iOS, it would have been
reported
ready.
Kind regards,
Panos
--
_______________________________________________
use-livecode mailing list
use-livecode at lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list