#!/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 ""