添加 - 解决:我的代码从一开始就很好,问题是使用的货币,如果是美元,它将按原样运行。我的测试是用CAD货币完成的,为此," amount_gross"返回一个空值(来自Paypal的doc),必须使用" 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& #34 ;.
当金额没有小数(例如: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);
怪异。我今晚放弃了。
答案 0 :(得分:0)
当payment_amt类型为整数试用楼层时($ payment_amt * 100)
答案 1 :(得分:0)
确保字段payment_amt
在数据库中的类型为FLOAT
或DOUBLE
。此时可能是INT
或其他整数。
答案 2 :(得分:0)
删除字段的引号并尝试:
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 .",
'". $txn_id ."',
'". $payer_email ."',
'". $custom ."',
'". $commerce_id ."'
)") or die(mysql_error());
删除// does not record if amount has decimals