248 lines
6.2 KiB
Bash
Executable File
248 lines
6.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
PADDLE_API_KEY="${PADDLE_API_KEY:-}"
|
|
|
|
if [[ -z "$PADDLE_API_KEY" ]]; then
|
|
echo "ERROR: PADDLE_API_KEY is not set."
|
|
echo 'Run: export PADDLE_API_KEY="pdl_sdbx_apikey_..."'
|
|
exit 1
|
|
fi
|
|
|
|
API="https://sandbox-api.paddle.com"
|
|
|
|
api_post() {
|
|
local endpoint="$1"
|
|
local payload="$2"
|
|
|
|
curl --fail-with-body --silent --show-error \
|
|
--request POST \
|
|
--url "${API}${endpoint}" \
|
|
--header "Authorization: Bearer ${PADDLE_API_KEY}" \
|
|
--header "Content-Type: application/json" \
|
|
--data "$payload"
|
|
}
|
|
|
|
create_product() {
|
|
local name="$1"
|
|
local description="$2"
|
|
|
|
api_post "/products" "$(jq -n \
|
|
--arg name "$name" \
|
|
--arg description "$description" \
|
|
'{
|
|
name: $name,
|
|
description: $description,
|
|
type: "standard",
|
|
tax_category: "standard"
|
|
}'
|
|
)"
|
|
}
|
|
|
|
create_price() {
|
|
local product_id="$1"
|
|
local name="$2"
|
|
local description="$3"
|
|
local cycle="$4"
|
|
local usd="$5"
|
|
local gbp="$6"
|
|
local eur="$7"
|
|
local aud="$8"
|
|
|
|
api_post "/prices" "$(jq -n \
|
|
--arg product_id "$product_id" \
|
|
--arg name "$name" \
|
|
--arg description "$description" \
|
|
--arg cycle "$cycle" \
|
|
--arg usd "$usd" \
|
|
--arg gbp "$gbp" \
|
|
--arg eur "$eur" \
|
|
--arg aud "$aud" \
|
|
'{
|
|
product_id: $product_id,
|
|
name: $name,
|
|
description: $description,
|
|
|
|
billing_cycle: {
|
|
interval: $cycle,
|
|
frequency: 1
|
|
},
|
|
|
|
trial_period: {
|
|
interval: "day",
|
|
frequency: 7
|
|
},
|
|
|
|
unit_price: {
|
|
amount: $usd,
|
|
currency_code: "USD"
|
|
},
|
|
|
|
unit_price_overrides: [
|
|
{
|
|
country_codes: ["GB"],
|
|
unit_price: {
|
|
amount: $gbp,
|
|
currency_code: "GBP"
|
|
}
|
|
},
|
|
{
|
|
country_codes: ["IE"],
|
|
unit_price: {
|
|
amount: $eur,
|
|
currency_code: "EUR"
|
|
}
|
|
},
|
|
{
|
|
country_codes: ["AU"],
|
|
unit_price: {
|
|
amount: $aud,
|
|
currency_code: "AUD"
|
|
}
|
|
}
|
|
],
|
|
|
|
tax_mode: "account_setting",
|
|
|
|
quantity: {
|
|
minimum: 1,
|
|
maximum: 1
|
|
}
|
|
}'
|
|
)"
|
|
}
|
|
|
|
echo
|
|
echo "Creating Rsync Studio Paddle sandbox catalog..."
|
|
echo
|
|
|
|
#
|
|
# Personal
|
|
#
|
|
|
|
PERSONAL_PRODUCT=$(create_product \
|
|
"Rsync Studio Personal" \
|
|
"Rsync Studio for personal use.")
|
|
|
|
PERSONAL_PRODUCT_ID=$(echo "$PERSONAL_PRODUCT" | jq -r '.data.id')
|
|
|
|
echo "Created Personal product: $PERSONAL_PRODUCT_ID"
|
|
|
|
PERSONAL_MONTHLY=$(create_price \
|
|
"$PERSONAL_PRODUCT_ID" \
|
|
"Personal Monthly" \
|
|
"Rsync Studio Personal — monthly subscription with 7-day free trial." \
|
|
"month" \
|
|
"199" \
|
|
"199" \
|
|
"199" \
|
|
"299")
|
|
|
|
PERSONAL_MONTHLY_ID=$(echo "$PERSONAL_MONTHLY" | jq -r '.data.id')
|
|
|
|
echo "Created Personal Monthly: $PERSONAL_MONTHLY_ID"
|
|
|
|
PERSONAL_ANNUAL=$(create_price \
|
|
"$PERSONAL_PRODUCT_ID" \
|
|
"Personal Annual" \
|
|
"Rsync Studio Personal — annual subscription with 7-day free trial." \
|
|
"year" \
|
|
"1499" \
|
|
"1499" \
|
|
"1699" \
|
|
"2499")
|
|
|
|
PERSONAL_ANNUAL_ID=$(echo "$PERSONAL_ANNUAL" | jq -r '.data.id')
|
|
|
|
echo "Created Personal Annual: $PERSONAL_ANNUAL_ID"
|
|
|
|
#
|
|
# Professional
|
|
#
|
|
|
|
PRO_PRODUCT=$(create_product \
|
|
"Rsync Studio Professional" \
|
|
"Rsync Studio for professional and commercial use.")
|
|
|
|
PRO_PRODUCT_ID=$(echo "$PRO_PRODUCT" | jq -r '.data.id')
|
|
|
|
echo "Created Professional product: $PRO_PRODUCT_ID"
|
|
|
|
PRO_MONTHLY=$(create_price \
|
|
"$PRO_PRODUCT_ID" \
|
|
"Professional Monthly" \
|
|
"Rsync Studio Professional — monthly subscription with 7-day free trial." \
|
|
"month" \
|
|
"399" \
|
|
"399" \
|
|
"449" \
|
|
"699")
|
|
|
|
PRO_MONTHLY_ID=$(echo "$PRO_MONTHLY" | jq -r '.data.id')
|
|
|
|
echo "Created Professional Monthly: $PRO_MONTHLY_ID"
|
|
|
|
PRO_ANNUAL=$(create_price \
|
|
"$PRO_PRODUCT_ID" \
|
|
"Professional Annual" \
|
|
"Rsync Studio Professional — annual subscription with 7-day free trial." \
|
|
"year" \
|
|
"2999" \
|
|
"2999" \
|
|
"3499" \
|
|
"4999")
|
|
|
|
PRO_ANNUAL_ID=$(echo "$PRO_ANNUAL" | jq -r '.data.id')
|
|
|
|
echo "Created Professional Annual: $PRO_ANNUAL_ID"
|
|
|
|
echo
|
|
echo "============================================================"
|
|
echo " RSYNC STUDIO — PADDLE SANDBOX CATALOG"
|
|
echo "============================================================"
|
|
echo
|
|
echo "PERSONAL"
|
|
echo " Product ID: $PERSONAL_PRODUCT_ID"
|
|
echo " Monthly Price ID: $PERSONAL_MONTHLY_ID"
|
|
echo " Annual Price ID: $PERSONAL_ANNUAL_ID"
|
|
echo
|
|
echo "PROFESSIONAL"
|
|
echo " Product ID: $PRO_PRODUCT_ID"
|
|
echo " Monthly Price ID: $PRO_MONTHLY_ID"
|
|
echo " Annual Price ID: $PRO_ANNUAL_ID"
|
|
echo
|
|
echo "------------------------------------------------------------"
|
|
echo "Pricing"
|
|
echo "------------------------------------------------------------"
|
|
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'
|
|
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
|
"Personal Annual" '$14.99' '£14.99' '€16.99' 'A$24.99'
|
|
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
|
"Professional Monthly" '$3.99' '£3.99' '€4.49' 'A$6.99'
|
|
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
|
"Professional Annual" '$29.99' '£29.99' '€34.99' 'A$49.99'
|
|
echo
|
|
echo "All four prices include a 7-day FREE trial."
|
|
echo
|
|
echo "============================================================"
|
|
|
|
cat > rsync-studio-paddle-ids.env <<EOF
|
|
PADDLE_PERSONAL_PRODUCT_ID=$PERSONAL_PRODUCT_ID
|
|
PADDLE_PERSONAL_MONTHLY_PRICE_ID=$PERSONAL_MONTHLY_ID
|
|
PADDLE_PERSONAL_ANNUAL_PRICE_ID=$PERSONAL_ANNUAL_ID
|
|
|
|
PADDLE_PROFESSIONAL_PRODUCT_ID=$PRO_PRODUCT_ID
|
|
PADDLE_PROFESSIONAL_MONTHLY_PRICE_ID=$PRO_MONTHLY_ID
|
|
PADDLE_PROFESSIONAL_ANNUAL_PRICE_ID=$PRO_ANNUAL_ID
|
|
EOF
|
|
|
|
echo
|
|
echo "IDs also saved to:"
|
|
echo " $(pwd)/rsync-studio-paddle-ids.env"
|
|
echo
|