Как управлять наличием товара / налогами / доставкой с помощью Stripe PaymentIntent?

С помощью API-интерфейса PaymentIntents мы настраиваем намерение с общей суммой и переводим пользователя в кассу. Есть несколько причин, по которым я не хочу подтверждать продажу, пока не приду на свой сервер после того, как пользователь нажмет «Купить».

1) Товар еще доступен? Другой пользователь мог быстрее оформить заказ.

2) Каковы окончательные налоги для пользователя (поиск налоговых ставок может оказаться дорогостоящим)? Пользователю отображается «Расчетные налоги». Не хочу делать окончательный расчет для каждого человека, который идет к кассе. Многие снимаются под залог.

3) Стоимость доставки может быть неточной (не в моем случае), но также в зависимости от штата (США) может снова измениться налог.

Stripe хочет, чтобы мы подтвердили оплату во внешнем интерфейсе. Как мне решить эти проблемы?

Какая лучшая практика? Поскольку API начислений позволяет нам перейти на сервер, выяснить все эти вещи, а затем инициировать списание с окончательной суммой. Или выйдите, если нужно.


person BobB    schedule 26.05.2020    source источник


Ответы (2)


Вы можете подтвердить на стороне сервера, следуя https://stripe.com/docs/payments/accept-a-payment-synchronously

person taintedzodiac    schedule 26.05.2020
comment
Похоже, это то, что мне нужно. Также похоже, что это будет работать для Apple Pay и сохраненных карт. Просто отключите paymentMethod.id - person BobB; 26.05.2020

Для продукта обработки вы можете поместить их в метаданные PaymentIntentCreateParams следующим образом

Product order = new Product();
Map<String, String> metadata = new HashMap<>();
metadata.put("productId", order.getProductId());
metadata.put("description", order.getDescription());

PaymentIntentCreateParams paymentIntentParams =  PaymentIntentCreateParams.builder().putAllMetadata(metadata)
    .setAmount(amountPaymentIntent).setCurrency(currencyPaymentIntent).setCustomer(customer.getId())
    .build();

 PaymentIntent paymentIntent = PaymentIntent.create(paymentIntentParams);
person Hoat    schedule 10.06.2021