【问题标题】:PayPal Instant Update API not working on HTTPSPayPal 即时更新 API 不适用于 HTTPS
【发布时间】:2013-02-27 11:37:30
【问题描述】:

我们正在建立一个基于 Spree 并托管在 Heroku 上的在线商店。我们希望使结帐尽可能简单,因此我们决定使用 PayPal Express Checkout 和 Instant Update API 来确定运费。

当我们通过 HTTP 测试结帐流程时,一切正常 - 当用户输入他的送货地址时,PayPal 在后台查询我们的服务器并获取运费。

但是,当我们切换到 SSL 时,运费并没有更新,而是恢复为默认的统一费率。我不知道出了什么问题,因为一切都一样,除了这次应用程序是通过 HTTPS 访问的,即https://myapp.herokuapp.com

我检查了日志,发现 PayPal 的服务器确实进行了查询,但运费并未在 PayPal 的结帐页面上更新。

有什么想法吗?

更新:

经过进一步测试,PayPal 似乎没有遵守交易设置中设置的超时时间。我们在回调方法中添加了一个简单的“sleep(x)”来人为地引入一些延迟(x 秒),即使在正常的 HTTP 上,仅仅 1 秒的延迟就足以导致 PayPal 忽略响应。

最大超时应该是 6 秒,但实际上似乎根本不是这种情况。再加上 HTTPS(建立连接需要更长的时间),这可能就是回调失败的原因。

我已向 PayPal 提交了工单,但我不确定他们是否会对此做出回应或采取任何措施...

【问题讨论】:

  • 您收到回复了吗?
  • 没有。目前,我们已经放弃了即时发货更新,让用户选择发货:(
  • 我向 Paypal 报告,他们刚刚回信说他们昨天修复了它!我无法测试它,因为我的 BIOS 更新只是破坏了我的笔记本电脑,但会尽快测试并报告。不幸的是,这就是他们所说的 - 没有确认有关确切问题的详细信息

标签: ruby-on-rails paypal spree


【解决方案1】:

看来 PayPal 可能会忽略回调中返回的运输选项的原因有很多。

我想在 PayPal 的网站上看到一些东西,它会保留最近调用回调的历史记录以及返回的响应和拒绝的原因 - 有点类似于有用的 IPN 历史记录。

【讨论】:

    【解决方案2】:

    很高兴您在这里发布了您的真实域名,因为您几乎证实了我的怀疑。

    我非常确信问题在于您有一个通配符 SSL(我看到您的证书颁发给 *.herokuapp.com),而不仅仅是单个域的 SSL。

    www.MicroPedi.com 的 UCC 证书也有同样的问题,这是一个 5 名 UCC 证书。 PayPal 甚至拒绝对其进行任何调用(我有日志记录,除了使用沙盒时什么都没有通过)。


    为了确认这一点,我之前有一个运行良好的 Express 结帐实现(使用单个 SSL),我将我的新应用程序指向那个旧 URL,它神奇地又开始工作了。那是一个单一的名称 SSL - 实际上它是那些昂贵的 green bar 证书之一。

    我已经直接写信给 PayPal 支持,但现在我唯一能想到的解决方法是编写某种代理页面,它只会从好的域重定向到我的 UCC 域。

    【讨论】:

    • 我看到您实际上说您的服务器确实收到了呼叫。我仍然认为我发现的是真的,但我今天不能再接受这个@*,所以如果我发现更多,我会回帖
    • 通配符 SSL 也是我们的第一个嫌疑人,我们实际上也测试了单一名称证书。我们可以让它在我们的本地开发机器上运行,但是当我们把它放到 Heroku 上时它又停止工作了。
    • 经过更多测试我们发现这可能是因为 PayPal 不遵守回调超时(参见我原帖中的更新)。 SSL 握手/连接在我们的生产站点上花费的时间太长。也许您可以尝试在回调中添加一些人为延迟以查看它是否也失败(例如睡眠 1 或 2 秒)。
    • 就我而言,它绝对不接受我的 SSL。我最终不得不在“好”SSL 上制作一个代理文件到我的另一个站点。无论它在做什么检查和平衡,它都不会让我知道,所以我别无选择,除非 PayPal 给我回信
    猜你喜欢
    • 2012-09-07
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2016-01-19
    • 2015-11-30
    • 2012-07-22
    相关资源
    最近更新 更多