#c# #stripe-payments
#c# #stripe-платежи
Вопрос:
Я провожу простой тест локального хоста с использованием stripe CLI. Когда я выполняю команду:
stripe trigger invoice.payment_succeeded
Мой локальный веб-узел все отлично подбирает, и мне отправляются тестовые данные, которые они генерируют. Единственная проблема, с которой я сталкиваюсь, — это когда код десериализуется:
if (stripeEvent.Type == "invoice.payment_succeeded")
{
Invoice successInvoice = (Invoice)stripeEvent.Data.Object;
...
Объект stripeEvent (типа Invoice) не имеет для него значения подписки или идентификатора подписки, чтобы я мог сопоставить его с подпиской, под которой находится клиент.
Конечно, я вижу сумму счета, но сейчас я хотел бы узнать больше деталей по этому пункту. Я читал кое-что о том, как Stripe отправит успешную оплату счета, но может изначально не включать в нее сведения о подписке, но это меня беспокоит, поскольку я хочу знать связанную подписку.
Есть идеи? Я смотрю на неправильное событие webhook?
Ответ №1:
К счастью, я только что понял это — если вы тестируете с помощью CLI, вам нужно сначала создать подписку, т.е.
stripe trigger customer.subscription.created
и затем, как только вы это сделаете, если вы затем выполните свой платеж
stripe trigger invoice.payment_succeeded
Выполнение этого в таком порядке обеспечит ввод идентификатора (но не всего объекта подписки). но это нормально — вы можете получить всю подписку, используя идентификатор следующим образом:
if (successInvoice.SubscriptionId != null)
{
var service = new SubscriptionService();
var subscription = service.Get(successInvoice.SubscriptionId);
if (subscription != null)
{
var plan = subscription.Plan; //do stuff with plan
}
}
Ответ №2:
Объект Invoice определенно имеет ссылку на подписку: https://stripe.com/docs/api/invoices/object?lang=dotnet#invoice_object-subscription
Это правда, что событие webhook, описывающее счет-фактуру, не будет содержать много сведений о подписке, но затем вы можете либо получить подписку, используя вышеупомянутый идентификатор, либо получить счет-фактуру из API при расширении подписки.
Комментарии:
1. На самом деле я только что понял это — если вы тестируете с использованием CLI, вам нужно сначала создать подписку, т.е. stripe trigger customer.subscription.created, а затем, как только вы это сделаете, если вы затем выполните stripe trigger invoice.payment_succeeded, появится идентификатор, и вы сможете получить всю подписку