【问题标题】:Paypal REST API Return PagePaypal REST API 返回页面
【发布时间】:2015-04-25 14:09:24
【问题描述】:

我目前正在使用 Paypal REST API 为有多个计划的用户处理账单协议。

当用户注册一个计划时,它会将他们带到 PayPal 支付。在他们完成该步骤后,PayPal 会将他们重定向到我提供的返回 URL。

问题是,有时当他们从 PayPal 返回时,用户的会话不会持续存在!

我将session_start() 作为我所有文件的第一行,因此正在创建会话。在将用户带到 PayPal 之前,我已经验证了 $_SESSION 数组 正在 被填充 - 只是当它们在 PayPal 之后被带回时。

有没有更好的方法来保存这样的数据,以便我可以在从 PayPal 返回时更新用户帐户?或者也许有一种方法可以通过 PayPal 请求传递电子邮件,以便在他们返回时返回到我的网站的对象中返回?

【问题讨论】:

  • 您应该将用户 ID 添加到发送到贝宝然后返回给您的输入中
  • 虽然没有输入发送到贝宝。我有一个按钮,上面写着“使用贝宝付款”,他们点击它,然后我启动了“使用贝宝创建账单协议”方法,详细信息如下:htmlpreview.github.io/?https://raw.githubusercontent.com/paypal/…
  • 有或如何制定计划?
  • @Dagon - 在他们点击 Paypal 后的第一步,让他们进入审批屏幕,在那里他们批准付款并付款。这不需要我的投入。一旦用户接受协议并付款,它就会重定向回我的网站,并带有订阅者 ID 和其他数据。但是当用户被重定向回我的网站时,我与他们离开去 Paypal 并回来之前的身份没有任何联系。

标签: php mysql api rest paypal


【解决方案1】:

如果您在注册页面和 PayPal 重定向回的页面上都通过 session_start() 正确启动了会话,那么您的会话应该可以正常启动。

假设您不是无意中closing the sessionregenerating the ID,听起来并没有真正的“会话管理”问题,但可能与 PayPal 重定向回的 URL 有关。

PHP 会话的一个常见问题是,使用默认的 PHP 配置,它们不能在子域之间传递。

例如,如果我在example.com 访问您的域域,我的会话将仅在example.com 上处于活动状态。如果我然后转到www.example.com,我将收到一个新的会话。

您可以通过访问您的网站example.comwww.example.com 并检查PHPSESSID cookie 设置的域来验证这一点。如果是不是 .example.com(注意前面的.),那么这就是问题=]

为帮助解决此问题,您可以修改服务器的配置以将 .example.com 设置为 cookie 的域。取自this answer

session.cookie_domain = ".example.com"

【讨论】:

    【解决方案2】:

    我对最近一个问题给出的相同答案在这里也应该适用:

    我用于同样问题的解决方案是设置 override_merchant_preferences 在计费协议上,与 return_url 在查询中包含用户 ID,例如 www.domain.com/api/handler.php?uid=42&action=return.

    当然,您可以通过 $_GET 那样传递任何您想要的标识符。

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 2013-06-26
      • 2021-04-09
      • 2016-03-18
      • 2015-07-18
      • 1970-01-01
      • 2014-12-12
      • 2013-03-20
      • 2013-12-28
      相关资源
      最近更新 更多