Since Merx 1.2 there is a new payment method called credit-card-sca
and a new Cart
method called getStripePaymentIntent()
which help you to create a SCA-compliant checkout experience.
Checkout with Stripe’s Payment Intents
1. Get Payment Intent
Use $cart->getStripePaymentIntent()
to get the client_secret and save the Payment Intent ID in a user session.
<?php
$paymentIntent = $cart->getStripePaymentIntent();
$clientSecret = $paymentIntent->client_secret;
$kirby->session()->set('stripePaymentIntentId', $paymentIntent->id);
You need the $clientSecret
for the Stripe payment flow in step 2.
stripePaymentIntentId
is required for initializePayment()
in step 3.
3. Initialize Payment
Use the Payment Intent ID saved in the user’s session and merge it with other user data.
<?php
$data = [
'paymentMethod' => 'credit-card-sca',
'email' => 'chuck@example.com',
'name' => 'Chuck Norris',
…
];
$stripePaymentIntentId = $kirby->session()->get('stripePaymentIntentId');
$data = array_merge($data, [
'stripePaymentIntentId' => $stripePaymentIntentId,
]);
$redirect = merx()->initializePayment($data);
…