I came up to implement In-App Purchase on iOS with Unity. I looked for the test cases for In-App Purchase, however, couldn't find their cases. Therefore, I memorize the test cases I checked myself.
At first, please read In-App Purchase Best Practice. We should implement your In-App Purchase according to this document.
For instance, I implement below list:
- Add a transaction queue observer at application launch
- Query the App Store for product information before presenting your app’s store UI
Figure 1 shows the process, second of the list, from showing available products to purchasing them.
- Retrieve product identifiers from a data store
- Request products from Apple Store
- Show available products on an app
Below, the test cases I checked. the left side of the table are test cases and the right side is expected results.
Purchasing and Subscribing test cases
|Test case||Expected result|
|Show a product list scene||The product list scene shows buyable products|
|Buy products||All products can buy|
|Close an app in the middle of a purchasing||The item corresponds to the purchased product is given the user next launch|
|Disconnect internet connection in the middle of a purchasing||The items correspond to the purchased are given the user next startup|
|Purchase a subscription product in advance. Switch an Apple account to another one on the same Device||The purchased subscription product must get unbuyable|
|Purchase a subscription product by the same Apple account on deferent devices (purchase a product on Device-A, then purchase it on Device-B)||Must purchase the product on Device-A and must not purchase it on Device-B|
|Purchase a subscription product with the same Apple account among two devices||Must purchase the product on both devices|
|Purchase a subscription product in advance and close the app completely. Wait until the subscription is updated by Apple Store and launch the app||Must give the user the items corresponding to the subscribed product|
Implement a restoring product for subscription products.
|Test case||Expected result|
|Restore the subscription after the subscription product is renewed||The app gives the items that corresponding to the subscription to the user | Buy a subscription product with the same Apple account. Restore Device-A, next Device-B|
|Buy a subscription product in advance. Use both of devices, Device-A and Device-B. Then restore Device-A next Device-B||An app gives the items corresponding to the subscription to Device-A, although it doesn’t on Device-B|
|Launch an app after closing the app in the middle of Restoring Purchased Products||Do not execute unprocessed transactions|
|Sign out from App Store, then launch an app||The user is prompted to sign in App Store if unprocessed transactions are existed|
|Tap Buy a product button multiple times||Show only one In-App Purchase dialog|
|Use unregistered product identifiers in iTunes connect that it's in part of an app's buyable item list||Do not show the unregistered products in app's item list|