+
+
+ {t('Bind a Pancake store + product')}
+
+
+ {bindStatusMessage}
+
+
-
+ {/*
+ Operator-facing explainer: why only ONE store + product needs
+ to be bound at the gateway level, and what each piece is used
+ for. Subscriptions reuse the same Store but get their own
+ per-plan product, configured in the Subscriptions admin.
+ */}
+
+
+ {t('Why only one store + product?')}
+
+
+ -
+ {t(
+ 'The bound Store is the parent container for every Pancake product new-api creates from this admin — both the wallet top-up product and any subscription-plan products. One store is enough; pin a different one only if you genuinely run separate Pancake catalogs.'
+ )}
+
+ -
+ {t(
+ 'The bound Product powers wallet top-ups: when a user enters any amount, new-api runs the checkout against this single Pancake product and overrides the price per session — no need to pre-create $1 / $5 / $10 SKUs.'
+ )}
+
+ -
+ {t(
+ 'Subscription plans do NOT use the bound Product — each plan has its own dedicated Pancake product, set in the Subscriptions admin (or auto-minted via the "+ Create" button there).'
+ )}
+
+
+
-
-
+ {/* Create section — first, since creating auto-fills the pick-existing dropdowns below. */}
+
+
+
+ setReturnURL(event.target.value)}
+ className='flex-1'
+ />
+
+
+
+ {t(
+ "Used as SuccessURL on the new product. You'll be prompted to confirm if left blank."
+ )}
+
+
+
+ {hasCatalog ? (
+ <>
+
+
+
+ {t('or pick existing')}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ ) : null}
+
+
+
+ {storeID || productID ? (
+
+ {storeID ? (
+
+ {t('Bound store:')}{' '}
+
+ {storeID}
+
+
+ ) : null}
+ {productID ? (
+
+ {t('Bound product:')}{' '}
+
+ {productID}
+
+
+ ) : null}
+
+ ) : null}
+
+
+