Endpoint (API v2): Платёж Stripe по payment_intent_id
Зачем это нужно
Когда по конкретному платежу нужно не строчка в списке, а всё целиком — этот метод возвращает полный снэпшот одного платежа по его идентификатору payment_intent_id (pi_…): тот же набор объектов Stripe, который приходит вам в вебхуке, плюс все связанные с платежом движения — возвраты и споры.
Типичные случаи: вебхук по платежу не дошёл и надо восстановить состояние; клиент утверждает, что оплатил; нужно проверить, не было ли по платежу возврата или спора.
Метод доступен и через прямой HTTP API (с вашим API-ключом), и через MCP-агента (тул get_partner_stripe_payment) — это одна и та же ручка.
Идентификатор платежа берётся из поля payment_intent_id в списке платежей за период или из вебхука.
Как подключиться
Возьмите API-ключ в мини-апп EasyPay («Show key» на первом шаге онбординга) — или запросите у вашего менеджера. Подробнее: «Где взять API-ключ».
Нужно разрешение
balance_view— то же, по которому вы смотрите баланс и список платежей.API-ключ — строка в формате UUID, например:
18fcf8a0-cde3-4a27-ab7c-2f3bca09b9a2.
Endpoint
POST https://api.appsign.me/get-partner-stripe-payment
Content-Type: application/jsonКлюч передаётся заголовком X-Partner-Api-Key или полем api_key в теле — на выбор.
Формат запроса
{
"api_key": "ваш-api-ключ",
"payment_intent_id": "pi_3TcXXXXXXXXXXXXX"
}Параметры:
Параметр | Обязательный | Описание |
|---|---|---|
| Да, если нет заголовка | API-ключ партнёра (UUID). Либо заголовок |
| Да | Идентификатор платежа Stripe, строка вида |
Параметра environment здесь нет: pi_… уникален сам по себе, а окружение платежа возвращается полем в ответе.
Формат ответа
Успешный ответ
{
"success": true,
"payment": {
"id": "stripe:txn_3TcXXXXXXXXXXXXX",
"amount": 99.00,
"net_amount": 95.13,
"fee": 3.87,
"currency": "USD",
"status": "completed",
"transaction_date": "2026-08-18T14:22:05.000Z",
"description": "Premium Plan",
"environment": "live",
"type": "stripe_payment_in",
"is_subscription": false,
"client_reference_id": "order-10482",
"payment_intent_id": "pi_3TcXXXXXXXXXXXXX",
"snapshot": {
"payment_intent": { "…": "…" },
"charge": { "…": "…" },
"checkout_session": { "…": "…" },
"invoice": { "…": "…" },
"balance_transaction": { "…": "…" }
}
},
"related_movements": [
{
"id": "stripe:txn_3TdYYYYYYYYYYYYY",
"type": "stripe_refund",
"amount": -99.00,
"currency": "USD",
"status": "refunded",
"transaction_date": "2026-08-19T09:03:41.000Z"
}
],
"count": 2
}Поля верхнего уровня:
Поле | Тип | Описание |
|---|---|---|
| boolean |
|
| object | Основное движение по платежу — сама оплата. Если оплаты в наших данных нет (например, вы запросили |
| array | Остальные движения этого же платежа: возвраты, споры, разморозки. Без снэпшота. |
| number | Сколько всего движений найдено (основное + связанные). |
Поля объекта **payment** — те же, что в списке платежей за период (id, amount, net_amount, fee, currency, status, transaction_date, description, environment, type, is_subscription, client_reference_id, payment_intent_id), плюс одно дополнительное:
Поле | Тип | Описание |
|---|---|---|
| object | Полный набор объектов Stripe по платежу: |
Структура каждого элемента в **related_movements**:
Поле | Тип | Описание |
|---|---|---|
| string | Идентификатор движения ( |
| string | null | Тип движения: |
| number | Сумма в основных единицах, со знаком: возврат — отрицательный. |
| string | Валюта по ISO 4217. |
| string |
|
| string | Дата и время движения, ISO 8601 (UTC). |
Ошибки
Все ошибки возвращаются с HTTP 200 и полем success: false.
{
"success": false,
"error_code": "PAYMENT_NOT_FOUND",
"error_message": "No payment with payment_intent_id pi_… found for your account."
}
| Когда срабатывает |
|---|---|
| API-ключ невалиден, не в формате UUID, либо партнёр/сотрудник отключён |
| У партнёра нет разрешения |
|
|
| Платёж с таким |
| Сбой на нашей стороне — повторите запрос позже |
PAYMENT_NOT_FOUNDприходит и когда платежа не существует вовсе, и когда он существует, но принадлежит другому партнёру — ответ намеренно одинаковый.
Что важно знать
Один вызов — один платёж. Если нужно проверить много платежей, сначала возьмите список за период, а точечный запрос делайте только по тем, где расходится с вашей системой.
Запрос только читает и ничего не меняет: его можно безопасно повторять. Поле
idempotency_keyпринимается для единообразия, но игнорируется.Возврат и спор не меняют исходное движение, а приходят отдельными записями — смотрите их в
related_movements.Расшифровка объектов внутри
snapshot— в статье «Webhook EasyPay: структура данных платежей Stripe».
Пример на Python
import urllib.request
import json
url = "https://api.appsign.me/get-partner-stripe-payment"
payload = {"payment_intent_id": "pi_3TcXXXXXXXXXXXXX"}
req = urllib.request.Request(
url,
data=json.dumps(payload).encode("utf-8"),
headers={
"Content-Type": "application/json",
"X-Partner-Api-Key": "ваш-api-ключ",
},
method="POST",
)
with urllib.request.urlopen(req) as resp:
result = json.loads(resp.read().decode("utf-8"))
if result.get("success"):
p = result["payment"]
print(f"{p['amount']} {p['currency']} — {p['status']} ({p['transaction_date']})")
for m in result["related_movements"]:
print(f" движение: {m['type']} {m['amount']} {m['currency']} — {m['status']}")
else:
print(f"Ошибка: {result.get('error_code')} — {result.get('error_message')}")Пример на cURL
curl -X POST https://api.appsign.me/get-partner-stripe-payment \
-H "Content-Type: application/json" \
-H "X-Partner-Api-Key: ваш-api-ключ" \
-d '{"payment_intent_id": "pi_3TcXXXXXXXXXXXXX"}'Через AI-агента
Если у вас подключён MCP-сервер EasyPay, попросите агента: «покажи всё по платежу pi_… — прошёл ли он, были ли возвраты». Агент вызовет тот же метод. Настройка — «MCP-сервер EasyPay: настройка платежей в чате с AI».