Как рассчитать в PHP для платежного шлюза - PullRequest
2 голосов
/ 15 марта 2020

Я интегрирую Платежный шлюз с моим PHP приложением. Я сталкиваюсь с проблемой при решении некоторого базового c маленького уравнения с помощью JavaScript или PHP. фактически мой платежный шлюз берет несколько процентов от основной суммы, поскольку у них есть свои правила.

Я хочу, чтобы сумма была вычтена, и добавить ее во время оплаты, когда пользователь совершает платеж. Для большей ясности ниже приведен мой пример. Предположим, что пользователь покупает товар на сумму 100 долларов США на платежном шлюзе, его оплата будет рассчитываться по следующей формуле: -

var amount = '10352';
var percent = amount * '2.5' / '100';
var charge = percent + parseFloat('5');
var TAX = charge * '18' / '100';
var totalcharge = charge + TAX;
var okAmount = parseFloat(amount) + parseFloat(totalcharge);
//output result is *10663.28* which is correct.

, но когда я пытаюсь выполнить вычитание, Не отображается правильный ответ в PHP.

$amount ="10663.28";
$percent = $amount * '2.5' / '100';
$charge = $percent + '5';
$GST = $charge * '18' / '100';
$totalcharge = $charge + $GST;
$totalAmount = $amount - $totalcharge;
but the answer is not == 10352 even I try my best to apply at the same formula.

Пожалуйста, дайте мне знать, в чем проблема и что я могу делать неправильно. То, что я хочу знать, - Как я делаю 10663.28 до 10352 снова в PHP. Огромное спасибо. Примечание: Это не мой вопрос, и он уже применен мной

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Я заставил это работать так:

$amount = 10663.28;
$totalcharge = $amount * 0.0291921325550365;
$totalAmount = round($amount - $totalcharge,2);
//$totalAmount = 10352

Это чисто математическая проблема, и вам нужно выяснить, какой процент от "общего начисления" взимается с каждой транзакции.

Разделите сумму $ totalAmount на сумму $ totalcharge, и вы получите 0.0291921325550365.

. С этой цифрой теперь вы знаете, что 2.919213255% берется с каждой транзакции.

Следовательно, 10663.28 * 0.0291921325550365 = 311.284, то есть "totalcharge ".

А 10663.28 - 311.284 округлено до 10352.

Я бы также предложил не писать числа с апострофом, так как это не строки, а целые числа, и добавить скобки для разделения различных вычислений, поэтому ваша оригинальная формула должна выглядеть так:

$amount = 10352;
$percent = ($amount * 2.5) / 100;
$charge = $percent + 5;
$GST = ($charge * 18) / 100;
$totalcharge = $charge + $GST;
$totalAmount = $amount - $totalcharge;
0 голосов
/ 16 марта 2020

Я думаю, что вы не получите то, что вы хотите, основываясь на ваших текущих значениях параметров. Вам нужно изменить значение любого вашего параметра, я получил правильный результат, изменив значение GST;

$('#amount, #percent_val, #charge_val, #gst_val').change(function(){
  CalculatePrice()
});

$('#btnCalc').click(function(){
  CalculatePrice()
});

function CalculatePrice(){
  var $amount = $('#amount').val();
  var $percent = parseFloat($amount) * $('#percent_val').val() / 100;
  var $charge = parseFloat($percent) + $('#charge_val').val();
  var $GST = parseFloat($charge) * $('#gst_val').val() / 100;
  var $totalcharge = parseFloat($charge) + parseFloat($GST);
  var $totalAmount = parseFloat($amount) - parseFloat($totalcharge);

  $('#percent').val(parseFloat($percent).toFixed(2));
  $('#charge').val(parseFloat($charge).toFixed(2));
  $('#gst').val(parseFloat($GST).toFixed(2));
  $('#totalcharge').val(parseFloat($totalcharge).toFixed(2));
  $('#totalamount').val(parseFloat($amount - $totalcharge).toFixed(2));
}

CalculatePrice()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tr>
    <td>Amount</td>
    <td></td>
    <td><input id="amount" type="number" value="10663.28"></td>
  </tr>
  <tr>
    <td>Percent</td>
    <td><input id="percent_val" type="number" value="2.5"></td>
    <td><input id="percent" readonly type="number"></td>
  </tr>
  <tr>
    <td>Charge</td>
    <td><input id="charge_val" type="number" value="5"></td>
    <td><input id="charge" readonly type="number"></td>
  </tr>
  <tr>
    <td>GST</td>
    <td><input id="gst_val" type="number" value="16.765"></td>
    <td><input id="gst" readonly type="number"></td>
  </tr>
  <tr>
    <td>Total Charge</td>
    <td></td>
    <td><input id="totalcharge" readonly type="number"></td>
  </tr>
  <tr>
    <td>Total Amount</td>
    <td></td>
    <td><input id="totalamount" readonly type="number"></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
    <td><button id="btnCalc">Calculate</button></td>
  </tr>
<table>

Попробуйте воспроизвести ваши параметры, чтобы получить желаемый результат.

...