【发布时间】:2017-09-13 15:56:00
【问题描述】:
通常,我会将其发布在 PayPal 讨论区;然而,他们的网站似乎让我堆栈溢出......
所以,我一直在研究 PayPal IPN 响应流程。在我尝试现场测试之前,一切都进展顺利。我已经能够在本地进行设置并进行相应的测试。我将它发布到一个面向公众的测试环境中,IPN 沙盒完美运行。现在,我正在尝试使用我的实际信用卡进行全面测试,但我似乎从未收到过 IPN。
我已进入并确认 IPN 当前已开启。我正在通过按钮的隐藏 notify_url 功能设置自定义 IPN 回调 URL。我能够完成购买过程,并且可以看到新的 IPN 已添加到 IPN 历史列表中。 IPN 具有我期望的适当回调 URL;但是,它似乎从未收到过 IPN 消息。
为了验证,我做了几件事。作为关于我的环境的快速前言,我正在开发一个可通过 API Gateway 访问的 AWS Lambda 实例化 Kestrel 服务器。我在 API Gateway 层添加了日志记录,并且可以验证没有收到任何 IPN 消息。在这一点上,我认为我的 IPN 配置有问题。我将 IPN 回调和有效负载从 IPN 历史记录复制到 Postman。 Postman 能够毫无问题地访问我的 API,并且一切都成功处理;我能够在 API Gateway 层和 Lambda 应用层看到此活动的所有日志。
另一个可能出现在我脑海中的问题是 CORS;但是,我过去在这个项目中遇到了多个 CORS 问题,并且在飞行前将我的选项设置为只允许所有远程主机。
对这里发生的事情有什么建议吗?一切似乎都配置正确;但是,我没有看到任何来自 PayPal 的帖子。
编辑 1:经过一些实验,看来如果我将 notify_url 设置为使用 HTTP 而不是 HTTPS,回调终于通过了。我的网站上启用了 HTTPS,并且我有一个有效的证书,该证书应该已通过 Amazon 授权为 CA。为什么切换到 HTTP 使这项工作有效;我完全不知道。如果可能的话,我更喜欢 HTTPS;任何能让我解决这个问题的建议都很棒。
编辑 2:我正在阅读有关他们的费用结构的 PayPal 文档,并开始认为我的 0.01 美元测试购买可能被费用所吞噬。我的期望也一样;然而,我意识到 0.01 美元的测试购买在技术上并没有涵盖与购买相关的全部成本。我决定尝试将成本更新为 1.00 美元,因为未满足的费用余额可能导致了问题。 (~3% + 0.30 美元) 当我将价格更新为 1.00 美元后,我的 HTTPS 调用似乎开始起作用了。我想知道通过 IPN 使用 HTTPS 是否需要约 0.33 美元的底价;除非涵盖整个费用结构,否则通话可能无法正确完成?
【问题讨论】:
标签: paypal paypal-ipn