Наш пользователь может ввести карту для оплаты наших услуг.Он / она может выбрать сохранение или НЕ сохранять карту для повторного использования.
Когда пользователь НЕ сохраняет карту, мы создаем PaymentIntent с передачей
[
'amount' => floatval($this->cart->total_gross) * 100,
'currency' => 'EUR',
'payment_method' => $this->pm,
'off_session' => true,
'capture_method' => 'manual',
'confirm' => true,
];
Это потому, что это предварительная авторизацияплатеж, который будет получен через 2-3 дня.
Используя этот конфиг, мы получили следующую ошибку
Stripe \ Exception \ MissingParameterException - 400 - Предоставленный PaymentMethod уже присоединен к другомуобъект.Вы не можете повторно использовать PaymentMethods, не прикрепив их сначала к объекту Customer.
Для ясности:
- пользователь вводит НОВУЮ КАРТУ
- выберите НЕ сохранятьдля использования в будущем
- stripe.js автоматически обрабатывает аутентификацию 3d-карты безопасности
- возвращенный
pm_...
отправляется на сервер с суммой и инструкцией НЕ сохранять карту (поэтому мы не создаемклиент полосы) - , используя приведенную выше конфигурацию, мы называем метод
\Stripe\PaymentIntent::create
- , мы получили ошибку выше
Что означает эта ошибка?Почему написано, что ПМ уже прикреплен к другому объекту?Который?Какого рода?
Я трижды проверил свой код, и это ТОЛЬКО API-вызов, который мы делаем после получения pm от внешнего интерфейса.
И ранее интерфейс просто использовал setupIntent для авторизации.карта с использованием официальных звонков stripe.js.Таким образом, PM, возвращенный из stripe.js, отправляется на наш сервер, ничего не делая с ним.А наш сервер просто вызывает метод create и каждый раз получает эту ошибку.
Обращаемся к вам за помощью в диагностике и понимании.
Мы используем последние официальные версии stripe-php
Заранее спасибо