Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support native payment method on iOS devices #6664

Open
20 of 50 tasks
bedhub opened this issue Mar 5, 2024 · 0 comments · May be fixed by #7026
Open
20 of 50 tasks

Support native payment method on iOS devices #6664

bedhub opened this issue Mar 5, 2024 · 0 comments · May be fixed by #7026
Assignees
Labels
feature: payment in apps goal: mobile integration roadmap label to indicate that this issue is/was part of the roadmap and is visible on the website
Milestone

Comments

@bedhub
Copy link
Contributor

bedhub commented Mar 5, 2024

As an iOS app user i want to upgrade to a paid account using my app store payment method.

AC

  • Upgrading to a paid plan should provide the option to pay with app store account.
  • The payment should renew automatically
  • Cancellation requests through the app stores are handled so that accounts are disabled.
  • Cancel subscription from web interface redirects to app store page.

Tasks

  • Display payment settings on iOS
  • Display upgrade dialogs/all available plans on iOS
  • Add support for displaying the Apple payment method in payment settings
  • Redirect to Apple subscription settings when trying to:
    • change/cancel the subscription
  • Integrate App Store into service
  • Invoke App Store flow from the client when selected
  • Check and if needed apply for entitlements
  • Create subscription in Apple product settings
  • Show prices localized in the user's currency
  • Hide business plans from selector if on iOS
  • Handle canceled/expired subscriptions on server
  • Handle plan changes on server
  • Make sure signing on a non-iOS device works and handles everything correctly (i.e. you must cancel your App Store subscription before subscribing using PayPal, etc.)
  • Make sure signing on an iOS device where the user isn't signed on by the user works correctly (i.e. you cannot change subscription settings if your App Store account isn't signed in)
  • Make sure that if all notification attempts fails we rollback or block the user as payment pending
  • Make sure that users who switch to the app store payment get locked if we do not receive a notification from Apple within some time, but that they have full access in the meantime (since this is asynchronous)
  • Account is locked after a while if there's no payment for the paid plan
  • Make sure that users who cancel their subscriptions can resubscribe with any payment method
  • Accounting Accounting integration for iOS payment #6965
    • Check if we keep payment history
  • Add usage tests
  • Rebase on master
  • Add client / end-to-end tests

Server

MR 623

Test notes (You may want to grab a snack for this)

  • Verify that App Store payment is the only option on iOS (you should automatically select it).
  • Verify that App Store payment is unavailable on Android, web, and desktop.
  • Sign up for a paid account using App Store in Euros. Verify this works and that the prices are displayed correctly.
  • Sign up for a paid account using App Store in some other currency (USD, BRL, GBP, etc.). Verify this works and that the prices are displayed correctly.
  • Sign up for a free account, then switch to App Store payment. Verify this works.
  • Sign up for a paid account using PayPal, then try to switch to App Store without canceling. Verify this does not work.
    • Cancel the subscription, and then try to switch to App Store. Verify this works.
  • Change an App Store subscription from Revolutionary to Legend. Verify this works and that this is near-instant (should switch within a minute).
  • Change an App Store subscription from Legend to Revolutionary. Verify this works, but the switch does not occur until the subscription renews.
  • Verify that App Store subscriptions cannot be altered directly on any non-iOS app. You are redirected to the iTunes store.
  • Try to delete your account with an App Store subscription. Verify you cannot do that.
    • Deleting from Settings -> Global settings -> Delete account
    • Deleting using Terminate Account
  • Create some aliases, calendars, a template list, contact list, and custom domains.
  • Cancel a subscription. Once the subscription has expired, manually run the App Store Subscriptions batch job. Verify the account has no custom aliases, calendars, template lists, contact lists, or custom domains.
  • Downgrade an App Store subscription from Legend to Revolutionary with exceeded Revolutionary alias limits (i.e. more than 15
    aliases). Verify that emails cannot be sent until this is resolved once downgraded.
  • Request a refund as a user and verify that we put the account into INITIAL_PAYMENT_PENDING state (Not possible to test on Sandbox. Only prod)
  • DO THIS ONE LAST: Disable app store notifications (you can remove the sandbox URL - make sure to replace it when you are done).
    • On an account where there is an ongoing subscription that was successfully set up BEFORE you disabled app store notifications:
      • Create some aliases.
      • Wait five additional minutes until after the subscription should renew, then manually run the App Store Subscriptions batch job.
      • Verify that all aliases are present, but the customer is set to Initial Payment Pending.
    • Try to change a Free plan to Revolutionary with App Store
      • Create some aliases.
      • Wait five additional minutes until after upgrading, then manually run the App Store Subscriptions batch job.
      • Verify that all aliases are deleted.
    • Re-enable app store notifications. Note that app store notifications will usually not be sent by Apple until 15-60 minutes have passed.
@murilopereirame murilopereirame self-assigned this Mar 22, 2024
@murilopereirame murilopereirame linked a pull request May 29, 2024 that will close this issue
@bedhub bedhub added the roadmap label to indicate that this issue is/was part of the roadmap and is visible on the website label Jun 11, 2024
@bedhub bedhub added this to the Roadmap milestone Jun 11, 2024
@charlag charlag assigned charlag and unassigned murilopereirame, paw-hub and wec43 Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature: payment in apps goal: mobile integration roadmap label to indicate that this issue is/was part of the roadmap and is visible on the website
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants