Встроенный платеж ASP.NET Stripe Connect — не удается получить сеанс без идентификатора учетной записиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Встроенный платеж ASP.NET Stripe Connect — не удается получить сеанс без идентификатора учетной записи

Сообщение Anonymous »

Я работаю над предоставлением встроенных платежных решений для клиентов, использующих Stripe Connect. Я могу успешно создать сеанс оформления заказа с помощью следующего серверного кода:

Код: Выделить всё

                var options = new Stripe.Checkout.SessionCreateOptions
{
LineItems = new List
{
new Stripe.Checkout.SessionLineItemOptions
{
PriceData = new Stripe.Checkout.SessionLineItemPriceDataOptions
{
Currency = "aud",
ProductData = new Stripe.Checkout.SessionLineItemPriceDataProductDataOptions
{
Name = "Gift Voucher",
},
UnitAmount = 30000,
},
Quantity = 1,
},
},
PaymentIntentData = new Stripe.Checkout.SessionPaymentIntentDataOptions
{
ApplicationFeeAmount = 110,
},
Mode = "payment",
UiMode = "embedded",
ReturnUrl = "https://localhost:44389/blah/StripeCheckoutReturn",
ClientReferenceId = "12345"
};
var requestOptions = new RequestOptions
{
StripeAccount = "abcd..."
};
var service = new SessionService();
Session session = service.Create(options, requestOptions);
TempData["StripeSession"] = session.Id;
return Json(new { clientSecret = session.ClientSecret });
Приведенный выше код работает нормально, и я могу выполнить тестовый платеж с помощью встроенной платежной формы Stripe.
Проблема возникает, когда я пытаюсь чтобы получить сеанс в моей конечной точке ReturnUrl. Приведенный ниже код завершается сбоем из-за исключения Stripe, говорящего нет такого checkout.session.

Код: Выделить всё

[HttpGet]
[AllowAnonymous]
public async Task StripeCheckoutReturn()
{
string session_id = TempData["StripeSession"].ToString();
var service = new SessionService();
Session session = service.Get(session_id);
if (session.PaymentStatus == "paid")
{
}
}
Однако, если я жестко запрограммирую идентификатор учетной записи клиента Connect, как показано ниже, ошибка исчезнет, ​​и я успешно получу сеанс.

Код: Выделить всё

[HttpGet]
[AllowAnonymous]
public async Task StripeCheckoutReturn()
{
string session_id = TempData["StripeSession"].ToString();
var requestOptions = new RequestOptions
{
StripeAccount = "acct_12345..."
};
var service = new SessionService();
Session session = service.Get(session_id, requestOptions: requestOptions);
if (session.PaymentStatus == "paid")
{
}
}
Для меня это приводит к ситуации с курицей и яйцом, потому что, насколько я могу судить, я не могу получить сеанс без соответствующей учетной записи клиента №. Но только после получения сеанса я могу получить «ClientReferenceId», который мне нужен, и использовать его для согласования сеанса с нашими внутренними системами.
Я поднял эту проблему в службе поддержки Stripe и сначала они вернулись ко мне и сказали, что проблема в том, что я не установил ApplicationFeeAmount. Но когда я отписал свой ответ в службу поддержки по электронной почте, в котором говорилось, что я действительно установил сумму правильно и что сеанс разрешается нормально, когда я предоставляю идентификатор учетной записи клиента, я просто получил автоматический ответ по электронной почте, в котором мне предлагалось связаться со Stripe через их чат. это всего лишь робот-помощник с искусственным интеллектом.
Я не получил надлежащего обращения в службу поддержки, и на моей панели управления нет раздела «Поддержка», где я мог бы решать вопросы поддержки.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -account-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»