Я перевожу платформу электронной коммерции с использования SagePay на Stripe.
В документах показано использование amount
цифры 1099
и валюты gbp
(https://stripe.com/docs/payments/accept-a-payment#web -create-payment-intent ).
Насколько я могу судить, это означает £ 10,99 (не £ 1099). Но это крайне неясно в их документах - я предполагаю, что это так.
Если я попытаюсь отправить amount => 10.99
через их API, я получу сообщение об ошибке в ответе:
"error": {
"code": "parameter_invalid_integer",
"doc_url": "https://stripe.com/docs/error-codes/parameter-invalid-integer",
"message": "Invalid integer: 10.99",
"param": "amount",
"type": "invalid_request_error"
}
С SagePay вы фактически отправите 10.99
в качестве суммы.
Итак, с Stripe вам нужно конвертировать все суммы в одну базовую единицу валюты (пенсов в случае GBP), например, если сумма была £ 10.99, которую вы бы сделали (10.99 * 100)
затем отправьте 1099
?
Документы на самом деле не дают понять это. Если вы читаете десятичные суммы (https://stripe.com/docs/billing/subscriptions/decimal-amounts) в их документах, это говорит о том, что вы можете использовать параметр с именем amount_decimal
, но это также выдаст ошибку при отправке через их API:
$intent = \Stripe\PaymentIntent::create([
'amount_decimal' => 10.99,
'currency' => 'gbp',
// Verify your integration in this guide by including this parameter
'metadata' => ['integration_check' => 'accept_a_payment'],
]);
В результате возникает ошибка, сообщающая, что параметр amount_decimal
неизвестен (даже если он находится в их документах?):
"error": {
"code": "parameter_unknown",
"doc_url": "https://stripe.com/docs/error-codes/parameter-unknown",
"message": "Received unknown parameter: amount_decimal",
"param": "amount_decimal",
"type": "invalid_request_error"
}
Я предполагаю, что эта ошибка вызвана тем, что эта часть документации имеет в виду выставление счетов за «планы», а не разовые платежи. Я хочу принять платеж картой для одноразовых счетов, поэтому использовал Принять платеж картой документов.
Итак, мой вопрос: вы просто отправляете сумму в наименьшем единица валюты (например, 10.99 * 100
для £ 10,99), или есть какой-то другой метод, где он может быть передан в виде десятичной дроби (например, 10.99
)?