Добавление источника карты работает в 19.45.0, сбой в 20.0.0 и выше

#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] https://stripe.com/docs/upgrades#2020-08-27

[2] https://stripe.com/docs/expand

Комментарии:

1. Спасибо! Ценю комментарий о соответствии PCI. Это было просто тестирование java api. Я обязательно буду следовать стандартам перед публикацией.