Endpoint: Корзина Stripe — одна платёжная ссылка на несколько продуктов
Зачем это нужно
Корзина — это одна платёжная ссылка Stripe на несколько ваших продуктов, у каждого своя цена и количество. Клиент открывает одну ссылку и видит все позиции сразу.
Используйте, когда клиент покупает комбинацию, а не один продукт:
тариф собирается из частей — «базовый план + 2 места + 100 аккаунтов»;
заказ из нескольких товаров, которые нужно оплатить одним платежом;
AI-агент партнёра должен собрать такую ссылку по запросу клиента прямо в чате (через MCP — инструмент
create_partner_stripe_cart_payment_link).
Два режима — выбираются автоматически по продуктам:
Продукты в корзине | Что получит клиент |
|---|---|
все разовые | одну оплату всей корзины |
все подписочные с одинаковым периодом (например, все помесячные) | одну подписку из нескольких позиций: каждый период списывается сумма всех позиций × количества |
Смешивать разовые и подписочные продукты в одной ссылке нельзя, как и подписки с разным периодом (месяц + год), разные валюты или тестовые продукты вместе с боевыми — запрос вернёт INVALID_INPUT. Пробного периода у корзины нет: если нужен trial, выпускайте ссылку на один продукт.
Как подключиться
Возьмите API-ключ партнёра (мини-апп или ваш менеджер EasyPay). Нужно разрешение
product_create— то же, что для создания продукта и платёжной ссылки.Все продукты корзины должны быть уже одобрены командой заботы. Их
stripe_product_id(prod_…) видны в мини-апп в карточках продуктов и в MCP-инструментеlist_partner_live_stripe_payment_links.
Endpoint
POST https://api.appsign.me/create-partner-stripe-cart-payment-link
X-Partner-Api-Key: ваш-api-ключ
Content-Type: application/jsonФормат запроса
{
"items": [
{ "stripe_product_id": "prod_PLAN", "unit_amount": 4900, "quantity": 1 },
{ "stripe_product_id": "prod_SEATS", "unit_amount": 4900, "quantity": 2 },
{ "stripe_product_id": "prod_ACCOUNTS", "unit_amount": 1000, "quantity": 100 }
],
"allow_promotion_codes": false,
"success_url": "https://example.com/thanks",
"client_token": "order-2417"
}Параметр | Обязательный | Описание |
|---|---|---|
| Да | 1..20 позиций. Каждый продукт — не больше одной позиции: количество складывайте в |
| Да | Одобренный продукт вашего аккаунта ( |
| Да | Цена одной единицы в минимальных единицах валюты (центах): |
| Да | Количество, целое 1..999. |
| Нет | Проверка валюты (USD/EUR/GBP/BRL). Валюта всегда берётся из продуктов; если передали — должна совпасть. |
| Нет | Способы оплаты на чекауте. Не передавайте — Stripe покажет стандартный набор для валюты. |
| Нет | Показать поле промокода на чекауте. По умолчанию |
| Нет | HTTPS-адрес, куда вернуть клиента после оплаты (до 2048 символов). |
| Нет | Ваш идентификатор запроса (номер заказа, uuid). Подробнее — в разделе «Повторы». |
Что берётся из продуктов (передать нельзя): валюта, окружение (test/live), тип корзины и период подписки.
Формат ответа
HTTP-статус всегда 200 — смотрите поле success.
{
"success": true,
"payment_link_id": "plink_…",
"short_url": "https://short.appsign.me/AbCdEf1234",
"short_url_id": "…",
"currency": "USD",
"mode": "subscription",
"interval": "month",
"interval_count": 1,
"line_item_count": 3,
"items": [
{ "stripe_product_id": "prod_PLAN", "stripe_price_id": "price_…", "quantity": 1 },
{ "stripe_product_id": "prod_SEATS", "stripe_price_id": "price_…", "quantity": 2 },
{ "stripe_product_id": "prod_ACCOUNTS", "stripe_price_id": "price_…", "quantity": 100 }
],
"duplicate": false
}Клиенту отдавайте short_url. У разовой корзины mode = one_time, а interval и interval_count = null.
Повторы
Та же корзина (те же продукты, цены, количества и опции) без
client_tokenвернёт ту же ссылку сduplicate: true— случайный повтор не создаёт вторую ссылку.Нужна отдельная ссылка того же состава (например, второму клиенту) — передайте новый
client_token.Тот же
client_tokenс другой корзиной вернётIDEMPOTENCY_KEY_REUSED_WITH_DIFFERENT_PAYLOAD.Состав выданной ссылки не редактируется: изменилось количество — создайте новую корзину.
Ошибки
| Что значит |
|---|---|
| Неверные поля, смесь разовых и подписочных продуктов, разный период подписок, разные валюты или окружения. Причина — в |
| Продукта нет в вашем аккаунте. |
| Продукт ещё на модерации. |
| Продукт принадлежит другому аккаунту — проверьте ID. |
| Ссылка создана, но короткий адрес не выпустился — напишите в команду заботы, указав |
| Сбой на стороне Stripe — повторите с новым |
Stripe cart: one payment link for several products (EN)
A cart is one Stripe payment link for several of your products, each with its own price and quantity. Use it when a customer buys a combination — "base plan + 2 seats + 100 accounts" — instead of sending several links. Via MCP the tool is create_partner_stripe_cart_payment_link.
The mode is derived from the products:
Products in the cart | What the customer gets |
|---|---|
all one-time | a single payment for the whole cart |
all subscriptions with the same billing period (e.g. all monthly) | one subscription with several items, charged the sum of items × quantities every period |
Mixing one-time and subscription products, subscriptions with different periods, different currencies, or test with live products returns INVALID_INPUT. Free trials are not available in a cart.
Endpoint: POST https://api.appsign.me/create-partner-stripe-cart-payment-link, header X-Partner-Api-Key, permission product_create. All products must be approved.
Request: items (1..20 of {stripe_product_id, unit_amount, quantity} — unit_amount is the price of ONE unit in cents, per period for subscriptions; quantity 1..999; one entry per product), optional currency (check only — always inherited), payment_method_types, allow_promotion_codes, success_url, client_token.
Response (HTTP 200, check success): short_url (share it with the customer), payment_link_id, currency, mode (one_time / subscription), interval, interval_count (null for one-time), line_item_count, items[] with stripe_price_id, duplicate.
Repeats: an identical cart returns the same link with duplicate: true; pass a new client_token to get a separate link with the same composition. An issued link can't be edited — create a new cart when quantities change.
Errors: INVALID_INPUT, PRODUCT_NOT_FOUND, PRODUCT_NOT_APPROVED, CROSS_TENANT_ATTEMPT, SHORT_URL_UNAVAILABLE (link created, short URL missing — contact support with your client_token), INTEGRATION_UPSTREAM_ERROR / INTEGRATION_TIMEOUT (Stripe failure — retry with a new client_token).