我正在使用简单的 HTTP 身份验证保护的开发环境中测试环境。我不想在没有身份验证的情况下公开环境。Paypal/Paypal-sandbox 可以通过简单的 HTTP 身份验证将 IPN 发送到我的开发服务器,例如https://username:password@mydomain.com/ipn吗?谢谢。
4 回答
尽管 Paypal 允许您将 IPN URL 设置为https://username:password@mydomain.com/ipn之类的内容,但它似乎不会发送用户名和密码。
在我删除服务器上的身份验证之前,所有请求在我的 IPN 历史记录中一直标记为失败。请注意,您也可以创建一个 .htaccess 文件来让来自 paypal 的请求进入(我没有这样做,所以我不知道确切的语法,你应该谷歌它)。
IIRC谷歌搜索后,我看起来不像你可以。我们使用 PayPal,基本上,custom
当用户单击您的 PayPal 按钮时,您可以将变量传递给 IPN 进程。然后,此变量将贯穿整个事务,并将发送到处理 IPN 通知的控制器。
然后由您来验证请求并确保它看起来可信。
例如,您可以在自定义变量中使用用户 ID,将 PayPal 电子邮件地址与您在文件中的地址进行比较,并(在您的服务器上进行跟踪)查看他们最近单击了该按钮。
有关详细信息,请参阅PayPal IPN 文档。
我还在开发一个接受贝宝付款的网站。就像你一样,我很难弄清楚如何处理 IPN 以及如何测试它。为了能够设置 IPN,编辑您的按钮并转到高级选项。在那里您会发现包含其他变量的文本区域。只需复制右侧的 2 个示例变量(notify_url 和 (address_overide=1)?)。更改 notify_url 值然后保存。
就目前而言,这是不可能的,但是如果您询问实际情况,通常您在处理简单 HTTP 身份验证的网络服务器前面/作为您的网络服务器有代理服务器,您可以为您的贝宝 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;
}
}}