Можно ли ограничить сборы Stripe по метаданным?
У меня есть разбитый на страницы список расходов:
stripelist = Stripe::Charge.list({limit: 100})
stripelist.each do |payment|
if payment["metadata"]["ss_registration"]
striperecords << payment if pendingrecs.include? payment.metadata.portal_payment_id
end
end
while stripelist.has_more do
stripelist = Stripe::Charge.list({limit: 100, starting_after: stripelist.data.last.id})
stripelist.each do |payment|
if payment["metadata"]["ss_registration"]
striperecords << payment if pendingrecs.include? payment.metadata.portal_payment_id
end
end
end
Проблема в том, что мне приходится снимать все расходы, а затем фильтровать результаты в Ruby, что требует затрат времени на обработку. Есть ли способ фильтровать по метаданным?... сделать что-то вроде этого в начале:
stripelist = Stripe::Charge.list({limit: 100}, metadata: '{ss_registration}')
2 ответа
К сожалению, вы не можете перечислить Сборы по их метаданным. Прямо сейчас единственные параметры, по которым вы можете перечислять Charges, перечислены здесь: https://stripe.com/docs/api/charges/list?lang=ruby
Но ваш код можно немного упростить, используя функцию автоматической разбивки на страницы Stripe; описано здесь: https://stripe.com/docs/api/pagination/auto?lang=ruby.
С автоматической разбивкой на страницы ваш код может быть примерно таким:
charges = Stripe::Charge.list({ limit: 100 })
charges.auto_paging_each do |charge|
if charge["metadata"]["ss_registration"]
striperecords << charge if pendingrecs.include? charge.metadata.portal_payment_id
end
end
Strive Development рассмотрит возможность добавления метаданных в качестве критерия оплаты. Вот их ответ на мой запрос:
Благодарим вас за то, что обратились к нам и оставили свой отзыв об улучшении наших расходов на API. Мы знаем, что это важно для бизнеса.
Мы постоянно работаем над улучшением Stripe для наших пользователей, поэтому очень важно услышать ваш отзыв. Мы понимаем, что вы хотите, чтобы наша команда разработчиков разработала код для ограничения метаданных в дополнение к группе передачи, и наша команда разработчиков рассмотрит это.
Если у вас есть вопросы, свяжитесь с нами!