138 lines
5.2 KiB
Bash
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 ""
|