Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
microCMSとStripeを使ったJamstackなECサイトの作り方(Next.js篇)...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hidetaka Okamoto (Stripe)
February 22, 2022
Programming
3k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
microCMSとStripeを使ったJamstackなECサイトの作り方(Next.js篇)/jamjamjamstack-202202
ジャムジャム!!Jamstack_5【初心者歓迎LT会】
https://jamjamjamstack.connpass.com/event/236720/
Hidetaka Okamoto (Stripe)
February 22, 2022
More Decks by Hidetaka Okamoto (Stripe)
See All by Hidetaka Okamoto (Stripe)
Stripeではじめる Revenue Operations / jp_stripes_okinawa_8
stripehideokamoto
0
330
収益を高めるための Stripeダッシュボード活用術 / jp_stripes_online_7
stripehideokamoto
0
420
No-code SaaS and Full Site Editing / wcasia2023
stripehideokamoto
0
280
コア機能開発に集中するための Stripe Checkout活用法 / jp_stripes_deep_dive_202301
stripehideokamoto
0
560
State of Checkout 2022から見た オンライン決済フローの最適化/jp-stripes-miyzaki-202301
stripehideokamoto
0
240
サブスクリプション決済入門 Stripeでの実装方法と、要件定義時のポイント/okta-stripe-202301
stripehideokamoto
0
220
ノーコード・ローコードツールで サブスク運用を効率化する方法 / JP_Stripes_Osaka_202301
stripehideokamoto
0
170
ビジネスユーザを巻込む Stripeダッシュボード活用法 / jp_stripes_deepdive-202212
stripehideokamoto
0
370
AWSでローコードにはじめる サブスクリプション運用の効率化/aws-startup-tech-meetup-fukuoka-2
stripehideokamoto
0
200
Other Decks in Programming
See All in Programming
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
930
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
140
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
260
FDEが実現するAI駆動経営の現在地
gonta
2
250
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
130
5分で問診!Composer セキュリティ健康診断
codmoninc
0
770
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
450
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
190
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
220
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.3k
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
120
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
Accessibility Awareness
sabderemane
1
170
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
A Soul's Torment
seathinner
6
3.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Paper Plane
katiecoart
PRO
2
52k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Build your cross-platform service in a week with App Engine
jlugia
234
18k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
380
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Transcript
microCMSとStripeを使った JamstackなECサイトの作り方 (Next.js篇) ジャムジャム!!Jamstack_5 Hidetaka Okamoto(@hide__dev) 2022/02/22
岡本 秀高 ( @hide__dev ) • Stripe Developer Advocate (ex-developer
in Digitalcube) • JavaScript / TypeScript developer • AWS / Next.js / WordPress / etc… • WordCamp Kyoto 2017 / JP_Stripes Connect 2019 / AWS Samurai 2017 / etc… • 🐈(猫フラご容赦) 2 ジャムジャム!!Jamstack_5 #jamjamjamstack
3 https://stripe.com/jp
4 決済だけでなく決済周辺の機能もご利用可能 Stripe のプロダクトスイート Payments Checkout Radar Billing Connect Terminal
Issuing Payouts Capital Corporate Card Treasury オンライン決済 構築済み決済 UI 不正使用とリスクの管理 サブスクリプションの管理 プラットフォーム向けの決済 Climate Sigma Atlas 収益の一部で CO2 除去に貢献 カスタムレポート Identity 決済最適化 ビジネスモデル ビジネス運営 送金・資金移動 融資・法人カード発行 オンライン請求書 Invoicing BaaS 支出管理 ビジネスの資金調達 海外への入金 カード作成 Tax 消費税と VAT の自動計算 オンライン本人確認 スタートアップの企業設立 対面支払い (日本未展開)
Low Code / No Codeで、決済リンクが作れる 5 ジャムジャム!!Jamstack_5 #jamjamjamstack const session
= await stripe.checkout.sessions.create({ mode: "payment", success_url: `${req.headers.origin}`, cancel_url: `${req.headers.origin}`, line_items:[{ price: req.body.price_id, quantity: 1 }] }) return session.url
商品情報管理画面はあまりリッチじゃない • 価格や税情報はかなり柔軟 ◦ 複数料金 ◦ 定期課金 ◦ 税コード •
説明文にHTMLは使えない • 説明文は改行できない • 画像は1商品1枚 • 「表示用コンテンツ」は 別で管理したい 6 ジャムジャム!!Jamstack_5 #jamjamjamstack
7 https://microcms.io/
掲載する情報とStripeデータ紐付けをmicroCMSで • エディタの カスタマイズが柔軟 • Stripeのデータを取得するため 料金IDを保存する欄を用意 • 繰り返しフィールドなどで 画像も複数設定可能
• 両サービスのWebhookを 使えば、データの二重管理も ほぼなくせる 8 ジャムジャム!!Jamstack_5 #jamjamjamstack
APIを用意 ジャムジャム!!Jamstack_5
フィールドを定義 ジャムジャム!!Jamstack_5
Stripe側で 商品と料金を登録 ジャムジャム!!Jamstack_5
コンテンツ入力と StripeのID設定 ジャムジャム!!Jamstack_5
Next.jsなどで データを取得・表示 ジャムジャム!!Jamstack_5
実装Tips ジャムジャム!!Jamstack_5
microCMS -> StripeでAPI呼び出し 15 ジャムジャム!!Jamstack_5 #jamjamjamstack const client = createClient({
serviceDomain: 'demo-stripe-ec', apiKey: process.env.MICROCMS_API_KEY, }); const { contents } = await client.get({ endpoint: 'products' }); const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); const products = await Promise.all(contents.map(async (content) => { try { const price = await stripe.prices.retrieve(content.stripe_price_id); return { ...content, price }; } catch (e) { return content; } }));
環境変数の例 16 ジャムジャム!!Jamstack_5 #jamjamjamstack # Stripe公開可能キー NEXT_PUBLIC_STRIPE_PUBLISHABL E_KEY=pk_test_xxxxxx # Stripeシークレットキー
STRIPE_SECRET_KEY=sk_test_xxx xx # microCMS APIキー MICROCMS_API_KEY=xxxxxx
クライアントの初期化はサーバー側で • NEXT-PUBLICじゃない 環境変数はサーバー側のみ • Stripeのシークレットキーは NEXT_PUBLIC禁止 ◦ 漏れたら 一発インシデント
◦ 顧客情報や売上などに アクセスできる • getStaticProps / getServerSideProps またはAPIから利用しよう 17 ジャムジャム!!Jamstack_5 #jamjamjamstack
Checkoutセッション作成->リダイレクトまたは別タブ 18 ジャムジャム!!Jamstack_5 #jamjamjamstack <button onClick={async () => { const
session = await fetch('/api/checkout_session', { method: "POST", headers: { 'content-type': 'application/json' }, body: JSON.stringify({ price_id: product.price.id }) }).then(data => data.json()) .catch(e => window.alert(e.message)) window.open(session.url, 'checkout-session') }}>注文する</button>
APIを実装したくない場合、Payment Linksを使う • Checkoutはサーバー処理が必要 • APIサーバーがない場合は PaymentLinksで支払いリンクを • microCMSには リンクのURLを保存する
• 注文時は、リンクに直接飛ばす • Checkoutより 機能が制限されることに注意 19 ジャムジャム!!Jamstack_5 #jamjamjamstack
セッション終了後、Step by Step記事をQiitaで公開 • Twitterハッシュタグでシェア #jamjamjamstack • コードスニペット・差分あり • microCMSのフィールド設定も
画像付きで紹介 • スライドも埋め込みます • QiitaでStripeに関する 開発ブログ更新中 https://qiita.com/organizations/stripe 20 ジャムジャム!!Jamstack_5 #jamjamjamstack
Thanks! • Twitterハッシュタグでシェア #jamjamjamstack • Twitterアカウント: @hide__dev @StripeJapan • QiitaでStripeに関する
開発ブログ更新中 https://qiita.com/organizations/stripe 21 ジャムジャム!!Jamstack_5 #jamjamjamstack