微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

paypal-ipn – Paypal IPN和mail()函数

更新:(2/29/12)好的,所以我再次针对完全不同的服务器和托管公司的不同客户端遇到同样的问题.

再一次,只有mail()的脚本正确发送电子邮件没有问题.然后我添加了类似于我下面的代码并将其与paypal IPN连接起来.每次新的付款进入,IPN触发,数据都会保存到数据库,但mail()函数不起作用.

但是,我遇到了一个有趣的问题.我使用相同的脚本从paypal的沙盒中测试了IPN火灾并且发送了电子邮件.

这是paypals生产IPN的问题,也许是它将数据发布到脚本的方式?

这里的任何信息都非常有用,因为我目前使用cronjobs的解决方案很草率.

结束更新

我已正确配置我的paypal IPN侦听器,因为它在新付款时将所有信息写入数据库.现在我正在尝试设置mail()函数,向我发送新付款的电子邮件警报.

我之前已经为另一个项目做了这个,但我不知道为什么这次不能正常工作.我没有在error_log中收到任何错误,其余的脚本运行正常.

我已经测试过以确保服务器确实使用独立的mail()脚本发送邮件.我真的在这里迷茫和迷茫.

这是我的代码

mail('test@email.com','New Order','From: support@website.com');

define("_VALID_PHP",true);
require_once('../PHP/init.PHP');

$item_number = $_POST['item_number'];
$payment_gross = $_POST['payment_gross'];
$payment_status = $_POST['payment_status'];
$payer_email = $_POST['payer_email'];
$txn_id = $_POST['txn_id'];

if ($payment_status == 'Completed') {
    $query = $db->query("SELECT price,id,uid FROM invoice WHERE md5='$item_number'");
    $row = $db->fetch($query);
    $iid = $row['id'];
    $uid = $row['uid'];

    if ($row['price'] == $payment_gross){
        $invoiceUpdate['paid'] = 1;
        $update = $db->update('invoice',$invoiceUpdate,"md5='$item_number'");
    }
}    

$data['iid'] = $iid;
$data['uid'] = $uid;
$data['payment_status'] = $payment_status;
$data['payer_email'] = $payer_email;
$data['payment_gross'] = $payment_gross;
$data['txn_id'] = $txn_id;

$db->insert('payment',$data);

解决方法

由于您的邮件功能返回true并且您的代码看起来正确,我认为您应该检查邮件日志,因为问题可能与代码无关.尝试发送邮件,然后检查服务器上的邮件日志…一旦我失去了两天试图找出类似的问题,最后问题是我的邮件没有被其他服务器接受.

找到你可以做的邮件日志(从shell):

updatedb;
locate mail.log

要么

locate maillog

这假设您使用的是Linux,但问题也可能存在于Windows上

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐