The_Vibe/scripts/setup-stripe.sh
2026-03-06 09:05:31 -05:00

138 lines
5.2 KiB
Bash

#!/usr/bin/env bash
# ============================================================
# The Vibe - Stripe Setup Script
# Creates all Stripe products, prices, and Connect test accounts
#
# Prerequisites:
# brew install stripe/stripe-cli/stripe (or download from stripe.com/docs/stripe-cli)
# stripe login
#
# Run: bash scripts/setup-stripe.sh
# ============================================================
set -e
echo ""
echo "============================================================"
echo " The Vibe — Stripe Setup"
echo "============================================================"
echo ""
# ---- RESTAURANT MONTHLY SUBSCRIPTION ($500 CAD/month) ----
echo "==> Creating Restaurant Monthly Subscription product..."
RESTAURANT_PRODUCT=$(stripe products create \
--name="The Vibe - Restaurant Subscription" \
--description="Monthly flat-fee. No commission. Unlimited orders." \
--metadata[platform]="the-vibe" \
--metadata[type]="restaurant_subscription" \
--format=json 2>/dev/null)
RESTAURANT_PRODUCT_ID=$(echo "$RESTAURANT_PRODUCT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo " Product: $RESTAURANT_PRODUCT_ID"
RESTAURANT_PRICE=$(stripe prices create \
--product="$RESTAURANT_PRODUCT_ID" \
--unit-amount=50000 \
--currency=cad \
--recurring[interval]=month \
--nickname="Restaurant Monthly - CAD \$500" \
--format=json 2>/dev/null)
RESTAURANT_PRICE_ID=$(echo "$RESTAURANT_PRICE" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo " Price: $RESTAURANT_PRICE_ID"
# ---- DRIVER DAILY FEE ($20 CAD — charged as one-time PaymentIntent) ----
echo ""
echo "==> Creating Driver Daily Access Fee product..."
DRIVER_PRODUCT=$(stripe products create \
--name="The Vibe - Driver Daily Access" \
--description="Daily access fee. Keep 100% of delivery fees and tips." \
--metadata[platform]="the-vibe" \
--metadata[type]="driver_daily_fee" \
--format=json 2>/dev/null)
DRIVER_PRODUCT_ID=$(echo "$DRIVER_PRODUCT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
DRIVER_PRICE=$(stripe prices create \
--product="$DRIVER_PRODUCT_ID" \
--unit-amount=2000 \
--currency=cad \
--nickname="Driver Daily Fee - CAD \$20" \
--format=json 2>/dev/null)
DRIVER_PRICE_ID=$(echo "$DRIVER_PRICE" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo " Price: $DRIVER_PRICE_ID"
# ---- STRIPE CONNECT — TEST EXPRESS ACCOUNTS ----
echo ""
echo "==> Creating Stripe Connect Express account for test DRIVER..."
DRIVER_ACCOUNT=$(stripe accounts create \
--type=express \
--country=CA \
--email="driver@thevibe.ca" \
--business_type=individual \
--capabilities[transfers][requested]=true \
--metadata[platform]="the-vibe" \
--metadata[role]="driver" \
--format=json 2>/dev/null)
DRIVER_ACCOUNT_ID=$(echo "$DRIVER_ACCOUNT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo " Driver Connect account: $DRIVER_ACCOUNT_ID"
echo ""
echo "==> Creating Stripe Connect Express account for test RESTAURANT..."
RESTAURANT_ACCOUNT=$(stripe accounts create \
--type=express \
--country=CA \
--email="owner@libertyburgerlv.ca" \
--business_type=company \
--capabilities[transfers][requested]=true \
--metadata[platform]="the-vibe" \
--metadata[role]="restaurant" \
--format=json 2>/dev/null)
RESTAURANT_ACCOUNT_ID=$(echo "$RESTAURANT_ACCOUNT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo " Restaurant Connect account: $RESTAURANT_ACCOUNT_ID"
# Update .env file in-place
ENV_FILE="$(dirname "$0")/../.env"
if [ -f "$ENV_FILE" ]; then
echo ""
echo "==> Updating .env with generated IDs..."
sed -i '' "s|STRIPE_RESTAURANT_PRICE_ID=.*|STRIPE_RESTAURANT_PRICE_ID=$RESTAURANT_PRICE_ID|" "$ENV_FILE"
sed -i '' "s|DRIVER_CONNECT_ACCOUNT_ID=.*|DRIVER_CONNECT_ACCOUNT_ID=$DRIVER_ACCOUNT_ID|" "$ENV_FILE"
sed -i '' "s|RESTAURANT_CONNECT_ACCOUNT_ID=.*|RESTAURANT_CONNECT_ACCOUNT_ID=$RESTAURANT_ACCOUNT_ID|" "$ENV_FILE"
echo " .env updated."
fi
# ---- OUTPUT ----
echo ""
echo "============================================================"
echo " DONE. Values written to .env:"
echo "============================================================"
echo ""
echo " STRIPE_RESTAURANT_PRICE_ID=$RESTAURANT_PRICE_ID"
echo " DRIVER_CONNECT_ACCOUNT_ID=$DRIVER_ACCOUNT_ID"
echo " RESTAURANT_CONNECT_ACCOUNT_ID=$RESTAURANT_ACCOUNT_ID"
echo ""
echo "============================================================"
echo " NEXT: Add your Stripe API keys to .env:"
echo "============================================================"
echo ""
echo " STRIPE_SECRET_KEY=sk_test_..."
echo " STRIPE_PUBLISHABLE_KEY=pk_test_..."
echo " NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_..."
echo ""
echo " Then start the webhook listener in a separate terminal:"
echo ""
echo " stripe listen --forward-to localhost:3001/api/v1/payments/webhook"
echo ""
echo " Copy the 'whsec_...' secret into .env as STRIPE_WEBHOOK_SECRET"
echo ""
echo "============================================================"
echo " Stripe test cards:"
echo " Success: 4242 4242 4242 4242 (any future exp, any CVC)"
echo " Decline: 4000 0000 0000 0002"
echo "============================================================"
echo ""