We are using Stripe on our website. Craft CMS 2.6.2997 and Commerce 1.2.1351. Can we use the apple pay function?

I read the Stripe document(https://stripe.com/docs/stripe-js/elements/payment-request-button#html-js-testing-chrome). It seems possible to do that. But, I am not sure is it work on Commerce 2...

Anyone know?



Quick answer.

Yes you can use Apple Pay with Craft Commerce and the first-party Stripe Gateway Plugin.

In order to do that, you need to customise your template and add the functionality for the Payment Request button. What this does is more or less generating a charge promise token for Stripe (same way it does for card).

Charging the token is then handled by the gateway itself as you would with a card charge.

You can choose to display the button by checking if a relevant Payment API is supported with paymentRequest.canMakePayment() method.

I hope this helps in terms of a high overview.


The above answer was for use with Craft Commerce 2, as originally set by the question.

Requirement changed to Commerce 1.

The quick answer is still yes. We have completed a similar task before (with Stripe Elements and Stripe Sources), though that's before SCA. But Elements are SCA ready as far as I know and you need to use the PaymentIntents API PaymentMethods API.

Difference is that the main Stripe Gateway for commerce 1 (by omnipay) doesn't seem to support webhooks from Stripe, which informs your system whether a token (Source at the time) can be charged or not.

Hence, you need to build kind of your own plugin that loads an extra stripe gateway either new or extending the existing Stripe gateway class (extending is easier as you don't need to rebuild everything). Might need to add a custom Payment Form to your plugin.

  • You still need to build a custom template.
  • The template should use Stripe elements.
  • Logic is same, chargeable promise token which you need to charge.
  • Request for charging
  • Await webhook that notifies your system if your intent can be charged
  • And then continue with charging if available, otherwise inform user for any errors.

That's still a high overview of how the process works. You would need to use Payment Intents API and Payment Methods API


  • Thanks so much for the clear answer!! I will work on it next week. Thank you!
    – Sam Cheung
    Feb 20 '20 at 6:46
  • No problem at all. FYI, we handled the waiting for webhook process, by keeping the user on the checkout screen (with a spinner to show process being done) and hitting a custom endpoint of the plugin using AJAX that would inform us when the token can be charged before continuing. Feel free to mark it as accepted answer if everything worked for you.
    – RoussKS
    Feb 20 '20 at 9:02

Have you seen this plugin? -> https://plugins.craftcms.com/web-payments

edit: this is an answer for Craft 3/Commerce 2

  • Yes, I read it. But, we are using Craft 2, not Craft 3...
    – Sam Cheung
    Feb 18 '20 at 6:48
  • If you are using Craft Commerce 2, you should be using Craft CMS 3. The plugin doesn't need Craft Commerce. I believe you just got a bit confused there. Answer below
    – RoussKS
    Feb 18 '20 at 14:07
  • Wait, you can actually run Commerce 2 on Craft 2?
    – dmatthams
    Feb 18 '20 at 15:47
  • Oh.. we are using Craft CMS 2.6.2997, Commerce 1.2.1351
    – Sam Cheung
    Feb 19 '20 at 6:44
  • that kind of changes the whole answer to your query. it's still doable though.
    – RoussKS
    Feb 19 '20 at 9:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.