Apple In App Purchase & Apple "Store Credit" - ios

We recently had a purchase on one of our apps. However, to our knowledge or the apps knowledge, the purchase never came through.
This only came to our attention when our user alerted us that they never received their virtual good. After looking into this, we saw the app sent the call off to itunes to process the payment, but never received the call back.
We asked the user to forward on the receipt to confirm the payment. The iTunes receipt read:
In App Purchase $15.99
Store Credit Total: $0.13
Payment Card Total: $15.86
Order Total: $15.99
"Store Credit"?! Would this have had some effect on the call back process to our app? Meaning we missed this sale totally? Is there a way around this issue?

I don't know if the 'Store credit' have any effect but we are experiencing a similar situation:
Sometimes our customers complain that they have purchased an IAP item and never received the credit in the app.
When we check their log (we keep a special log for that) we see that we got SKPaymentTransactionStateFailed response with 'Cannot connect to iTunes store' and later on, after 1-3 minutes we get SKPaymentTransactionStatePurchased.
We tried to ask Apple about it but couldn't get any explanation. I hope more people are having the same problem and can help us understand the situation.

Related

We need additional time to evaluate your submission and Apple Developer Program account

My App update was Rejected and Apple has sent me a message :
Hello,Thank you for submitting your app for review.We need additional time to evaluate your submission and Apple Developer Program account. Your submission status will appear as "Rejected" in App Store Connect while we investigate. However, we do not require a revised binary or additional information from you at this time.While there may be a delay due to high submission volumes, we are working to complete our review as soon as possible. If we notice any issues that require your attention, we will let you know via App Store Connect. If we find no issues with your submission or account, the submission will be approved.We will notify you as soon as there is new information to share. Other review inquiries may be filed via the Apple Developer Contact Us page.
Best regards,App Store Review iOS App 1.1.2
App VersionRejection Reasons:Other Reply to App Review
Has anyone else had the same experience? How can I solve this problem ?
Yeah, I have met this message several times. Typically this means your review may be delayed for more days. Last time we waited for 7 days, and on the 8th day, we wrote a mail asking what's the review progress. Then the apple review team replied and continued its review.
So I suggest you wait patiently and reduce the submission frequency. And better not use private APIs next time.

How to check if a user has been refunded from the iOS paid app?

My app is having a refund problem, you can see the following picture to better understand.
https://developer.apple.com/forums/content/attachment/7a0c3996-a3a3-4766-b989-09caad397be3
I suspect that users are taking advantage of Apple's refund policy to use my app for free. I am looking for a way to check if the user has had a refund to prevent them from accessing the app.
Currently, my guess is that when a user refunds their receipt their receipt will be revoked, so I plan to check "AppStoreReceiptUrl", if this field is null or empty then I will prevent them from using the app.
Is this correct way?
I hope to get your help.
If you are referring to an actual paid app, that is, an app that you must pay to download, Apple already do this for you. If a user refunds their app, the app will not launch on any device with the corresponding receipt/s thereafter.
If you are experiencing refunds en-masse, you might want to look into why people are refunding the app and/or collecting feedback from users. It's likely a case of users feeling as though they aren't getting value for money if you're seeing large numbers of refunds.

When are In-App Purchases activated after app has been approved for sale

I just made my first IOS app which has an IAP option and today it has been approved by iTunes Store. After I got the email, I had to wait another 4 hours before the app actually has been added to the App Store.
After I search for it and download it on my phone I decided to test the IAP option, but it doesn't seem to work. I am using my original Apple ID email and not the one I used for testing.
My question is, if the app has been added to the store, does the IAP has to work ? Or you have to wait awhile ? Just like waiting for the app to be added to the store after it has been approved.
PS: both the app and IAP has been approved by Apple and the status of my app is Ready For Sale.
edit:
If I run my app now from Xcode I get the following output from my code:
About to fetch product
Fetching products
Got response from Apple
Black Edition Theme
Black theme
0.99
Sending the payment request to Apple
Received payment transaction from Apple
Received payment transaction from Apple
Restored
Received payment transaction from Apple
It works how it should, but it keeps asking me for my Apple ID password continually and at some point said Cannot connect to App Store even if everything was successful, and after I click Retry I get the Confirm Your In-App Purchase screen but it also says Environment: Sandbox
I'm really confused why the sandbox screen is appearing.
Apple's servers often lag behind directly after updating an app with a new IAP (the product will not be found by the API). Waiting a few hours usually resolves the problem. We've had this with every new IAP we added.
You say the IAP "doesn't seem to work" ... what do you mean by that? You are charged for it, but you don't get the new content / feature / whatever it is? Or you select Purchase in your app but nothing happens?
It's been a while since I worked with IAP, but back when I did you had to submit at least one IAP component at the time you submitted your app for review. So both were reviewed at the same time.
If that's what you did, the IAP should be available immediately - if it's not, yeah... something's wrong.

Detect if a user refunded a 'consumable' in app purchase item (Apple app store in app purchase system)

I read so far online that the only way to detect if a user cancelled an in app purchase is by using the receipt data that I get from the user's iPhone and check if the cancellation_date exists in there for that item, but as far as I know, this field is only to be found on auto-renewable subscription items.
(At least to what I read online on every post I found that talks about in app purchase, no mention to consumables at all.)
Because they are always stored in the receipt data, while consumable items, are stored in the receipt data until the app itself finishes the transaction, once thats done, the purchase transaction for that item is gone forever from the receipt data after the finish process on the iPhone.
So my question is, if a user requested to cancel an in app purchase from Apple, which is a consumable item, do I also get back that same item transaction in the receipt data WITH the cancellation_date field in it?
I've never seen anyone confirm this.
It would be nice if someone can provide a receipt-data base64 string with cancellation_date example in it (if that's legal to do tho).
https://developer.apple.com/documentation/storekit/in-app_purchase/handling_refund_notifications
Apple has provided a solution finally in 2020!!
A year ago I had the same question as you and I have found this thread where author said that Apple has not added a way to detect canceled purchases. I'm still living with that as it is.
The best way to know it is contacting Apple technical support, each account has 2 request/year, so I recommend you to write there.
Hope you will find the answer and tell us about the result.

Cross-device In-AppPurchases

due to the fact that Apple requires at least one auto-renewable subscription or one free subscription for a newsstand app, we changed all monthly subscriptions of our news app to auto-renewable ones while adding newsstand functionality.
When I try to buy one of these subscriptions on device #1 (e.g. my iPad) everything works fine. When I try to buy the same subscription on device #2 (e.g. my iPhone), I get a message from the Store Kit telling me that I am already a subscriber of this certain issue (which is ok as well) but afterwards the process is finished without having bought anything.
Checking the log shows, that the SKPaymentTransactionObserver delegate method paymentQueue:updatedTransactions: first gets a transaction for that product in the state 'SKPaymentTransactionStatePurchasing' (ok so far) followed by transaction in the state 'SKPaymentTransactionStateFailed'. Having a closer look on the transaction error code and message of the last transaction, the transaction error description says "Cannot connect to iTunes Store'. A second purchase of another product (bought the first time on the second device) works perfectly. Both purchases are done against the sandbox, does anybody has a hint how to address this problem.
Thanks for your help in advance
Michael
It shouldn't be possible to to purchase the same auto-renewing subscription on multiple devices, instead you should implement restore functionality, and restore on the second device. It's worth noting that the sandbox uses time compression for testing, so a 1 month subscription, will actually auto-renew every 5 minutes or so, and will only renew 5 times in a day. it's possible the original subscription has expired by the time you try to repurchase for the second time.
Often the sandbox error messages are not useful, the "Couldn't connect to iTunes" is not relevant.
I would suggest reading the whole of this page very carefully, as there are a lot of important details it's easy to miss. The bit about restoring purchases is here:
https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/MakingaPurchase/MakingaPurchase.html#//apple_ref/doc/uid/TP40008267-CH3-SW1
Best of luck

Resources