ПлатежиПодписки

С Pay.sh

Вы можете настроить подписки через Pay.sh, установив Pay-клиент на своём устройстве или настроив Pay-сервер. Установите Pay с помощью:

brew install pay

или

npm install -g @solana/pay

Проверьте установку с помощью:

pay --version

Инструментальная цепочка автоматически настроит ваш адрес. Выполните следующую команду для настройки и пополнения вашего кошелька:

pay setup

Подписки в качестве клиента

Пользователи подписываются на API-эндпоинты, защищённые подпиской, вызывая pay как обычно. API должен передавать детали подписки в первоначальном ответе 402 Status. Pay обрабатывает подписку автоматически, включая вызов инструкций в программе Solana SPL Subscriptions.

Пользователи могут управлять своими подписками с помощью следующих команд:

pay subscriptions # default: list + show available subcommands
pay subscriptions list # same, scriptable
pay subscriptions list --network mainnet
pay subscriptions list --json

Подробнее об управлении подписками в качестве пользователя можно узнать в Pay.sh > Использование Pay > Документация по управлению подписками.

Управление подписками в качестве провайдера (демо)

Pay-серверы позволяют настраивать подписчиков и их подписки для каждого эндпоинта. Ниже приведён пример эндпоинта с использованием pay, который вы можете опробовать в своём проекте:

# monthly.yml
name: Subscriptions Example
subdomain: subscriptions-example
title: "Subscription Example"
description: "Demo Subscriptions"
category: ai_ml
version: v1
routing:
type: respond
operator:
currencies:
usd: ["USDC", "USDT", "CASH"]
network: "localnet"
fee_payer: true
challenge_binding_secret: d858d9104afd728f58a1f73d806dd75d8f32ebd37c9707145816b490e8631d41
# insert your own challenge_binding_secret here. use `openssl rand -hex 32`
endpoints:
- method: GET
path: "api/v1/pro/feed"
resource: "pro-feed"
description: "Pro feed — monthly subscription, 30-day billing period."
subscription:
period: "30d"
price_usd: 9.99
currency: USDC
plan_id_numeric: 1

Pay управляет подписками с помощью атрибута subscription: в своей YAML-спецификации endpoints. Это отличает его от атрибута metering: для эндпоинтов с оплатой за использование.

Запуск сервера в приведённом выше примере создаёт эндпоинт api/v1/pro/feed, который требует от пользователя регулярных платежей в размере 9,99 USDC каждые 30 дней.

Вы можете опробовать это, выполнив следующую команду:

pay server start monthly.yml

Выполнение этой команды предложит вам создать план. Это создаёт план и обновляет yml-файл. Если вы планируете использовать его повторно, запомните адрес плана и укажите его в конфигурации при внесении изменений.

Вы можете проверить работу подписок, выполнив следующие команды от имени клиента в другом терминале:

# First call — activates the subscription, $9.99 USDC charge settles.
pay --sandbox curl http://127.0.0.1:1402/api/v1/pro/feed
# Same call within 30 days — no payment prompt, just the response.
pay --sandbox curl http://127.0.0.1:1402/api/v1/pro/feed

В ответ вы должны увидеть статус OK, как показано ниже:

{ "status": "ok" }

Подробнее об управлении подписками на Pay-сервере можно узнать в документации Pay.sh > Building with Pay > Subscriptions > YAML Specification docs.

Is this page helpful?

Содержание

Редактировать страницу