Hello, I have a few questions about the App Store Server API.
According to the document, if 'OriginalTransactionIdNotFoundError(errorCode: 4040005)' is received as a response after calling the production environment API if there is no environment information, it is written to call the sandbox environment, but 'Get Transaction Info' / 'Get Transaction History' API call and when 'TransactionIdNotFoundError(errorCode: 4040010)' is received, can I call it in the sandbox environment?
Is the root certificate of the X.509 certificate chain on x5c claim in JWSDecodedHeader always AppleRootCA-G3?
If I add and recall the query parameter '?sort=DESCENDING' in the Get Transaction History API, will the first transaction information always have the largest expiration date?
Post
Replies
Boosts
Views
Activity
Currently, 'Get Transaction History', 'Get Transaction Info', 'Get All Subscription Statuses' and 'Notifications V2' are being used in the App store Server API.
When I decoded the JWS received in response and checked the root certificate, it was always 'AppleRootCA-G3'.
Are there cases where the root certificate is not 'AppleRootCA-G3'?
Is the Apple root certificate in the App Store Server API response always 'Apple Root CA - G3'?
When isn't it?
What criteria should I set for the 'performRevocationChecking' parameter value of the verifyChain method of the ChainVerifier class in the App Store Server Library?
I am implementing the 'App Store Server API' call myself. Do you include the root certificate in the certificate chain verification process?
Can root certificates be forged?
We are currently managing four root certificates.
Checked the ChainVerifier class code in 'App Store Server Library'.
I checked that the root certificate was excluded when I called the CertPathValidator.validate method. So the root certificate is not falsified?
Is it okay if I don't even check my fingerprints?
Received 'REFUND' notification from server for 'App Store Server Notification V1'.
Among the 'responseBodyV1' properties, the 'original_transaction_id' value and
Should I find and process transactions that match 'unified_receipt' > 'latest_receipt_info' > 'original_transaction_id'?
Sometimes there are no transactions in the history of 'latest_receipt_info' that match 'original_transaction_id'.
I received a refund notification, but the latest_receipt_info property does not exist inside the unified_receipt property, or there is no transaction matching the original_transaction_id property value. How can I check the cancellation_date_ms property value?
I received a refund notification for a consumable product, but the latest_receipt_info property does not exist in the unified_receipt property, or there are no transactions that match the original_transaction_id property value.
Are the original_transaction_id property values really refunded?
How can I check the cancelation_date_ms value and cancelation_reason value?
https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/handling_refund_notifications
I received a refund notification for a consumable product, but the latest_receipt_info property does not exist in the unified_receipt property, or there are no transactions that match the original_transaction_id property value.
Are the original_transaction_id property values really refunded?
How can I check the cancelation_date_ms value and cancelation_reason value?
V2 Notifications cannot be changed.
I'm constantly struggling because of this phenomenon. Please reply.
https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/handling_refund_notifications
I call transaction information for several apps. And I don't have environment information.
So I'm calling the sandbox environment as an official guide.
However, unlike the official guide, certain apps sometimes succeed by calling an endpoint using a production URL to receive an error code 401 and calling an endpoint using a sandbox environment.
Why does this difference occur unlike the official guide?
Because of this difference, sometimes it's a production environment and JWT hasn't expired, but I get a 401 error and call the sandbox environment.
2. Please let me know the solution.
Hello, I call transaction information for several apps. And I don't have environment information.
That's why I'm calling the sandbox environment as an official guide.
Call the endpoint using the production URL. If the call succeeds, the transaction identifier belongs to the production environment.
If you receive an error code 4040010 TransactionIdNotFoundError, call the endpoint using the sandbox environment.
If the call succeeds, the transaction identifier belongs to the sandbox environment. If the call fails with the same error code, the transaction identifier isn’t present in either environment.
However, unlike the official guide, certain apps sometimes use production URLs to call endpoints to receive 401 status codes and successfully call endpoints using the sandbox environment.
Why does this difference occur unlike the official guide?
I receive a 401 status code in response from a production environment endpoint, I want to know if this status code is a real error or if I have to call it into a sandbox environment.
Can I check with the key 'x-apple-request-uuid' in the response header?
Please let me know the solution.
Hello, I'm using 'App Store Server Notifications V2'.
I have a question about 'CONSUMPTION_REQUEST' notification in 'notificationType'.
I was wondering if there would be any impact on refunds if I received this notification and didn't respond. (Always refund etc..)
accountTenure: Is this the app's customer account registration period?
lifetimeDollarsPurchased: Do I have to include the amount refunded from the in-app purchase amount since I bought it?
playTime: What is the standard for the time you used the app?
refundPreference: I don't know the meaning of the '3' value.
Hello
I called the 'Get Transaction Info' API with Auto-Renewable Subscription product type transactionId.
I received a success response and called the 'Get Transaction History' API with the value 'originalTransactionId'.
The response 'transaction' of the 'Get Transaction History' API that matches the 'webOrderLineItemId' value received through the 'Get Transaction Info' API was found, but the 'transactionId' value was different.
Why is this happening?
Which of the two transactions is normal?
https://developer.apple.com/documentation/appstoreserverapi/get_transaction_info
https://developer.apple.com/documentation/appstoreserverapi/get_transaction_history
Hello.
platform: Please let me know which platform 'Non-Apple platform' is referring to. For example, Google or Amazon? And is it correct to mean the platform that consumed the products received due to in-app purchases?
playTime: Does 'playTime' mean the time when the customer purchased the app and actually accessed the app? Or do you mean the time you accessed after the in-app purchase?
platform: Please let me know which platform 'Non-Apple platform' is referring to. For example, Google or Amazon? And is it correct to mean the platform that consumed the products received due to in-app purchases?
playTime: Does 'playTime' mean the time when the customer purchased the app and actually accessed the app? Or do you mean the time you accessed after the in-app purchase?
lifetimeDollarsPurchased/lifetimeDollarsRefunded: If the app has multiple accounts for that customer, is the purchased/refunded amount for all accounts?