115 lines
2.9 KiB
Bash
Executable File
115 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ENV_FILE="${1:-.env}"
|
|
|
|
if [[ ! -f "$ENV_FILE" ]]; then
|
|
echo "ERROR: Cannot find $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Load only the Paddle values we need.
|
|
get_env() {
|
|
grep -E "^${1}=" "$ENV_FILE" | head -1 | cut -d= -f2-
|
|
}
|
|
|
|
PADDLE_ENVIRONMENT="$(get_env PADDLE_ENVIRONMENT)"
|
|
PADDLE_API_URL="$(get_env PADDLE_API_URL)"
|
|
PADDLE_API_KEY="$(get_env PADDLE_API_KEY)"
|
|
|
|
PERSONAL_MONTHLY="$(get_env PADDLE_PERSONAL_MONTHLY_PRICE_ID)"
|
|
PERSONAL_ANNUAL="$(get_env PADDLE_PERSONAL_ANNUAL_PRICE_ID)"
|
|
PRO_MONTHLY="$(get_env PADDLE_PROFESSIONAL_MONTHLY_PRICE_ID)"
|
|
PRO_ANNUAL="$(get_env PADDLE_PROFESSIONAL_ANNUAL_PRICE_ID)"
|
|
|
|
if [[ -z "$PADDLE_API_KEY" ]]; then
|
|
echo "ERROR: PADDLE_API_KEY is missing"
|
|
exit 1
|
|
fi
|
|
|
|
echo
|
|
echo "Paddle environment: $PADDLE_ENVIRONMENT"
|
|
echo "API URL: $PADDLE_API_URL"
|
|
echo
|
|
echo "Prices to update:"
|
|
echo " Personal monthly -> £4.99"
|
|
echo " Personal annual -> £39.99"
|
|
echo " Professional monthly -> £8.99"
|
|
echo " Professional annual -> £79.99"
|
|
echo
|
|
|
|
if [[ "$PADDLE_ENVIRONMENT" == "production" ]]; then
|
|
echo "WARNING: THIS IS THE LIVE PADDLE ACCOUNT."
|
|
printf "Type LIVE to continue: "
|
|
read -r confirmation
|
|
|
|
if [[ "$confirmation" != "LIVE" ]]; then
|
|
echo "Cancelled."
|
|
exit 1
|
|
fi
|
|
else
|
|
printf "Type YES to update the sandbox prices: "
|
|
read -r confirmation
|
|
|
|
if [[ "$confirmation" != "YES" ]]; then
|
|
echo "Cancelled."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
update_price() {
|
|
local id="$1"
|
|
local amount="$2"
|
|
local description="$3"
|
|
|
|
if [[ -z "$id" ]]; then
|
|
echo "ERROR: Missing price ID for $description"
|
|
exit 1
|
|
fi
|
|
|
|
echo
|
|
echo "Updating $description ($id)..."
|
|
|
|
response="$(
|
|
curl --silent --show-error --fail-with-body \
|
|
--request PATCH \
|
|
"${PADDLE_API_URL}/prices/${id}" \
|
|
--header "Authorization: Bearer ${PADDLE_API_KEY}" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{
|
|
\"unit_price\": {
|
|
\"amount\": \"${amount}\",
|
|
\"currency_code\": \"GBP\"
|
|
}
|
|
}"
|
|
)"
|
|
|
|
if command -v jq >/dev/null 2>&1; then
|
|
echo "$response" | jq '{
|
|
id: .data.id,
|
|
description: .data.description,
|
|
price: .data.unit_price,
|
|
billing_cycle: .data.billing_cycle,
|
|
status: .data.status
|
|
}'
|
|
else
|
|
echo "$response"
|
|
fi
|
|
}
|
|
|
|
# Paddle amounts are in pennies:
|
|
# £4.99 = 499
|
|
# £39.99 = 3999
|
|
# £8.99 = 899
|
|
# £79.99 = 7999
|
|
|
|
update_price "$PERSONAL_MONTHLY" 499 "Personal Monthly"
|
|
update_price "$PERSONAL_ANNUAL" 3999 "Personal Annual"
|
|
update_price "$PRO_MONTHLY" 899 "Professional Monthly"
|
|
update_price "$PRO_ANNUAL" 7999 "Professional Annual"
|
|
|
|
echo
|
|
echo "----------------------------------------"
|
|
echo "All Paddle prices updated successfully."
|
|
echo "----------------------------------------"
|