#stripe-payments
#stripe-платежи
Вопрос:
Используя CLI Stripe для создания подписок для пользователей, я заметил, что могу успешно извлекать данные их кредитной карты для отображения (например, последние 4, дата и т. Д.), Используя следующий фрагмент кода:
var service = new CardService();
var cardOptions = new CardListOptions
{
Limit = 3
};
var cards = await service.ListAsync(StripeCustomerId, cardOptions);
Однако при тестировании с помощью плагина WordPress для внесения одного платежа новому клиенту (то есть не подписки, а разового платежа) приведенный выше код не возвращает кредитные карты!
Затем я попробовал этот фрагмент кода:
var paymentMethodService = new PaymentMethodService();
var pmList = paymentMethodService.List(new PaymentMethodListOptions { Customer = StripeCustomerId,
Type = "card"});
и он успешно вернул метаданные кредитной карты моего пользователя за один платеж. Затем я попробовал этот код против пользователей моей подписки, и он также успешно сработал!
Это приводит меня к выводу, что если я хочу надежно и гарантированно получать данные кредитной карты от пользователя, я должен использовать второй фрагмент выше.
..Но возникает вопрос — в чем разница между CardService и PaymentMethodService? Если я хочу решить проблему «Как я могу показать все кредитные карты, которые есть у пользователя, на их странице выставления счетов в моем пользовательском веб-приложении», какую службу я использую?
Большое вам спасибо за ваше время!
Ответ №1:
Вы всегда должны использовать PaymentMethodService.
https://stripe.com/docs/payments/payment-methods
По историческим причинам в API Stripe существует несколько разных типов объектов для представления карт (объект Card с идентификатором card_xxxx
, исходный объект с идентификатором src_xxxx
type:card
и теперь PaymentMethod с идентификатором pm_xxx
). Все они немного отличаются и имеют разную форму. Однако карты и исходные коды по существу устарели.
PaymentMethods заменяет их все и полностью обратно совместим; например, если вы использовали объект Card в прошлом и сохранили их для клиентов, вы можете использовать PaymentMethodService.список для возврата обоих этих объектов Card (и любых исходных или платежных методов), и они возвращаются в форме PaymentMethod через уровень совместимости. Это означает, что вашему коду не нужно думать о различиях в базовых объектах, и вы можете использовать PaymentMethodService как канонический способ работы с сохраненными картами клиента.
https://stripe.com/docs/payments/payment-methods/transitioning#compatibility
Однако при тестировании с помощью плагина WordPress для внесения одного платежа новому клиенту (то есть не подписки, а разового платежа) приведенный выше код не возвращает кредитные карты!
Вероятно, это потому, что плагин WordPress создает PaymentMethod или создает исходные коды, в зависимости от того, когда он был написан. Таким образом, вы не получите те, которые возвращаются с помощью CardService, но если вы используете PaymentMethodService, вы получите, из-за этого уровня совместимости, так что это идеальный пример того, почему вы должны использовать его здесь, и это канонический способ использования Stripe в будущем.