Как передать paymentIntentSecret в JavaScript через HTTP POST?

У меня возникла проблема с передачей данных через HTTP POST. Мне нужно получить значение subscription.LatestInvoice.PaymentIntent.ClientSecret в моем JavaScript файле.

Когда я нажимаю кнопку оплаты, Stripe должен указать значение subscription.LatestInvoice.PaymentIntent.ClientSecret для моего JS файла. Но этого не происходит.

Stripe выдает ошибку:

Uncaught IntegrationError: Неверное значение для stripe.handleCardPayment. Секрет intent должен быть в формате ${id}secret${secret}. Вы указали: .

Вот мой контроллер:

[HttpPost]
[Route("Members/AddMembership/{id}/{CompaniesId}")]
public async Task<IActionResult> AddMembership(MembersView model)
{
    try
    {
        // Здесь код Stripe и другая логика
        model.PiinVoice = subscription.LatestInvoice.PaymentIntent.ClientSecret;
        return View(model);
    }
    catch(Exception e)
    {
        // Обработка ошибки
    }
}

В JavaScript я пытаюсь получить значение так:

var paymentIntentSecret = document.getElementById('PiinVoice').value;

stripe.handleCardPayment(paymentIntentSecret).then(function(result) {
    // Обработка результата
});

Как правильно передать subscription.LatestInvoice.PaymentIntent.ClientSecret в PiinVoice для работы с 3D Secure? Если я вручную задаю var paymentIntentSecret = "xxxxxxx", все работает нормально.

Я сталкивался с подобной проблемой. Судя по всему, значение ClientSecret не передается корректно из контроллера в представление. Попробуй в контроллере добавить ViewBag:

ViewBag.PaymentIntentSecret = subscription.LatestInvoice.PaymentIntent.ClientSecret;

А в представлении:

Потом в JS:

var paymentIntentSecret = document.getElementById(‘paymentIntentSecret’).value;

Это должно решить проблему. Если нет, проверь в инспекторе, приходит ли значение в скрытое поле.