Stripe python присоединяет существующую карту / источник к новому клиенту - PullRequest
0 голосов
/ 27 сентября 2018

У меня следующая ситуация:

  • Пользователи могут забронировать номера.

  • Возможно, что гостевая книгакомната, без учета.В этом случае я создаю комиссионный сбор без клиента

  • Возможно, что пользователь, пока он находится в процессе бронирования, решает создать учетную запись.В этом случае я также создаю клиента полосы.

Что мне нужно

Если пользователь решит создать учетную запись:

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

Проблема:

Плата за полосу создается до создания клиента.Поэтому мне нужно взять источник и прикрепить его к клиенту.(Я уже успешно могу обновить плату и добавить customer.id, но тот же процесс не работает для обновления клиента.)

Обновление источника клиента дает мне:

Cannot use stripe token more than once

Что я пробовал до сих пор:

получение card_id от заряда

ch_ch = stripe.Charge.retrieve(new_booking.stripe_charge_id)

customer.sources.create(card=ch_ch.source.id)
customer.save()

с использованием идентификатора источника

customer.sources.create(source=form.stripe_source_id.data)

другой синтаксис

customer.source = form.stripe_source_id.data
customer.save()

Примечание: form.stripe_source_id.data содержит tok_1DEvMCGd8vfeewZVgrSRu4, который возвращается stripe.js при создании элемента кредитной карты.Это используется для создания платы, которая прекрасно работает:

stripe_charge = stripe.Charge.create(
    amount=int(float(data_received['total_price']) * 100),
    currency="eur",
    source=form.stripe_source_id.data,
    description=None,
    #customer=user_id, # customer is anonymous
    capture=False, # if False the charge needs to be captured, otherwise it will expire in 7 days and is refunded
    #receipt_email='email für den typer, der die rechnung kriegt, funktioniert nur im livemode',
    metadata={
        'infos': 'process stripe payment anonymous charge'
    }
)

В документах я отмечаю, что если источник клиента подключен / обновлен, то создается новый источник, но это означает, что его невозможно прикрепитьСУЩЕСТВУЮЩИЙ источник для клиента?Это не может быть правдой.

Идентификатор токена или источника, возвращаемый Elements.Передача источника создаст новый исходный объект, сделает его новым источником по умолчанию для клиента и удалит старый вариант по умолчанию для клиента, если он существует.

1 Ответ

0 голосов
/ 27 сентября 2018

Невозможно добавить карточку покупателю, если жетон карточки уже используется для оплаты.Вы можете либо добавить источник к клиенту и использовать его для оплаты, либо вы можете попросить клиента повторно ввести свою платежную информацию при создании учетной записи.

Одной из причин этого являетсядля защиты данных карты клиента.Ограниченный поток упрощает для промежуточных платформ с поддержкой Stripe (таких как Shopify) предотвращение злоупотреблений со стороны продавцов, сохраняющих данные карты против воли клиента.

Если вы настаиваете на том, чтобы описанный вами поток был нижеВозможный обходной путь: когда кто-то вводит информацию о карте, создайте фиктивного клиента и снимите его.Затем, если они создают учетную запись, свяжите их информацию с клиентом.Однако это будет дополнительная работа по управлению и удалению этих посторонних фиктивных клиентов.

...