Я пытаюсь реализовать довольно простой процесс для моего продукта:
Клиент добавляет карту на свой счет
Клиент делаетзапрос -> Создать удержание на его карточке по цене запроса
По запросу доставлено -> Выполнить начальное удержание, сделанное на карточке
После прочтения множества документов по новому Intent API от Stripe это казалось довольно простым.
A. Создайте клиента Stripe
stripe.customers.create({ email: user.email, description:
Customer за $ {user.email} });
B. Прикрепите карту (способ оплаты) к клиенту, создайте setup intent
с этой картой, чтобы разрешить будущие расходы
stripe.setupIntents.create({ 'customer': customer_id, 'payment_method': paymentMethodId });
C. По запросу клиента создайте paymentIntent с capture_method
, установленным в manual
const paymentIntent = await stripe.paymentIntents.create({
'amount': price * 100, //convert shekels to agorot
'currency': 'ILS',
'customer': customer_id,
'payment_method': payment_method,
'payment_method_types': ['card'],
'capture_method': 'manual'
});
D. По запросу доставлено просто capture
оригинал paymentIntent
, созданный на шаге C.
const captureHoldIntent = await stripe.paymentIntents.capture(paymentIntentId);
Проблема, которую я получаю на самом деле, возникает между шагами C и D:
Не удалось сохранить транзакцию для user_id. Ошибка KAJSD92. Ошибка: не удалось зафиксировать этот PaymentIntent, поскольку он имеет статус require_confirmation. Может быть захвачен только PaymentIntent с одним из следующих статусов: require_capture.
Хотя я понимаю это сообщение об ошибке, я путаюсь с тем, почему paymentIntent
, созданный на шаге C, не изменяется настатус requires_capture
и вместо него всегда require_confirmation
, даже если он уже подтвержден?