Extra Horizon
GitHub
  • Extra Horizon Documentation
  • Getting Started
    • Start familiarizing yourself
  • Tutorials
    • Medical Device Tutorial
      • Preparation
      • Build your first prototype
        • Define a data model
        • Configure your workflows
          • Workflow 1: Analyze a measurement
          • Workflow 2: Create & store a PDF report
          • Workflow 3: Send an e-mail
        • Define your permissions
          • Update your schema with user permissions
          • Update your schema with group permissions
        • Build the Front-End
          • Set up oAuth in your backend
          • Demo login page
      • Summary & Wrap up
    • Polysomnography (PSG) Tutorial
    • Retool - Building dashboards Tutorial
  • FAQ
    • General
  • Services
    • Identity and Access Management
      • User service
        • Users
        • Groups
        • Global roles
        • Configuration
      • Auth Service
        • Applications
        • OAuth2
        • OAuth1
        • MFA
        • OpenID Connect
          • Google Cloud
          • Azure ADFS
    • Data Management
      • File Service
      • Data Service
        • Schemas
        • Documents
        • FAQ Data Service
    • Automation
      • Task Service
        • Functions
        • Tasks
        • API Functions
        • Examples
          • Hello world (JS)
          • Hello world (Py)
          • Hello world (Docker)
        • FAQ
      • Dispatchers Service
      • Event Service
        • System Events
    • Communication
      • Notification Service
        • Notifications
        • Settings
      • Mail Service
    • Other
      • Localization Service
        • Language Codes
      • Template Service
        • Localizations
      • Payments Service
        • Subscriptions
        • Stripe
        • iOS App Store
      • Configurations Service
  • API Reference
    • OpenAPI Specifications
    • 📦Changelog
      • Per-service Changelog
    • Postman Reference Collection
  • Tools
    • SDK
    • CLI
    • Control Center
  • Additional Resources
    • Resource Query Language (RQL)
    • Handling Errors
    • GitHub
    • API interaction (Python)
    • Migration guide: Enabling verification request limiting
  • ExH Platform
    • 🙋Support
    • ⏱️Usage and Performance
    • 🗺️Regions
    • ⚖️Cloud Subscription Agreement
    • Security, Privacy & Quality
      • 🔓Security
      • 🇺🇸CFR 21 Part 11
      • ExH as OTS Software
Powered by GitBook
On this page

Was this helpful?

  1. Services
  2. Other
  3. Payments Service

iOS App Store

PreviousStripeNextConfigurations Service

Last updated 3 years ago

Was this helpful?

As of version 1.1 of the payments service it has support for (auto-renewing) subscriptions. The other payment options that apple provide are currently not supported by the payment service.

Configuring products

Before a "purchase" can be made, a product needs to be defined.

Subscription products

For subscriptions the product needs to be defined in two places:

  • App Store Connect

  • Payments service

How to define a product in the App Store Connect? We will point you towards the documentation of Apple, as we do not control this information and thus do not know if it has been updated or not. Therefore, it is easier to just point to the documentation of Apple as that will always be the most up-to-date information. You can find Apple's documentation .

How to define a product on the Payments service: We developed the endpoint POST /appStore/subscriptions/products.

This endpoint takes the following properties in the body of the request:

{
  "name": "FibriCheck Premium Monthly",
  "appStoreAppBundleId": "com.qompium.fibricheck",
  "appStoreProductId": "fibricheck-premium-monthly",
  "subscriptionGroup": "fibricheck",
  "subscriptionTier": "premium"
}

The property name will be used as the name that will be displayed towards the user in the Mobile App, Web App, ...

The property appStoreAppBundleId needs to match with the bundleId as you had filled in when configuring the product on the App Store Connect page. It represents the unique name for the application. Apple uses this to differentiate which products belong to which app.

The property appStoreProductId needs to match with the productId as you had filled in when configuring the product on the App Store Connect page. It represents the unique name for the product. Apple uses this to differentiate which product it is that the user wants to purchase.

The property subscriptionGroup needs to match with the subscription group as you had filled in when configuring the product on the App Store Connect page.

The property subscriptionTier needs to match with the tier as you had filled in when configuring the product on the App Store Connect page.

After a product has been configured, the rest of the business logic for the App Store (completeTransaction, server2server notifications and subscription status re-evaluator) will lookup the product in the database by the appStoreProductId field.

here