У меня есть веб-сайт, который использует Stripe Connect и Express в качестве платформы для продавцов. Во всей документации Stripe, которую я видел, application fee amount
выражается целым числом. В приведенном ниже примере «500» переводится как «5 долларов США». Если я не хочу взимать фиксированную сумму в долларах, как я могу выразить ее в процентах от продажной цены?
payment_intent_data: {
application_fee_amount: 500,
transfer_data: {
destination: tour.createdBy
}
}
иметь веб-сайт, использующий Stripe Connect и Express в качестве платформы для продавцов;
кк
Во всей документации Stripe, которую я видел, сумма сбора за подачу заявки выражается целым числом.
Действительно. Это связано с тем, что Stripe использует JSON, а JSON не гарантирует сохранения числовых значений с десятичными (основаниями счисления) цифрами — это связано с тем, что JSON использует тип number
JavaScript/ECMAScript, основанный на IEEE-754 , который нельзя использовать для надежного хранения нецелые суммы , поэтому Stripe использует «целые центы» вместо «плавающих долларов» для хранения значений валюты.
Если я не хочу взимать фиксированную сумму в долларах, как я могу выразить ее в процентах от продажной цены?
Нельзя - да и не нужно.
Вся бизнес-модель Stripe основана на наличии удобного для разработчиков API-интерфейса веб-сервиса (в отличие, скажем, от PayPal или Authorize.net, которые активно враждебны разработчикам по причинам, которые я не буду вдаваться, но если кто-то из PayPal Слушайте, пожалуйста, исправьте вашу неработающую неизменяемую функцию истории транзакций, это просто безответственно!) - следовательно, вы являетесь разработчиком, который знает, как определить процент в вашем собственном коде приложения:
const AMOUNT = 500;
const PERCENTAGE_WHATEVER = 0.1; // 0.1 == 10%
const myStripeRequestDto = {
application_fee_amount: AMOUNT,
transfer_data: {
destination: Math.floor( AMOUNT * PERCENTAGE_WHATEVER);
}
}
const resp = await sendRequestToStripe( myStripeRequestDto );
Да, оглядываясь назад, это был глупый вопрос. В итоге я определил процент цены в своем коде... Я сделал это немного иначе, чем то, что вы указали выше. У меня просто "product.price * .01 * 100". Спасибо за подробный ответ!
account_id входит в параметр назначения, Math.floor должен быть в параметре application_fee_amount
«Если я не хочу взимать фиксированную сумму в долларах, как я могу выразить ее в процентах от продажной цены?» - путем вычисления процента в собственном коде, где вы генерируете объект
payment_intent_data
, учитывая, чтоapplication_fee_amount
в первую очередь должно быть числовым значением.