Stripe - Как создать PaymentMethod без привязки к пользователю? - PullRequest
2 голосов
/ 24 сентября 2019

Наш пользователь может ввести карту для оплаты наших услуг.Он / она может выбрать сохранение или НЕ сохранять карту для повторного использования.

Когда пользователь НЕ сохраняет карту, мы создаем 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

Заранее спасибо

...