from payments_py import Payments, PaymentOptions
from payments_py.common.types import PlanMetadata
from payments_py.plans import (
get_erc20_price_config,
get_fixed_credits_config,
get_expirable_duration_config,
get_free_price_config,
ONE_DAY_DURATION
)
# Initialize
payments = Payments.get_instance(
PaymentOptions(nvm_api_key="nvm:your-key", environment="sandbox")
)
builder_address = payments.account_address
# ERC20 token address (use a test token in sandbox)
ERC20_TOKEN = "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"
# 1. Create a credits plan
credits_plan = payments.plans.register_credits_plan(
plan_metadata=PlanMetadata(name="Basic Credits Plan"),
price_config=get_erc20_price_config(20, ERC20_TOKEN, builder_address),
credits_config=get_fixed_credits_config(100)
)
print(f"Credits Plan: {credits_plan['planId']}")
# 2. Create a time plan
time_plan = payments.plans.register_time_plan(
plan_metadata=PlanMetadata(name="Monthly Plan"),
price_config=get_erc20_price_config(50, ERC20_TOKEN, builder_address),
credits_config=get_expirable_duration_config(ONE_DAY_DURATION)
)
print(f"Time Plan: {time_plan['planId']}")
# 3. Create a free trial
trial_plan = payments.plans.register_credits_trial_plan(
plan_metadata=PlanMetadata(name="Free Trial"),
price_config=get_free_price_config(),
credits_config=get_fixed_credits_config(10)
)
print(f"Trial Plan: {trial_plan['planId']}")
# 4. Retrieve plan details
plan_details = payments.plans.get_plan(credits_plan['planId'])
print(f"Plan details: {plan_details}")