subscription: strange transactionId uuid style

Sometime i got strange transactionId reported from the ios client.

Normally they are 15 digits like:

400000123456789

but sometimes i got 40 character uuid, example:

FAB60FFD-906D-48CB-8FED-092C4B2707D6

In that case the receipt does not contain any transactions (in_app list in the response when verifiying against apple is empty).

What does this mean? Is someone trying to hack or some strange fallback mechanism? Are there valid transactiondIds in this format?

I get similar String in response Header of verifyReceipt in the following header: x-apple-request-uuid

Replies

> Sometime i got strange transactionId ......the receipt does not contain any transactions


Then there should not be a transactionId.


If there are no IAPs in the receipt then it is reasonable to conclude that no IAPs were purchased. It sounds like a hack attack on your app.

sometimes apple is too slow and the transaction is not yet in the receipt, so i have to store the failed transactions to re-validate them later. But sometimes i get these weired transactions and it's useless to revalidate them.

I just look for some advice which format may be valid and which format i can drop instantly.

I have never found Apple "too slow". Whenever there is a call to updatedTransactions with a state of 'purchased' there is always an updated receipt. Are you finding something different?


EDIT - Wait - I mean the receipt in the device is updated, not that the Apple servers will respond with a latest_receipt_info field that is updated. - Is that your issue????

I mean our client sends a successfull purchase to our backend. I validate the receipt from the backend against apple and this transaction is not yet in the receipt. I store this transacion and when i check the receipt later again, the transaction is in the receipt and valid.

Maybe this is some kind of outage, i see saw this behaviour for some hours and then weeks or months without. Normally it happend on the sandbox.

>I mean our client sends a successfull purchase to our backend. I validate the receipt from the backend against apple and this transaction is not yet in the receipt. I store this transacion and when i check the receipt later again, the transaction is in the receipt and valid.


I would expect that the receipt that the client's device could capture after a call to updatedTransactions and send to your server would have the latest information. However, if you used an older receipt from that client and sent that older receipt looking for a latest_receipt_info field - that field may be delayed. After all, the new purchase receipt was just issued on one end of a transaction and may not have made it into the pre-existing database latest_receipt_info field for earlier receipts.