如何通过简单的HTTP身份验证使Paypal将IPN发送到我的服务器?

时间:2012-05-07 07:30:06

标签: paypal paypal-ipn

我正在使用简单的HTTP身份验证保护的开发环境中测试环境。我不想在没有身份验证的情况下公开环境。 Paypal / Paypal-sandbox可以通过简单的HTTP身份验证将IPN发送到我的开发服务器,例如https://username:password@mydomain.com/ipn?感谢。

4 个答案:

答案 0 :(得分:2)

IIRC 谷歌搜索后,我看起来不像你。我们使用PayPal,基本上,当用户点击您的PayPal按钮时,您可以将custom变量传递到IPN流程。然后,此变量将在整个事务中传递,并将发送到处理IPN通知的控制器。

然后由您来验证请求并确保其可信。

例如,您可以在自定义变量中使用用户ID,将PayPal电子邮件地址与您的文件地址进行比较,并(在服务器上进行跟踪)看到他们最近点击了该按钮。

有关详细信息,请参阅PayPal IPN docs

答案 1 :(得分:2)

虽然Paypal允许您将IPN网址设置为https://username:password@mydomain.com/ipn,但似乎它不会发送用户名和密码。

我的IPN历史记录中的所有请求都经常被标记为失败,直到我在服务器上删除了身份验证。 请注意,你也可以创建一个.htaccess文件来发送来自paypal的请求(我还没有这样做,所以我不知道确切的语法,你应该谷歌吧)。

答案 2 :(得分:0)

我也正在开发一个接受PayPal付款的网站。就像你一样,我很难弄清楚如何处理IPN以及如何测试它。要设置IPN,请编辑按钮并转到“高级选项”。在那里,您将找到包含其他变量的文本区域。只需复制右边的2个样本变量(notify_url和(address_overide = 1)?)。更改notify_url值,然后保存。

答案 3 :(得分:0)

至于现在这是不可能的,但是如果你问的是真实场景,通常你会在/作为你的网络服务器前面有代理服务器处理简单的HTTP身份验证,你可以为你设置排除规则paypal IPN网址。例如,如果使用nginx指令,则看起来像:

server {
listen 80;
server_name example.com;

location /paypal/ipn {
        try_files $uri @proxy_to_app;
}

location / {
    auth_basic "Restricted";
    auth_basic_user_file  /example/.htpasswd;
    try_files $uri @proxy_to_app;
}
location @proxy_to_app {
    if (!-f $request_filename) {
            proxy_pass http://localhost;
            break;
    }
}}