Files
2026-09-29 16:55:11 +01:00

297 lines
7.0 KiB
Bash
Executable File

# 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