stripe-paymentsapplepayapplepayjs

Setting up recurring payments with Apple Pay and Stripe - but not using Stripe subscriptions


We have our own payment processing system. This takes a customer token from Stripe's response after initially checking out, and uses it each month to charge the customers card.

We want to do similar for mobile wallets, like Apple Pay.

However, Stripe docs indicate that it only returns a token which is 'single use', so the customer would have to authenticate the payment each month:

enter image description here

We aren't able to integrate with Stripe's 'subscriptions' service, as we'd have to migrate across entirely to Stripe - which we can't do.

So as a result, is it possible to get a reusable token - or does the 'subscription' it's referring to mean that we can get a reusable token in the same way as a standard card payment?

And by reusable token - I mean, the customer doesn't need to authenticate the payment each month.

Hope that makes sense!


Solution

  • When you accept an Apple Pay payment, you can still save the underlying card for future payments. This will then work whether you use Billing (their recurring payments product) or just create one-time payments yourself.

    The call out from Stripe in their docs is more around the rules coming from Apple. If your customer is checking out in your application or website, you are expected to show them the Apple Pay UI to confirm the payment again instead of using a previously saved card. On the other hand, if you are doing recurring payments, you can use the previously saved card for future payments.

    The integration itself is fairly straightforward. You would create a PaymentIntent server-side and collect the card details client-side whether via Apple Pay or not. Since you want to save card details for future payments you would also pass setup_future_usage: 'off_session' on the PaymentIntent creation. After a successful payment, a PaymentMethod of type card would be attached to the customer with the id pm_123 and you could use this in future recurring payments.

    This flow is covered in Stripe docs here and also applies to Apple Pay and this section covers how to make the future payments.