#java #stripe-payments
#java #stripe-платежи
Вопрос:
Я играю с Stripe-Java и пытаюсь добавить карту клиенту.
Мой код выглядит так:
Customer stripeCustomer = Customer.retrieve("cus_xxxxxxx");
Map<String, Object> cardParam = new HashMap<String, Object>();
cardParam.put("number", "4242424242424242");
cardParam.put("exp_month", "11");
cardParam.put("exp_year", "2022");
cardParam.put("cvc", "123");
//token
Map<String, Object> tokenParam = new HashMap<String, Object>();
tokenParam.put("card", cardParam);
Token token = Token.create(tokenParam);
//user token
Map<String, Object> sourceParam = new HashMap<String, Object>();
sourceParam.put("source", token.getId());
//add to customer
stripeCustomer.getSources().create(sourceParam);
Это успешно работает на Stripe-Java версии 19.45.0, но не на 20.0.0 или любых версиях выше. Изменился ли метод добавления карты?
Генерируется исключение nullpointer
Спасибо
Комментарии:
1. вы видите какую-либо ошибку?
2. Что вы подразумеваете под «сбоем»? Предоставьте подробную информацию.
Ответ №1:
Это: stripeCustomer.getSources()
будет равно нулю в версии 20.0.0 и выше библиотеки, поскольку оно привязано к версии API 2020-08-27, где customer.sources
по умолчанию было удалено. [0] [1]
Свойство sources на клиентах больше не включено по умолчанию. Вы можете расширить список, но по соображениям производительности мы не рекомендуем этого делать, если в этом нет необходимости.
Вам нужно будет явно развернуть [2] "sources"
при получении клиента, чтобы заполнить customer.getSources()
CustomerRetrieveParams params = CustomerRetrieveParams.builder()
.addExpand("sources").build();
Customer stripeCustomer = Customer.retrieve("cus_xxxxxxx", params, null);
Кроме того, ваш код использует устаревший API токенов и передает необработанные данные карты с вашего сервера, что помещает вас в область PCI, вам следует изучить рекомендуемые пути интеграции: https://stripe.com/docs/payments/accept-a-payment
[0] https://github.com/stripe/stripe-java/blob/master/CHANGELOG.md#2000—2020-08-31
Комментарии:
1. Спасибо! Ценю комментарий о соответствии PCI. Это было просто тестирование java api. Я обязательно буду следовать стандартам перед публикацией.