Просмотр всех продуктов, которые клиент приобрел на Stripe

Как я могу просмотреть все Products, которые Customer приобрели с помощью Stripe API? Есть ли конкретное событие, которое отправляется при совершении покупки? Я также вижу, что есть предмет Orders, но я не уверен, что Products можно купить только как часть Orders.

Пример запроса для получения всех заказов клиентом:

from stripe import Order

Order.list(customer=customer_1['data'][0].id)

По сути, я хочу получить все товары, не основанные на подписке, которые приобрел пользователь - будет ли запрос к API для заказов таким образом давать мне все предметы, не основанные на подписке, поскольку Product обязательно должен быть привязан к Order, или есть ли другой/лучший способ сделать это?


person orange1    schedule 12.10.2017    source источник


Ответы (1)


Вы можете получить все заказы клиента с помощью метода списка всех заказов и параметра customer.

Затем вы можете просмотреть атрибут items заказа, чтобы найти артикулы, включенные в заказ.

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

В Python вы можете сделать что-то вроде этого:

customer_id = "cus_..."
products = []  # list of products ordered at least once by the customer

orders = stripe.Order.list(customer=customer_id)
for order in orders.auto_paging_iter():
    for item in order.items.auto_paging_iter():
        if item.type == "sku":
            sku = stripe.SKU.retrieve(item.parent)
            if sku.product not in products:
                products.append(product)

Приведенный выше код не очень эффективен, поскольку он будет отправлять запрос на получение SKU для каждого элемента типа "sku". На практике вы, вероятно, захотите кэшировать результаты и получать каждый SKU только один раз.

person Ywain    schedule 12.10.2017
comment
Спасибо! Но будет ли каждый приобретаемый экземпляр Product обязательно привязан к Order? то есть могут ли предприятия взимать с клиентов плату за Product (или какую-либо другую абстракцию для покупки без подписки) без размещения Order? - person orange1; 12.10.2017