内部検討用

決済と店舗運営をまとめた場合の設計案です。まだ実装していません。

予約イメージ →← サイトに戻る

決済・店舗運営の設計イメージ

事前決済に加えて、店内での現地決済QRオーダー、 そして3事業をまとめた経営管理まで含めた場合にどうなるかを整理しました。 結論から言うと Cloudflare と Stripe だけで作れますが、 日本ならではの制約が4つあり、それを知らずに作ると確実に詰まります。

check_circle

Cloudflare と Stripe だけで完結します。店内のカード決済も、Stripe の「サーバー主導型」という方式なら Worker から直接カードリーダーを操作できます。iOS / Android のアプリを作る必要はありません。

3事業 × オンライン / 現地

サービス事前決済(オンライン)現地決済(店内)注文の受け方
restaurantEat6名以上のみカード登録no-show 対策。その場では請求しないStripe Reader S700カード / Apple Pay / Google PayQRオーダー または口頭席のQRを読む → メニュー → 注文
directions_carDriveレンタル料を全額前払い+保証金を与信保留延長・給油不足・傷の精算同じリーダーを使い回すサイトの予約フォーム
luggageStore空港配送は前払い発送したら回収できないため店内預かりは受け取り時に精算日数で金額が変わるためサイトの申込フォーム

構成

入口
phone_iphoneお客さんのスマホ予約・事前決済
qr_code_scanner席のQRコードメニュー・注文
storefront古澤さんのスマホ管理画面
Cloudflare
boltWorkersAPI・Stripe連携・Webhook受け
storageD1予約・注文・売上・履歴
table_restaurantDurable Objectテーブルごとの注文状態をリアルタイム同期
Stripe
credit_cardCheckoutオンラインの事前決済
point_of_saleReader S700店内の対面決済
receipt_longWebhook決済結果を D1 に書き戻す

日本固有の制約 —— ここを知らずに作ると詰まります

1. 日本での Terminal はまだ「プレビュー」

Stripe の公式ドキュメントに「Terminal を日本に導入する(プレビュー)」と明記されています。使えるスマートリーダーは Stripe Reader S700 の1機種だけで、他国で使える WisePOS E や S710 は日本では選べません。

正式版になっていない機能を店の会計の根幹に置くかどうかは、経営判断として先に決めておく必要があります。

2. iD と QUICPay が使えません

Stripe Terminal が対応しているのは国際規格の非接触決済だけです。日本独自の iD / QUICPay しか載っていないカードや Apple Pay は、Visa のロゴが付いていてもリーダーで弾かれます

NINJA のお客さんは大半が海外の方なので実害は小さいですが、日本人のお客さんには失敗が起きます。現金は残す前提で設計します。

3. PayPay も交通系ICも通りません

Terminal で QR 決済に対応しているのは WeChat Pay・PayNow・Affirm ですが、WeChat Pay は日本では地域制限で使えません。PayPay と Suica などの交通系ICは、そもそも Stripe Terminal の対象外です。

これらを受けたいなら、Stripe とは別の端末をもう1台置くことになります。

4. サーバー主導型はオフラインで決済できません

Worker からリーダーを動かす方式は、Stripe のドキュメントで「オフライン中のカード決済には対応していない」と明記されています。赤倉で冬にネットが落ちたら、その間はカード会計そのものが止まります

オフライン対応が必要なら iOS アプリを作る方式に変える必要があり、これは Cloudflare 完結という前提から外れます。

wifi_off

4番は営業に直結するので、先に決めたい論点です。「ネットが落ちたら現金のみで回す」と割り切れるなら Cloudflare 完結で問題ありません。割り切れないなら、決済だけは既存の端末を残す、という選択になります。