updated deployer code
This commit is contained in:
@@ -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
|
||||
|
||||
Executable
+296
@@ -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
|
||||
Reference in New Issue
Block a user