The underlying question is at the bottom and is addressed to B4i developers who have practical experience with implementing Auto_Renewable subscriptions.
The situation
An app has been active in the App Store for months and has many "Auto_Renewable" subscribers with whom everything works without problems.
However, a few users have reported in between that their active subscription is no longer recognized by the app.
Technical framework
The app was built with the Hosted Builder, Certificate and Provisionfile were newly created.
Purchase and validation are performed as described here: https://www.b4x.com/android/forum/t...-auto-renewable-subscriptions.132432/#content
On purchase, the receipt is stored in the keychain and read on app startup and validated by our own server (https://developer.apple.com/documen...tore#//apple_ref/doc/uid/TP40010573-CH104-SW1).
The purchases work via sandbox and production.
The problem
The receipt is read out of the keychain at App start for the individual affected users, just like for all others, but the validation results in the status "21006", i.e. "expired" (https://developer.apple.com/documentation/appstorereceipts/status).
Further procedure
The issue could not be reproduced by the developer yet, which makes troubleshooting more difficult.
One approach would have been "store.RestoreTransactions", in the hope that a result with the last valid "receipt" is delivered.
However, this call does not return a result:
This is probably because this field is deprecated (https://developer.apple.com/documentation/storekit/skpaymenttransaction/1617722-transactionreceipt).
A way is now being looked for to get a new receipt for future server side receipt validation.
The question
What specifically needs to be done to get a valid "receipt" object for an active Auto_Renewable subscription subsequently?
Maybe I missed something or Apple changed something recently...
The situation
An app has been active in the App Store for months and has many "Auto_Renewable" subscribers with whom everything works without problems.
However, a few users have reported in between that their active subscription is no longer recognized by the app.
Technical framework
The app was built with the Hosted Builder, Certificate and Provisionfile were newly created.
Purchase and validation are performed as described here: https://www.b4x.com/android/forum/t...-auto-renewable-subscriptions.132432/#content
On purchase, the receipt is stored in the keychain and read on app startup and validated by our own server (https://developer.apple.com/documen...tore#//apple_ref/doc/uid/TP40010573-CH104-SW1).
The purchases work via sandbox and production.
The problem
The receipt is read out of the keychain at App start for the individual affected users, just like for all others, but the validation results in the status "21006", i.e. "expired" (https://developer.apple.com/documentation/appstorereceipts/status).
Further procedure
The issue could not be reproduced by the developer yet, which makes troubleshooting more difficult.
One approach would have been "store.RestoreTransactions", in the hope that a result with the last valid "receipt" is delivered.
However, this call does not return a result:
B4X:
Dim receiptobject As NativeObject = no.GetField("transactionReceipt")
This is probably because this field is deprecated (https://developer.apple.com/documentation/storekit/skpaymenttransaction/1617722-transactionreceipt).
A way is now being looked for to get a new receipt for future server side receipt validation.
The question
What specifically needs to be done to get a valid "receipt" object for an active Auto_Renewable subscription subsequently?
Maybe I missed something or Apple changed something recently...