diff --git a/apps/colt-steele/src/pages/api/skill/[...skillRecordings].ts b/apps/colt-steele/src/pages/api/skill/[...skillRecordings].ts index eb2159b56..27d1afd2e 100644 --- a/apps/colt-steele/src/pages/api/skill/[...skillRecordings].ts +++ b/apps/colt-steele/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/devrel-fyi/src/pages/api/skill/[...skillRecordings].ts b/apps/devrel-fyi/src/pages/api/skill/[...skillRecordings].ts index eb2159b56..27d1afd2e 100644 --- a/apps/devrel-fyi/src/pages/api/skill/[...skillRecordings].ts +++ b/apps/devrel-fyi/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/devrel-fyi/src/pages/thanks/purchase.tsx b/apps/devrel-fyi/src/pages/thanks/purchase.tsx index 9cd6ac19c..55181476b 100644 --- a/apps/devrel-fyi/src/pages/thanks/purchase.tsx +++ b/apps/devrel-fyi/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,36 @@ 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 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 - const {session_id} = query + const paymentProvider = paymentOptions.getProvider(provider) - if (!session_id) { + 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 { diff --git a/apps/pro-aws/src/pages/api/skill/[...skillRecordings].ts b/apps/pro-aws/src/pages/api/skill/[...skillRecordings].ts index eb2159b56..27d1afd2e 100644 --- a/apps/pro-aws/src/pages/api/skill/[...skillRecordings].ts +++ b/apps/pro-aws/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/pro-aws/src/pages/thanks/purchase.tsx b/apps/pro-aws/src/pages/thanks/purchase.tsx index 72882b092..2ebcad466 100644 --- a/apps/pro-aws/src/pages/thanks/purchase.tsx +++ b/apps/pro-aws/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,36 @@ 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 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 - const {session_id} = query + const paymentProvider = paymentOptions.getProvider(provider) - if (!session_id) { + 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 { diff --git a/apps/pro-nextjs/src/pages/api/skill/[...skillRecordings].ts b/apps/pro-nextjs/src/pages/api/skill/[...skillRecordings].ts index eb2159b56..27d1afd2e 100644 --- a/apps/pro-nextjs/src/pages/api/skill/[...skillRecordings].ts +++ b/apps/pro-nextjs/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/packages/create-skill-app/templates/next/src/pages/api/skill/[...skillRecordings].ts b/packages/create-skill-app/templates/next/src/pages/api/skill/[...skillRecordings].ts index eb2159b56..27d1afd2e 100644 --- a/packages/create-skill-app/templates/next/src/pages/api/skill/[...skillRecordings].ts +++ b/packages/create-skill-app/templates/next/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/packages/create-skill-app/templates/next/src/pages/thanks/purchase.tsx b/packages/create-skill-app/templates/next/src/pages/thanks/purchase.tsx index 9cd6ac19c..6309b24ad 100644 --- a/packages/create-skill-app/templates/next/src/pages/thanks/purchase.tsx +++ b/packages/create-skill-app/templates/next/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,36 @@ 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 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 - const {session_id} = query + const paymentProvider = paymentOptions.getProvider(provider) - if (!session_id) { + 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 { @@ -57,7 +60,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => { } const purchaseType = await determinePurchaseType({ - checkoutSessionId: session_id as string, + checkoutSessionId: session_id, }) const product = await getProduct(purchase.productId)