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上

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...