gpt4 book ai didi

php - MySql 查询 : difficulties to record a field with amount containing decimals

转载 作者:行者123 更新时间:2023-11-30 23:02:23 25 4
gpt4 key购买 nike

已添加 - 已解决:我的代码从一开始就很好,问题是使用的货币,如果是美元,它会按原样工作。我的测试是用 CAD 货币完成的,为此,“amount_gross”返回一个空值(来自 Paypal 的文档),必须使用“mc_gross”——适用于所有货币!

因此适用于所有货币的正确代码是:

$item_name = $_POST['item_name']; 
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amt = $_POST['mc_gross']; // instead of payment_gross !!!
$txn_id = $_POST['txn_id'];
$payer_email = $_POST['payer_email'];
$custom = $_POST['custom'];
if ($payment_status == 'Completed') { ....

感谢大家的帮助!!!

---添加结束---

我的项目中有一个最后的问题,(Paypal 集成):在 Ipn 发送“完成”后,我想将数据保存到 MySQL,但是我对“payment_amt”字段有问题。

当金额没有小数(例如:100)时有效,如果有小数(例如:100.34),则不记录 payment_amt。记录所有其他字段。它与我必须添加的参数有关,尽管我很难理解逻辑(我不是程序员)。感谢您的帮助。

 mysql_query("INSERT INTO al_paypal
(item_name,item_number,payment_status,payment_amt,txn_id,payer_email,custom,commerce_id)
VALUES (
'". $item_name ."',
'". $item_number ."',
'". $payment_status ."',
'". $payment_amt ."', // does not record if amount has decimals
'". $txn_id ."',
'". $payer_email ."',
'". $custom ."',
'". $commerce_id ."'
)");
}
$item_name = $_POST['item_name']; // restaurant
$item_number = $_POST['item_number']; // my ordernymber
$payment_status = $_POST['payment_status']; //should be Completed
$payment_amt = $_POST['payment_gross'];
$txn_id = $_POST['txn_id']; // Paypal transaction number
$payer_email = $_POST['payer_email'];
$custom = $_POST['custom'];
if ($payment_status == 'Completed') { ....

这里有更多的代码

下面:

 $payment_amt = "33,56";  // if I use this it records properly
$payment_amt = $_POST['payment_gross']; // if I use this it records 0
// if I use (as suggested) ". $payment_amt .", instead of: '". $payment_amt ."', Nothing records at all.
$payment_amt = preg_replace("/,/", '.', $payment_amt);
$payment_amt = number_format($payment_amt, 2, '.', '');

很难理解哪里出了问题。不能使用错误,因为它是 IPN,它在 Paypal 发送东西时运行。

我检查过

  $payment_amt = $_POST['payment_gross'];

确实如此(我有通过短信发送的金额)。

 $headersCell = 'From: "" <"' . $_POST['payment_gross']. '">'. "\r\n". "Content-type:text/html;charset=iso-8859-1" . "\r\n";
mail($emailtoCell, $subjectCell, $textCell, $headersCell);

奇怪。我今晚放弃了。

最佳答案

当 payment_amt 为整数类型时,尝试 floor($payment_amt*100)

关于php - MySql 查询 : difficulties to record a field with amount containing decimals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com