Cakephp 2.x PayPal通知URL无法正常工作

时间:2014-01-31 13:48:19

标签: php cakephp paypal

您好,我试图解决我的问题。无法解决,所以我需要你的帮助。

我从http://code.google.com/p/paypal-ipn-class-php/downloads/list下载了PayPal脚本 我有2个文件,paypal_class.php,其他文件是paypal.php

我已将paypal_class.php文件复制并粘贴到Vendor/Paypal/paypal_class.php

我在paypal操作中调用了paypal_class.php文件。 App::import('Vendor', 'Paypal/paypal_class');UsersController.php文件中正常运行。

请检查我的代码:

test.ctp

<form name="paypal" id="paypal" method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
    <input type="hidden" name="cmd" value="_xclick" />
    <input type="hidden" name="business" value="chinmay235-facilitator@gmail.com" />
    <input type="hidden" name="item_name" value="Purchase Gold Coin" />
    <input type="hidden" name="currency_code" value="USD" />
    <input type="hidden" name="amount" id="amount" value="50" />
    <input type="hidden" name="image_url" value="http://dev.raddyx.com/finalgame7/img/logo.png" />
    <input type="hidden" name="return" value="http://dev.raddyx.com/finalgame7/users/mycoin" />
    <input type="hidden" name="cancel_return" value="http://dev.raddyx.com/finalgame7/users/mycoin" />
    <input type="hidden" name="notify_url" id="notify_url" value="http://dev.raddyx.com/finalgame7/users/paypal" />
</form>

UserController.php

public function paypal(){


App::import('Vendor', 'Paypal/paypal_class');
$p = new paypal_class();
if (empty($_GET['action'])) $_GET['action'] = 'process';  

    switch($_GET['action']) 
    {
        case 'process': 
        //Process email here...
        break;

        case 'success':
        //Success email here...
        break;

        case 'cancel':
        //Cancel email here...
        break;

        case 'ipn':         

        if($p->validate_ipn())
        {
            //Payment Success complete email here...
        }
        exit;
    }

}

上面我使用了4个测试邮件,但我没有收到任何电子邮件..

2 个答案:

答案 0 :(得分:0)

我知道调试和测试远程服务器通知的最佳方法是充分利用日志。

因此,您的paypal()函数应该包含日志语句,跟踪正在遵循的代码路径并转储各种变量值,以便您了解代码中发生的情况。

您可以通过访问此链接手动触发IPN呼叫:

http://dev.raddyx.com/finalgame7/users/paypal

这只会告诉您控制器是否正常工作。然后你需要使用PayPal IPN测试仪(它在PayPal的开发人员中心的某个地方)。

一旦你有了你的日志并且你知道发生了什么事情就会回来一个更具体的问题,如果事情仍然无效。

祝你好运! :)

答案 1 :(得分:0)

我想您忘记在“notify_url”

中添加文件名

目前是:

input type =“hidden”name =“notify_url”id =“notify_url”value =“http://dev.raddyx.com/finalgame7/users/paypal”/&gt;

但它应该是这样的:

input type =“hidden”name =“notify_url”id =“notify_url”value =“http://dev.raddyx.com/finalgame7/users/paypal/ notifying_filename.php ”/ / &GT;