https://github.com/notrab/stripe-astro-loader
Fetch data from the Stripe API and use it in Astro collections
https://github.com/notrab/stripe-astro-loader
astro astro-integration stripe
Last synced: about 1 month ago
JSON representation
Fetch data from the Stripe API and use it in Astro collections
- Host: GitHub
- URL: https://github.com/notrab/stripe-astro-loader
- Owner: notrab
- Created: 2024-08-15T20:08:05.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-04-28T08:31:52.000Z (about 1 month ago)
- Last Synced: 2025-04-28T09:55:12.895Z (about 1 month ago)
- Topics: astro, astro-integration, stripe
- Language: TypeScript
- Homepage:
- Size: 222 KB
- Stars: 32
- Watchers: 1
- Forks: 1
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# stripe-astro-loader
Fetch data from the Stripe API and use it in Astro collections — only has **products** for now.
## Install
```bash
npm i stripe stripe-astro-loader
```## Configure
```ts
import { defineCollection } from "astro:content";
import { stripePriceLoader, stripeProductLoader } from "stripe-astro-loader";
import Stripe from "stripe";const stripe = new Stripe("SECRET_KEY");
const products = defineCollection({
loader: stripeProductLoader(stripe),
});const prices = defineCollection({
loader: stripePriceLoader(stripe),
});export const collections = { products, prices };
```Make sure to enable the experimental content layer in your Astro config:
```ts
import { defineConfig } from "astro/config";export default defineConfig({
experimental: {
contentLayer: true,
},
});
```## Usage
```astro
// pages/index.astro
---
import { getCollection } from 'astro:content';const products = await getCollection('products');
---
``````astro
// pages/products/[id].astro
---
import { getCollection,render } from 'astro:content';export async function getStaticPaths() {
const products = await getCollection('products');return products.map(product => ({
params: { id: product.id }, props: { product },
}));
}const { product } = Astro.props;
const { Content, headings } = await render(product);
---{product.data.name}
{JSON.stringify({product, headings}, null, 2)}```