1

The test was conducted with one account and two devices.

  1. Log in with your account in Device 1, run the application to pay for Product 1, and do not consume receipt.

  2. Log in with your account in Device 1, run the application and find a receipt in the pending state.

  3. In Device 1, the receipt is retrieved in the pending state with that account.

  4. Log in with your account in Device 2, run the application and find a receipt in the pending state.

  5. In Device 2, the receipt is not retrieved in the pending state with that account.

As a result, the receipt was completed through the receipt stored on the backend server, but the receipt cannot be consumed because there is no receipt on the client side.

I wonder if there is no way to solve the issue.

Gunn
  • 11
  • 1
  • What do you mean by "consume the receipt"? Do you mean completing the purchase transaction? What sort of product is it? Consumable or non consumable? – Paulw11 Aug 02 '22 at 09:12
  • @Paulw11 A receipt consumption means finishing the transaction. It is a consumable product. I didn't finish the transaction, but on the other device, no value comes out when I call the current transaction. – Gunn Aug 02 '22 at 09:31
  • So is 4 the test expectation or the result? I don't follow the relationship between 4 and 5 - 4 says you "find the receipt in the pending state" but 5 says "the receipt is not retrieved in the pending state". Personally I would not expect to be able to complete a purchase on device 2 that was begun on device 1. – Paulw11 Aug 02 '22 at 10:01
  • @Paulw11 This is the same account in the same application. If the device is different, is it common to not complete the transaction? – Gunn Aug 03 '22 at 01:26
  • I would think it is uncommon not to complete the transaction on the first device. The only time the transaction shouldn't be completed is if you have some error persisting the transaction to your backend (say a network issue). The next time the user returns to your app iOS will present the incomplete transaction to your payment observer and you would once again try to persist the transaction and then complete it. I would think it is pretty unlikely that the user would switch to another device to complete the purchase. – Paulw11 Aug 03 '22 at 05:53
  • @Paulw11I am a mobile game backend developer. If you run a global game, the issue arises. In the same region as Vietnam, users have a bad device environment. In this case, iOS / AOS transaction processing is very unstable, and for this process, you need to implement processing for special cases. I first confirmed that two devices have different results in one account, and I was curious about how to handle it. – Gunn Aug 03 '22 at 08:16
  • Can you clarify your question though - is "4" the expected result and "5" the actual result? As said, I would have assumed that the transaction would need to be completed on a single device. As long as the payment queue observer is instantiated immediately on app launch as per Apple guidelines then the pending transaction should be delivered to device 1. – Paulw11 Aug 03 '22 at 08:28
  • @Paulw11 The results in "4" and "5" are the actual results. With one account, you can't complete the transaction from another device for the product you paid in the same application. We also want users to use only one device, but users do not move according to our wishes. – Gunn Aug 03 '22 at 08:36
  • Correct transaction 1. Game login 2. Purchase of game products 3. Extract of receipt from the client 4. Delivery of receipt to server 5. Product payment from the server 6. End of receipt transaction in the client – Gunn Aug 03 '22 at 08:39
  • The issue that occurred 1. Game login 2. Purchase of game products 3. Extract of receipt from the client 4. End of the client before delivery of receipt to the server 5. Game login with other devices 6. No receipt from the client – Gunn Aug 03 '22 at 08:40
  • That would be the expected outcome. You need to complete the purchase on the original device. – Paulw11 Aug 03 '22 at 08:47

0 Answers0