pay for playback download checkout

This commit is contained in:
2026-02-23 16:59:12 +01:00
parent 947d0e9641
commit e608c17775
8 changed files with 429 additions and 38 deletions
+34
View File
@@ -242,6 +242,38 @@ const StripeProvider = ({ children }) => {
[canUseEmbeddedCheckout, runCheckoutSession]
)
const createPlaybackDownloadCheckout = React.useCallback(
async (projectId) => {
if (!projectId) {
throw new Error('Aucun projet sélectionné.')
}
if (isWeb && !canUseEmbeddedCheckout) {
console.error('[StripeProvider] checkout blocked (missing embedded support)', {
hasStripeKey: Boolean(stripePublishableKey),
isClientSecretReady: false,
})
throw new Error(
'Le paiement intégré Stripe est indisponible pour le moment (clé Stripe ou client secret absent).'
)
}
const shouldUseEmbeddedCheckout = canUseEmbeddedCheckout
await runCheckoutSession({
callableName: 'subscription-createPlaybackDownloadCheckoutSession',
payload: {
projectId,
returnUrls: {
successUrl: STRIPE_SUCCESS_URL,
cancelUrl: STRIPE_CANCEL_URL,
},
uiMode: shouldUseEmbeddedCheckout ? 'embedded' : 'hosted',
},
logTag: 'playback download checkout error',
useEmbeddedFlow: shouldUseEmbeddedCheckout,
})
},
[canUseEmbeddedCheckout, runCheckoutSession]
)
const createCoinPackCheckout = React.useCallback(
async (productId) => {
if (!productId) {
@@ -376,6 +408,7 @@ const StripeProvider = ({ children }) => {
refreshCatalog: fetchStripeCatalog,
createSubscriptionCheckout,
createSongDownloadCheckout,
createPlaybackDownloadCheckout,
createCoinPackCheckout,
openEmbeddedCheckout: setClientSecret,
closeEmbeddedCheckout,
@@ -393,6 +426,7 @@ const StripeProvider = ({ children }) => {
fetchStripeCatalog,
createSubscriptionCheckout,
createSongDownloadCheckout,
createPlaybackDownloadCheckout,
createCoinPackCheckout,
setClientSecret,
closeEmbeddedCheckout,