18

I am implementing Non-renewing subscription IAP in my app where I am making server implementation to expire a subscription. I am stuck when I click on a subscription I already have bought, It shows a dialog, "This In-App purchase has already been bought. It will be restored for free." with OK button. I have two questions here:

  1. Sometime it shows the above dialog but sometimes it shows "Tap buy to renew or extend it." dialog. Can anyone tell me whats reason behind this? Or it is just a Sandbox issue. (This screenshot from another thread.)
  2. When I get "This In-App purchase has already been bought. It will be restored for free." alert, how i can stop activity indicator? Is there a delegate method to track this?

I could not found but is there anything new came in iOS 8?

enter image description here

Thank you

Community
  • 1
  • 1
Vaibhav Saran
  • 12,848
  • 3
  • 65
  • 75
  • I have the same problem in iOS 8 sandbox with Consumable product type. Bought it once, can't buy it again... even though it's clearly stated that it's a consumable. Weird. – Dalibor Filus Oct 29 '14 at 21:53
  • I have the same problem in iOS 8 sandbox – Prakash Jat Oct 30 '14 at 07:55
  • Facing same issue in Non-Consumable IAP also. But the app has been submitted and approved by iTunes guys. – Vaibhav Saran Dec 01 '14 at 08:21
  • Hi - Were you able to solve the #2? I am facing exact same problem. I am not getting callback, if the product is already bought, and restored..it is frustrating. Please let me know – A B Vijay Kumar Nov 10 '18 at 03:00

2 Answers2

13
  1. For a non-renewable subscription, the correct dialog is "Tap buy to renew or extend it.". The reason for this is that once a non-consumable product is owned, it is owned permanently; hence the "renew or extend" language.

  2. You are getting this dialog because you are attempting to purchase the same product again before completing the transaction on the app's side. The App Store has approved the transaction and sent you a transaction ID, but you have not confirmed that you have delivered the promised content/access. Thus, the transaction is left in the approved state. The transaction remains tied to the app until you finish it.

See "Finishing the Transaction" in Apple's (confusing, convoluted) documentation.

ejensler
  • 216
  • 3
  • 6
  • for question 2, I know the problem but how to track this dialog, because the app may still display a activityIndicator to show the status is still processing. – zedzhao Jun 30 '16 at 05:51
  • Hey, did you get luck to resolve this issue, are you able to remove the activityIndicator? – Wasif Saood Sep 29 '16 at 08:49
0

I met this problem in consumable IAP, and I have called the function [[SKPaymentQueue defaultQueue] finishTransaction:transaction]. Then I found that there is a exception occurred in a function before the call, then I exchange the position of two function, the problem is solved now.

Kirsteins
  • 27,065
  • 8
  • 76
  • 78
Eanshy
  • 21
  • 4