App Store Receipts

RSS for tag

Validate app and in-app purchase receipts with the App Store using App Store Receipts.

App Store Receipts Documentation

Posts under App Store Receipts tag

81 Posts
Sort by:
Post marked as solved
2 Replies
394 Views
My app does validate the receipt on launch. When I do this via Xcode on app launch, I am presented with a Sign In prompt, because the Xcode version does understandably not include a receipt. However, on TestFlight, the app also does not include a receipt or at least I am seeing the same prompt which should be the result of refreshing the receipt on launch if none is available. I am wondering if this will also happen for apps downloaded from the App Store? I think it would be bad UX to have the first thing happen in the app be asked to sign in with you Apple ID. Or is this related to the app using the "sandbox" environment via TestFlight? Any hints will be appreciated. Thanks!
Posted
by
Post not yet marked as solved
2 Replies
1k Views
Hello, my name is Antony Basta and I am the developer of an app called SecuriKey. SecuriKey allows any old apartment building intercom to be controlled from an app. Users can create entry codes that work once, up to a certain date, or are instantly revokable. There is no need for any new or additional hardware – it works with the buildings existing intercom. Currently, the app is using Stripe for subscriptions and it was initially approved 2 months ago for the App Store. I pushed an update a few weeks ago and Apple Rejected it because I am not using In-App Purchase (IAP). I submit an appeal, mentioning that we offer a consumable service that takes place outside of the app (guideline 3.1.3(e)), it is effectively a "Reader" app since we provide VoIP numbers to our customers (guideline 3.1.3(f)), and SecuriKey requires hardware to function – that is, it will not work without a physical intercom (guideline 3.1.4). Additionally, we do ship physical goods to our customers (NFC tags and Security Signs) monthly and require monthly service personnel to service the building using the physical goods for our own back end workflow. A lot of back and forth has occurred between the review team and at the time of this post, the app is still being reviewed by the board. I thoroughly believe we fit within all of the mentioned IAP exception guidelines – but that's a conversation for another day. As I wait, I began to delve into using IAP for this product. I was able to jerry-rig the IAP platform to feed Stripe the necessary data through the notifications apple sends when a subscription is made, and I am able to create an account and collect a payment. But there's one huge oversight. This is a cross-platform app. Meaning, roommates or family members who use different mobile operating systems, can be logged into the same account. A user may sign up from the iPhone but his/her roommate/family member may have an android that also has access to the service under the same account. Thus, the android user will not be able to change the IAP subscription plan from the android side of the service. Furthermore, a web-portal is being developed, and using IAP will not allow us to modify the subscription via the web-portal either. Has anyone ever dealt with something like this? How can you use IAP for a cross-platform application and allow android users to modify the subscription (Whether it be canceling, upgrading, or downgrading)? I appreciate all comments and feedback as I wait on Apple's review board.
Posted
by
Post not yet marked as solved
1 Replies
363 Views
I am stuck in receipt verification. Here's the scenario : If I am logged in with User A's apple id on the device. User A purchases a subscription in my app. User A signs out from the app. User B sign-in into the app. User B changes device's apple Id login to his own apple id. Now if I fetch the receipt from bundle then will it be of User A's apple id transaction receipt or User B's apple id transaction receipt.
Posted
by
Post not yet marked as solved
0 Replies
550 Views
When trying to verify the receipt of a sandbox user that we have deleted, we're getting back a status code of 21003. The docs says this is "The receipt could not be authenticated" which doesn't really make a lot of sense. I would expect to get back a status code of 21010 "The user account cannot be found or has been deleted". This feels like a bug, I expect to get back 21003 when this password is missing or incorrect. If this is intentional behaviour can we rely on always getting this status in this case?
Posted
by
Post not yet marked as solved
0 Replies
237 Views
Hi all, I am trying to implement app premium features subscription ( one month subscription) but every time I try to validate receipt against Sandbox I get response that receipt is malformed. I tried to validate it on both client and API side but same result for both. I can fetch created subscription on App store and buy it but when it comes to receipt validation it fails. Any ideas what I should look at, already tried many things from forum. Thanks and cheers.
Posted
by
Post not yet marked as solved
1 Replies
323 Views
Hi, I have received email form "asc_its <aits@ apple.com>" without space before apple. This mail asks about my personal information, Is it SCAM? The email says the following ==> Hello, We have recently been advised that payments to your content provider account are on hold. Additional information about bank account holder #### ##### ##### ##### , is required before payments can be resumed. This name fully or partially matches a sanctioned entity/person on an OFAC sanctions list or another government’s sanctions list where this is provided for by the law of that country. Please reply to this incident and provide the following information for ###### ##### ###### within 48 hours to avoid payment delays: Full Name Address Nationality Citizenship Date of Birth (MM/DD/YYYY format) Place of Birth COPY of passport or national identification showing proof of date of birth Best regards, Disbursements Apple Media Services Reference: ########
Posted
by
Post not yet marked as solved
6 Replies
1.4k Views
For the past week macOS isn't providing my apps with MAS Receipt data(ie, MyAppName.app/Contents/_MASReceipt/receipt) at launch time when testing with App Store Connect Sandbox users. Finder shows the following error: “MYAPP” is damaged and can’t be opened. Delete “MYAPP” and download it again from the App Store. I tried to create new sandbox users, tried to run my app on Catalina, BigSur and Monterey. I see the following in the Console log: Fetching missing receipt for sandbox app /Users/***/Library/Developer/Xcode/DerivedData/MYAPP/Build/Products/Debug/MYAPP.app <ReceiptRefreshRequest: 0x7f90b0905020>: Error fetching receipt for MYAPP_bundle_id - Error Domain=com.apple.commerce.client Code=500 "(null)" StoreLegacy: Failed to perform in-line receipt renewal for application at path /Users/***/Library/Developer/Xcode/DerivedData/MYAPP/Build/Products/Debug/MYAPP.app : 'Error Domain=com.apple.commerce.client Code=500 "(null)"' I created a bug report about this issue several days ago using the Feedback Assistant. FB9755646. I haven't received an answer yet. Any thoughts would be deeply appreciated! Thanks! Alex
Posted
by
Post not yet marked as solved
0 Replies
258 Views
I created new campaigns for black friday. but it has been waiting in 'Waiting for Review' status for 4 days. I send mail and no response. It's almost black friday, the status needs to be 'Approved' in order to complete my tests. What can I do to speed up the process? Do you have a problem with yourself? I added language support to previous packages and they show yellow button in their case.
Posted
by
Post not yet marked as solved
0 Replies
261 Views
We are testing IAP function with a Unity based app. The app is built with xCode 13.1 and SDK for iOS 15. We noticed that for devices upgraded to IOS 15.1, IAP restore function works normally like other IOS versions, when testing through xCode. However, testing the same build through TestFlight, still on devices with IOS 15.1, the IAP restore function does not work at all. It is illogical that the app on the same device, built with the required xCode version, only installed through different routes could yield different results in tests. Does anyone have any idea why this could be happening?
Posted
by
Post marked as solved
8 Replies
1.9k Views
Because the receipt file doesn't exist at the following path, my application exits with error code 173. /Applications/Notched Up.app/Contents/_MASReceipt/receipt However unlike in the past where it then re-launches and works, I'm now getting the error message that this application is damaged and must be re-downloaded from the App Store. In the console I see the following messages. error 12:35:02.553477+0800 Notched Up (com.apple.libsqlite3) cannot open file at line 45340 of [d24547a13b] error 12:35:02.553498+0800 Notched Up (com.apple.libsqlite3) os_unix.c:45340: (2) open(/var/db/DetachedSignatures) - No such file or directory default 12:35:04.481080+0800 storeuid (com.apple.commerce) Fetching missing receipt for sandbox app /Applications/Notched Up.app default 12:35:04.707374+0800 storelegacy (com.apple.commerce) StoreLegacy: Failed to perform in-line receipt renewal for application at path /Applications/Notched Up.app : 'Error Domain=com.apple.commerce.client Code=500 "(null)"' My gut is telling me that something internal related to the App Store isn't working correctly as this code was functional a couple of weeks ago and while the first two lines show sql, this app doesn't use sqlite. App is signed with "Apple Distribution". Have tested app with "Apple Development". Have removed entitlements that need a profile and the provisioning profile. The App Store application shows the correct "Sandbox" tester account (in the preferences). I've logged the test account out and back in. I've verified that tester account is the same store locale as my main account. I've rebooted this i9 16" MBP running macOS 12.0.1, even thought it rebooted itself last night, because ???? Any advice, can you spot something I've done wrong?
Posted
by
Post not yet marked as solved
1 Replies
646 Views
Hi, We have auto renewable in app purchases in our application. As per the documentation we have configured Production & Sandbox URLs to receive V2 notifications. Also, created multiple sandbox test accounts to see if notifications can be received? Unfortunately not receiving any of the notifications as mentioned in the documentation to the configured URLs. If any one resolved this issue already, please comment. Thanks.
Posted
by
Post not yet marked as solved
2 Replies
585 Views
Hello, Apple Developer Forum team. My team wishes you happy New Year and late Merry Christmas! We wish you a pay raise and a lot of days off! :) Right now, my company works on a new program called MyQuickMac for macOS, which we plan to submit to App Store. Currently, my developer team is working on adding the in-app purchases to our product. While working on it, they encountered several issues, and this is exactly why I'm writing to you. Below, my team describes exactly which error did they encounter, and what did they try to resolve it. Please help us resolve these problems, it's very important for us. Our current product is built using Electron and Python as a server (Flask). We use the "InAppPurchases" module from Electron to add the in-app purchases (https://www.electronjs.org/docs/latest/tutorial/in-app-purchases). Currently, we use the Sandbox to test our system, and we encountered the following problem when we try to purchase any product: Purchasing mqm_1y2m... { transactionIdentifier: '', transactionDate: '', originalTransactionIdentifier: '', transactionState: 'failed', errorCode: 0, errorMessage: 'MZFinance.NoAccount_message', payment: { productIdentifier: 'mqm_1y2m', quantity: 1 } } { productIdentifier: 'mqm_1y2m', quantity: 1 } Failed to purchase mqm_1y2m. This error occurs when we click on the "Buy" button, after our program submits the payment to the payments queue. The payment is successfully added to the payment queue, but after we log in with our testing account, this error occurs. We have read the documentation (https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_sandbox?language=objc), and it says that to test the in-app purchases, we need to try to buy the product, log in with the testing account, and after this testing account will be added to the App Store automatically, but it doesn't happen. What do we do wrong? We tried creating several testing accounts, but none of them worked. Also, we can't sign out of the testing account after logging in. Currently, to do this we have to clear the App Store cache, remove all testing account-related items from the Keychain and reboot our device, which is a long process. We have read that to log out of the testing account, you need to select "Sign out" from the App Store, but because of the problem specified above, the App store doesn't have this option. Is this the correct way to sign out of the testing account? We hope that there should be some easy way to do it. We tried to find some information about the error "MZFinance.NoAccount_message", but there were only 5 results, and none of them were helpful. We tried the following to resolve this error: created different testing accounts (we tried 3 accounts, none worked) changed the country of the testing accounts cleared the payment queue reset the password of the testing account tried different products tried to log in to the App Store and iCloud with the testing account restarted our device numerous times cleared the App Store cache deleted the entries left after trying some testing accounts in the Keychain signed the Electron ".app" with our certificate None of these helped us, we get the same error every time. Here's the link to the code we use to initialize the payments and observe the queue. Initialize payments: https://pastebin.com/S9KvsNGK Observe queue: https://pastebin.com/v1Gmqqz5 Also, we attach 2 log files that were recorded with the "Console" application, while trying to purchase a product. Log #1 (all messages): https://pastebin.com/jpuJaMqv Log #2 (only messages from "commerce" process): https://pastebin.com/w27qkyEB So, our questions are: Why testing account isn't added to the App Store? Why does "MZFinance.NoAccount_message" error occur? How do we log out from the testing account? We hope that the Apple Developer Forum team will help us resolve these issues. Some information: Device: Mac Mini 2011 with macOS 10.12.6 Electron: 16.0.4 Python: 3.8.8 If you need any other information, please let us know, and we will send it to you as soon as possible. I hope that together, we will resolve these problems, and our new program will be successfully submitted to the App Store. Thank you and have a nice day! Oleksii and team. Owner of American Best Technologies Company, LLC.
Posted
by
Post not yet marked as solved
1 Replies
404 Views
Hello. After successful in-app purchase from the client, we pass the receipt to the server and verify it by calling verifyReceipt on the server. In the course of this process, we find something strange and ask for it. Below is the actual data that verifyReceipt responded to after payment in the actual production environment. (Some have been deleted) The strange thing is that we responded that receipt was OK with status 0, but receipt.bundle_id is not our bundle_id. How can a different bundle_id be in receipt? Does it happen under normal circumstances? Which method is the most complete verification method? Thanks, { "receipt":{ "receipt_type":"Production", "adam_id":, "app_item_id":, "bundle_id":"other bundle id", "application_version":"1", "download_id":, "version_external_identifier":, "receipt_creation_date":"2021-10-28 21:31:09 Etc/GMT", "receipt_creation_date_ms":"1635456669000", "receipt_creation_date_pst":"2021-10-28 14:31:09 America/Los_Angeles", "request_date":"2022-01-05 07:32:15 Etc/GMT", "request_date_ms":"1641367935663", "request_date_pst":"2022-01-04 23:32:15 America/Los_Angeles", "original_purchase_date":"2021-10-28 17:16:22 Etc/GMT", "original_purchase_date_ms":"1635441382000", "original_purchase_date_pst":"2021-10-28 10:16:22 America/Los_Angeles", "original_application_version":"1", "in_app":[ { "quantity":"1", "product_id":"", "transaction_id":"", "original_transaction_id":"", "purchase_date":"2021-10-28 21:31:09 Etc/GMT", "purchase_date_ms":"1635456669000", "purchase_date_pst":"2021-10-28 14:31:09 America/Los_Angeles", "original_purchase_date":"2021-10-28 21:31:09 Etc/GMT", "original_purchase_date_ms":"1635456669000", "original_purchase_date_pst":"2021-10-28 14:31:09 America/Los_Angeles", "is_trial_period":"false", "in_app_ownership_type":"PURCHASED" } ] }, "environment":"Production", "status":0, "sandbox":false, "service":"apple" }
Posted
by
Post not yet marked as solved
1 Replies
251 Views
The service we provide to our client is a short videos from famous people, like stars, politics, singer etc. So the whole process looks like this: User open the app, choose one author (famous person) from a list by clicking on author's picture. Tap a message author should say on the final video. Pay for that video by Apple in app purchase. Then author receive notification about new order, open the APP and record a 1-2 minutes short video. When video is done, author tap on Send button and user receive author's video. On that point the order is complete. We pay author royalty and get our commission as an agent. Then user open apple account and ask Apple for refund of that order. And Apple give user's money back after 2-3 days. In this case we provided service to that user (by sending video), paid royalty to author and gave user's money back. Now we have many orders like that and we loose so much money. So what we could do to not loose our money?
Posted
by
Post not yet marked as solved
2 Replies
297 Views
I've got a user that is having a problem accessing their unlocked in-app purchase. They've sent us a copy of their receipt, and I plugged the Order ID into the Lookup API (https://developer.apple.com/documentation/appstoreserverapi/look_up_order_id). I'm getting {"status":1} as a result on the lookup which the docs say is invalid (https://developer.apple.com/documentation/appstoreserverapi/orderlookupstatus), and I'm not quite sure what to do with that. Does that mean they faked the invoice? That seems really unlikely to me. I also wondered if that means they revoked the purchase, but in that case I would expect it to still return the transaction so I could see the revocation reason and date. I don't want to go back to the user with "Sorry, your purchase is not valid" without knowing why. Any additional information or guidance on interpreting "Invalid" would be really helpful.
Posted
by
Post not yet marked as solved
1 Replies
312 Views
Hello all, Our app's product is a time based limited duration offering and we want to offer a monthly subscription for 4 months or an up-front payment for the 4 months. The up-front payment is easy to add (thinking non-renewing subscription) but I can't seem to automatically cancel a renewing subscription after 4 months of the user paying. In general hoping for a some way to set a schedule to end or stop the subscription or if we can cancel subscriptions after the 4 months by making calls to an API or something. Alternatively, some sort of 4 month long financing/pay over the course of 4 months would work similarly.
Posted
by
Post not yet marked as solved
2 Replies
333 Views
I need to track revenue to some analytics services server-side when receiving App Store Server Notifications about subscription status updates. But response body from notifications and from verifying receipt doesn't include price info. Is it possible to get the price of the transaction on the server? Maybe is it a way of validating transaction ids or something like that? Currently, I can get the price and currency only client-side in the app from products info?
Posted
by