updated deployer code

This commit is contained in:
Mark Gregory
2026-09-29 16:55:11 +01:00
parent 390bdae783
commit f2c54c6518
16 changed files with 922 additions and 55 deletions
+20 -20
View File
@@ -134,10 +134,10 @@ PERSONAL_MONTHLY=$(create_price \
"Personal Monthly" \
"SonarDesk Personal — monthly subscription with 7-day free trial." \
"month" \
"199" \
"199" \
"199" \
"299")
"299" \
"299" \
"349" \
"499")
PERSONAL_MONTHLY_ID=$(echo "$PERSONAL_MONTHLY" | jq -r '.data.id')
@@ -148,10 +148,10 @@ PERSONAL_ANNUAL=$(create_price \
"Personal Annual" \
"SonarDesk Personal — annual subscription with 7-day free trial." \
"year" \
"1499" \
"1499" \
"1699" \
"2499")
"2499" \
"2499" \
"2899" \
"4199")
PERSONAL_ANNUAL_ID=$(echo "$PERSONAL_ANNUAL" | jq -r '.data.id')
@@ -174,10 +174,10 @@ PRO_MONTHLY=$(create_price \
"Professional Monthly" \
"SonarDesk Professional — monthly subscription with 7-day free trial." \
"month" \
"399" \
"399" \
"449" \
"699")
"499" \
"499" \
"599" \
"849")
PRO_MONTHLY_ID=$(echo "$PRO_MONTHLY" | jq -r '.data.id')
@@ -188,10 +188,10 @@ PRO_ANNUAL=$(create_price \
"Professional Annual" \
"SonarDesk Professional — annual subscription with 7-day free trial." \
"year" \
"2999" \
"2999" \
"3499" \
"4999")
"4499" \
"4499" \
"5199" \
"7499")
PRO_ANNUAL_ID=$(echo "$PRO_ANNUAL" | jq -r '.data.id')
@@ -219,13 +219,13 @@ echo
printf "%-24s %-12s %-12s %-12s %-12s\n" \
"Plan" "USD" "UK" "Ireland" "Australia"
printf "%-24s %-12s %-12s %-12s %-12s\n" \
"Personal Monthly" '$1.99' '£1.99' '€1.99' 'A$2.99'
"Personal Monthly" '$2.99' '£2.99' '€3.49' 'A$4.99'
printf "%-24s %-12s %-12s %-12s %-12s\n" \
"Personal Annual" '$14.99' '£14.99' '€16.99' 'A$24.99'
"Personal Annual" '$24.99' '£24.99' '€28.99' 'A$41.99'
printf "%-24s %-12s %-12s %-12s %-12s\n" \
"Professional Monthly" '$3.99' '£3.99' '€4.49' 'A$6.99'
"Professional Monthly" '$4.99' '£4.99' '€5.99' 'A$8.49'
printf "%-24s %-12s %-12s %-12s %-12s\n" \
"Professional Annual" '$29.99' '£29.99' '€34.99' 'A$49.99'
"Professional Annual" '$44.99' '£44.99' '€51.99' 'A$74.99'
echo
echo "All four prices include a 7-day FREE trial."
echo
+296
View File
@@ -0,0 +1,296 @@
# pdl_sdbx_apikey_01m3pv5nbpjq94nh2hzqwhzbv5_TW7kG6xyGMcbxFAnEAtKqc_ALK
#client side
# pdl_sdbx_apikey_01m3pveweeskjzz1rc8f12a7x3_G9qWxtDBxGZJWa3f7VGKz6_A15
#!/usr/bin/env bash
set -euo pipefail
PADDLE_API="https://sandbox-api.paddle.com"
PRODUCT_ID="pro_01m3ptwmqy8npywsq4h4q27p0w"
OUTPUT_FILE=".env.paddle"
echo "============================================================"
echo " SonarDesk Paddle SANDBOX Price Setup"
echo "============================================================"
echo
echo "Product: $PRODUCT_ID"
echo
command -v curl >/dev/null || {
echo "ERROR: curl is required"
exit 1
}
command -v jq >/dev/null || {
echo "ERROR: jq is required"
echo "Install with: brew install jq"
exit 1
}
read -rsp "Enter Paddle SANDBOX API key: " PADDLE_API_KEY
echo
echo
if [[ -z "$PADDLE_API_KEY" ]]; then
echo "ERROR: No API key supplied."
exit 1
fi
# ------------------------------------------------------------
# API request helper
# ------------------------------------------------------------
api_request() {
local method="$1"
local endpoint="$2"
local data="${3:-}"
local tmp
tmp="$(mktemp)"
if [[ "$method" == "GET" ]]; then
HTTP_CODE=$(curl -sS \
-o "$tmp" \
-w "%{http_code}" \
-H "Authorization: Bearer ${PADDLE_API_KEY}" \
-H "Content-Type: application/json" \
"${PADDLE_API}${endpoint}")
else
HTTP_CODE=$(curl -sS \
-o "$tmp" \
-w "%{http_code}" \
-X "$method" \
-H "Authorization: Bearer ${PADDLE_API_KEY}" \
-H "Content-Type: application/json" \
-d "$data" \
"${PADDLE_API}${endpoint}")
fi
RESPONSE="$(cat "$tmp")"
rm -f "$tmp"
}
# ------------------------------------------------------------
# Verify API key
# ------------------------------------------------------------
echo "1. Testing Paddle API key..."
api_request GET "/event-types"
if [[ "$HTTP_CODE" != "200" ]]; then
echo
echo "ERROR: Paddle rejected the API key."
echo "HTTP: $HTTP_CODE"
echo
echo "$RESPONSE" | jq . 2>/dev/null || echo "$RESPONSE"
exit 1
fi
echo " ✓ API key works"
echo
# ------------------------------------------------------------
# Verify product
# ------------------------------------------------------------
echo "2. Checking SonarDesk product..."
api_request GET "/products/${PRODUCT_ID}"
if [[ "$HTTP_CODE" != "200" ]]; then
echo
echo "ERROR: Cannot access SonarDesk product."
echo "HTTP: $HTTP_CODE"
echo
echo "$RESPONSE" | jq . 2>/dev/null || echo "$RESPONSE"
exit 1
fi
PRODUCT_NAME="$(echo "$RESPONSE" | jq -r '.data.name')"
echo " ✓ Product found: $PRODUCT_NAME"
echo " ✓ $PRODUCT_ID"
echo
# ------------------------------------------------------------
# Create price
# ------------------------------------------------------------
create_price() {
local variable="$1"
local name="$2"
local description="$3"
local amount="$4"
local interval="$5"
local display="$6"
echo "Creating: $name"
echo " $display"
PAYLOAD=$(jq -n \
--arg product "$PRODUCT_ID" \
--arg name "$name" \
--arg description "$description" \
--arg amount "$amount" \
--arg interval "$interval" \
'{
product_id: $product,
name: $name,
description: $description,
unit_price: {
amount: $amount,
currency_code: "GBP"
},
billing_cycle: {
interval: $interval,
frequency: 1
},
trial_period: {
interval: "day",
frequency: 7,
requires_payment_method: true
},
tax_mode: "account_setting",
quantity: {
minimum: 1,
maximum: 1
}
}')
echo
echo "Request:"
echo "$PAYLOAD" | jq .
echo
api_request POST "/prices" "$PAYLOAD"
if [[ "$HTTP_CODE" != "201" ]]; then
echo "============================================================"
echo " ERROR CREATING PRICE"
echo "============================================================"
echo
echo "Price: $name"
echo "HTTP: $HTTP_CODE"
echo
echo "Paddle response:"
echo
echo "$RESPONSE" | jq . 2>/dev/null || echo "$RESPONSE"
echo
exit 1
fi
PRICE_ID="$(echo "$RESPONSE" | jq -r '.data.id')"
if [[ -z "$PRICE_ID" || "$PRICE_ID" == "null" ]]; then
echo "ERROR: Paddle returned no price ID."
echo "$RESPONSE" | jq .
exit 1
fi
printf -v "$variable" '%s' "$PRICE_ID"
echo " ✓ CREATED"
echo " ✓ $PRICE_ID"
echo
}
# ------------------------------------------------------------
# Create SonarDesk prices
# ------------------------------------------------------------
echo "============================================================"
echo " Creating SonarDesk Prices"
echo "============================================================"
echo
create_price \
PERSONAL_MONTHLY \
"Personal Monthly" \
"SonarDesk Personal - Monthly subscription" \
"299" \
"month" \
"£2.99/month"
create_price \
PERSONAL_ANNUAL \
"Personal Annual" \
"SonarDesk Personal - Annual subscription" \
"2499" \
"year" \
"£24.99/year"
create_price \
PROFESSIONAL_MONTHLY \
"Professional Monthly" \
"SonarDesk Professional - Monthly subscription" \
"499" \
"month" \
"£4.99/month"
create_price \
PROFESSIONAL_ANNUAL \
"Professional Annual" \
"SonarDesk Professional - Annual subscription" \
"4499" \
"year" \
"£44.99/year"
# ------------------------------------------------------------
# Generate Laravel configuration
# ------------------------------------------------------------
cat > "$OUTPUT_FILE" <<EOF
# ============================================================
# SonarDesk Paddle SANDBOX
# ============================================================
PADDLE_ENV=sandbox
PADDLE_PRODUCT_ID=${PRODUCT_ID}
PADDLE_PERSONAL_MONTHLY_PRICE_ID=${PERSONAL_MONTHLY}
PADDLE_PERSONAL_YEARLY_PRICE_ID=${PERSONAL_ANNUAL}
PADDLE_PROFESSIONAL_MONTHLY_PRICE_ID=${PROFESSIONAL_MONTHLY}
PADDLE_PROFESSIONAL_YEARLY_PRICE_ID=${PROFESSIONAL_ANNUAL}
EOF
echo
echo "============================================================"
echo " SUCCESS"
echo "============================================================"
echo
echo "SonarDesk Paddle prices:"
echo
echo "Personal Monthly"
echo " £2.99/month"
echo " $PERSONAL_MONTHLY"
echo
echo "Personal Annual"
echo " £24.99/year"
echo " $PERSONAL_ANNUAL"
echo
echo "Professional Monthly"
echo " £4.99/month"
echo " $PROFESSIONAL_MONTHLY"
echo
echo "Professional Annual"
echo " £44.99/year"
echo " $PROFESSIONAL_ANNUAL"
echo
echo "Configuration:"
echo " $OUTPUT_FILE"
echo
echo "Now check:"
echo " Paddle Sandbox -> Catalog -> Products -> SonarDesk"
echo