From bbd16e5edb06e995c3097c14d29f0b144c1b2887 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Tue, 26 Mar 2024 15:04:02 -0500 Subject: [PATCH] feat(er): use PaymentOptions for Stripe provider --- .../pages/api/skill/[...skillRecordings].ts | 12 +++++++++ apps/epic-react/src/pages/thanks/purchase.tsx | 26 +++++++++++-------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/apps/epic-react/src/pages/api/skill/[...skillRecordings].ts b/apps/epic-react/src/pages/api/skill/[...skillRecordings].ts index eb2159b564..27d1afd2e4 100644 --- a/apps/epic-react/src/pages/api/skill/[...skillRecordings].ts +++ b/apps/epic-react/src/pages/api/skill/[...skillRecordings].ts @@ -2,6 +2,17 @@ import SkillRecordings, { SkillRecordingsOptions, } from '@skillrecordings/skill-api' import {nextAuthOptions} from '../auth/[...nextauth]' +import { + defaultPaymentOptions, + StripeProvider, +} from '@skillrecordings/commerce-server' + +export const paymentOptions = defaultPaymentOptions({ + stripeProvider: StripeProvider({ + stripeSecretKey: process.env.STRIPE_SECRET_TOKEN, + apiVersion: '2020-08-27', + }), +}) export const skillOptions: SkillRecordingsOptions = { site: { @@ -9,6 +20,7 @@ export const skillOptions: SkillRecordingsOptions = { supportEmail: process.env.NEXT_PUBLIC_SUPPORT_EMAIL, }, nextAuthOptions, + paymentOptions, } export default SkillRecordings(skillOptions) diff --git a/apps/epic-react/src/pages/thanks/purchase.tsx b/apps/epic-react/src/pages/thanks/purchase.tsx index 9cd6ac19cb..7a113a82cb 100644 --- a/apps/epic-react/src/pages/thanks/purchase.tsx +++ b/apps/epic-react/src/pages/thanks/purchase.tsx @@ -5,7 +5,6 @@ import { convertToSerializeForNextResponse, determinePurchaseType, PurchaseType, - stripeData, } from '@skillrecordings/commerce-server' import { EXISTING_BULK_COUPON, @@ -23,32 +22,37 @@ import {getProduct} from '@/lib/products' import {isEmpty} from 'lodash' import {Transfer} from '@/purchase-transfer/purchase-transfer' import {trpc} from '@/trpc/trpc.client' +import {paymentOptions} from '../api/skill/[...skillRecordings]' export const getServerSideProps: GetServerSideProps = async (context) => { const {query} = context - const {session_id} = query + const provider = + (query.provider instanceof Array ? query.provider[0] : query.provider) || + 'stripe' + const session_id = + query.session_id instanceof Array ? query.session_id[0] : query.session_id - if (!session_id) { + const paymentProvider = paymentOptions.getProvider(provider) + + if (!session_id || !paymentProvider) { return { notFound: true, } } - const purchaseInfo = await stripeData({ - checkoutSessionId: session_id as string, - }) + const purchaseInfo = await paymentProvider.getPurchaseInfo(session_id) const { email, - stripeChargeId, + chargeIdentifier, quantity: seatsPurchased, - stripeProduct, + product: merchantProduct, } = purchaseInfo - const stripeProductName = stripeProduct.name + const stripeProductName = merchantProduct.name - const purchase = await getSdk().getPurchaseForStripeCharge(stripeChargeId) + const purchase = await getSdk().getPurchaseForStripeCharge(chargeIdentifier) if (!purchase || !email) { return { @@ -312,7 +316,7 @@ export default ThanksVerify const MailIcon = () => { return ( -
+