Разве плохо внедрять платежную систему с использованием JavaScript? - PullRequest
3 голосов
/ 27 ноября 2010

Мне вот интересно, разве это плохая идея внедрить легальную платежную систему с использованием JavaScript на стороне клиента и PHP на стороне сервера? В основном меня беспокоит IEEE с плавающей точкой и чрезмерно слабые языки.

Ответы [ 3 ]

6 голосов
/ 27 ноября 2010

Основной проблемой является Javascript, который даже не имеет реального целочисленного типа, не говоря уже о (официальной) правильной десятичной библиотеке (PHP имеет BC Math ).Существует старый сторонний порт BigDecimal от Java к Javascript , который можно использовать на стороне клиента.В качестве альтернативы можно рассчитать все в центах, поскольку двойное значение IEEE может точно представлять целые числа длиной до 53 битов, что достаточно для удержания даже всего суверенного долга США в течение как минимум еще 10 лет (, вероятно, ).

3 голосов
/ 27 ноября 2010

Я бы сказал, что это зависит от того, как вы это реализуете. Javascript работает на стороне клиента и поэтому небезопасен. Этому нельзя доверять. Кроме того, это означает, что ваша система не будет работать для людей, которые отключили Javascript или используют старые браузеры.

Пока вы помните об этом, используйте PhP для обработки защищенных вещей и проверяйте все, что исходит из Javascript и готовы потерять тех, у кого нет Javascript, тогда я не вижу проблем с этим .

Но делать все, что может быть сложнее, чем вы думаете, так что будьте осторожны.

1 голос
/ 27 ноября 2010

Реальная проблема, как уже отмечали другие, заключается в том, что вы не можете доверять клиенту.Когда-либо.Никакие вычисления не должны выполняться на стороне клиента или с использованием данных (таких как цена), поступающих от клиента.Кроме того, я бы никогда не использовал float для представления денежных сумм.Деньги всегда должны быть представлены в виде целого числа, где 1 представляет одну единицу базовой единицы валюты (например, центов).это немного усложняет ситуацию, но сделайте себе одолжение и создайте несколько простых функций доступа, и ваша жизнь будет легче для этого.

...