Stripe - Получить историю платежей клиентов - PullRequest
0 голосов
/ 03 апреля 2020

Я создаю платформу, где я использую концепцию Stripe относительно родительской учетной записи «платформа» и учетных записей Connected Stripe, принадлежащих этой платформе. (например, модель Lyft) Следуя документации Stripe, когда я создаю нового клиента в Stripe, я создаю его под основной учетной записью платформы, а также сохраняю все способы оплаты для этого клиента. Когда клиент покупает что-либо из подключенного аккаунта, я следую this do c, где клонирую метод оплаты и создаю PaymentIntent, который присоединяется к указанному c подключенному аккаунту. И все это работает. Однако, когда я пытаюсь получить историю транзакций клиента (List of PaymentIntents), он возвращает пустой список, потому что запускает его для основной учетной записи платформы:

stripe.PaymentIntent.list(customer='cus_FJDHFGSJHDF')

Когда я указываю учетную запись клиента И подключен id, он возвращает пустой список, потому что этот клиент не существует в этой учетной записи Connected, однако paymentIntents присутствует в этой учетной записи Connected.

Итак, как правильно создать PaymentIntent для клиента для учетной записи Connected, а затем получить историю платежей для этого клиента на учетную запись Connected Stripe?

Вот как я клонирую PaymentMethod и создаю PaymentIntent:

payment_method = stripe.PaymentMethod.create(
        customer=customer,
        payment_method=customer.invoice_settings.default_payment_method,
        stripe_account=stripe_connect_id,
    )


    intent = stripe.PaymentIntent.create(
        payment_method=payment_method,
        amount=amount,
        currency='usd',
        confirm=True,
        application_fee_amount=fee_in_cents if fee_in_cents >= 1 else None,
        stripe_account=stripe_connect_id,
    )

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Насколько я вижу, у вас есть 2 варианта:

  1. Создайте клиентов на подключенной учетной записи и создайте там плату, тогда у вас будет отношение [0].
  2. Сохраните идентификатор клиента в метаданных PaymentIntent, а затем согласовайте их в своем коде [1].

Надеюсь, это поможет!

[0] https://stripe.com/docs/connect/cloning-saved-payment-methods#making -a -заряд

[1] https://stripe.com/docs/api/metadata

0 голосов
/ 07 апреля 2020

Вот подход, который я решил использовать. Так как я особенно интересовался извлечением сборов, которые указанный клиент c сделал в указанной учетной записи c Connected, я прочитал больше о сборах и заметил, что вы можете получить список сборов на основе transfer_group='{ORDER10}'. Итак, вот мой поток:

  • Способы оплаты клиента и клиента хранятся под основной учетной записью платформы (чтобы я мог отслеживать текущий способ оплаты по умолчанию в одном месте)
  • Когда клиент совершает платеж на указанную c подключенную учетную запись, я клонирую его метод оплаты по умолчанию
  • Создайте PaymentIntent и задайте transfer_group для номера телефона клиента, поскольку он является уникальным идентификатором для всей моей платформы. .

Теперь, когда мне нужно снять все расходы для определенного c клиента, я перевожу oop через каждую подключенную учетную запись, с которой связан клиент (эти отношения хранятся на моей платформе. ) и просто вытяните все заряды, используя transfer_group и stripe_account_id:

def get_all_charges(user, stripe_account_id):
     return stripe.Charge.list(transfer_group=user.phone_number, stripe_account=stripe_account_id, limit=100).data
...