| # In App Purchase Example |
| |
| Demonstrates how to use the In App Purchase (IAP) Plugin. |
| |
| ## Getting Started |
| |
| This plugin is in beta. Please use with caution and file any potential issues |
| you see on our [issue tracker](https://github.com/flutter/flutter/issues/new/choose). |
| |
| There's a significant amount of setup required for testing in app purchases |
| successfully, including registering new app IDs and store entries to use for |
| testing in both the Play Developer Console and App Store Connect. Both Google |
| Play and the App Store require developers to configure an app with in-app items |
| for purchase to call their in-app-purchase APIs. Both stores have extensive |
| documentation on how to do this, and we've also included a high level guide |
| below. |
| |
| * [In-App Purchase (App Store)](https://developer.apple.com/in-app-purchase/) |
| * [Google Play Biling Overview](https://developer.android.com/google/play/billing/billing_overview) |
| |
| ### Android |
| |
| 1. Create a new app in the [Play Developer |
| Console](https://play.google.com/apps/publish/) (PDC). |
| |
| 2. Sign up for a merchant's account in the PDC. |
| |
| 3. Create IAPs in the PDC available for purchase in the app. The example assumes |
| the following SKU IDs exist: |
| |
| - `consumable`: A managed product. |
| - `upgrade`: A managed product. |
| - `subscription`: A subscription. |
| |
| Make sure that all of the products are set to `ACTIVE`. |
| |
| 4. Update `APP_ID` in `example/android/app/build.gradle` to match your package |
| ID in the PDC. |
| |
| 5. Create an `example/android/keystore.properties` file with all your signing |
| information. `keystore.example.properties` exists as an example to follow. |
| It's impossible to use any of the `BillingClient` APIs from an unsigned APK. |
| See |
| [here](https://developer.android.com/studio/publish/app-signing#secure-shared-keystore) |
| and [here](https://developer.android.com/studio/publish/app-signing#sign-apk) |
| for more information. |
| |
| 6. Build a signed apk. `flutter build apk` will work for this, the gradle files |
| in this project have been configured to sign even debug builds. |
| |
| 7. Upload the signed APK from step 6 to the PDC, and publish that to the alpha |
| test channel. Add your test account as an approved tester. The |
| `BillingClient` APIs won't work unless the app has been fully published to |
| the alpha channel and is being used by an authorized test account. See |
| [here](https://support.google.com/googleplay/android-developer/answer/3131213) |
| for more info. |
| |
| 8. Sign in to the test device with the test account from step #7. Then use |
| `flutter run` to install the app to the device and test like normal. |
| |
| ### iOS |
| |
| 1. Follow ["Workflow for configuring in-app |
| purchases"](https://help.apple.com/app-store-connect/#/devb57be10e7), a |
| detailed guide on all the steps needed to enable IAPs for an app. Complete |
| steps 1 ("Sign a Paid Applications Agreement") and 2 ("Configure in-app |
| purchases"). |
| |
| For step #2, "Configure in-app purchases in App Store Connect," you'll want |
| to create the following products: |
| |
| - A consumable with product ID `consumable` |
| - An upgrade with product ID `upgrade` |
| - An auto-renewing subscription with product ID `subscription` |
| |
| 2. In XCode, `File > Open File` `example/ios/Runner.xcworkspace`. Update the |
| Bundle ID to match the Bundle ID of the app created in step #1. |
| |
| 3. [Create a Sandbox tester |
| account](https://help.apple.com/app-store-connect/#/dev8b997bee1) to test the |
| in-app purchases with. |
| |
| 4. Use `flutter run` to install the app and test it. Note that you need to test |
| it on a real device instead of a simulator, and signing into any production |
| service (including iTunes!) with the test account will permanently invalidate |
| it. Sign in to the test account in the example app following the steps in the |
| [*In-App Purchase Programming |
| Guide*](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/ShowUI.html#//apple_ref/doc/uid/TP40008267-CH3-SW11). |