Paypal Node SDK payment.execute http req - 在弹性负载平衡上使用多个 ec2 实例维护状态。描述?

Posted

技术标签:

【中文标题】Paypal Node SDK payment.execute http req - 在弹性负载平衡上使用多个 ec2 实例维护状态。描述?【英文标题】:Paypal Node SDK payment.execute http req - Maintaining State with multiple ec2 instances on elastic load balancing. Description? 【发布时间】:2017-08-02 04:03:03 【问题描述】:

我即将在具有多个 ec2 实例的弹性 beanstalk 云上使用 MEAN 应用程序,所以我遇到了一个问题:

目前,我正在使用贝宝节点 SDK 销售活动门票。我做了我的 payment.create 并传递了这个交易对象:

transactions: [
    amount:
    total: req.headers.amount,
    currency:'AUD'
    ,
    description:'eventID: ' + req.headers.eventid + ', userID: ' + req.headers.userid
]

我在我的服务器中创建了一个关联数组来缓存 eventid 和 userid,我使用 paypal 交易 ID 作为键,以便当 paypal 返回并确认付款成功时,我知道我需要哪个用户和哪个事件在我的数据库中更新。

如果我去云端,如果 HTTP 重定向到达不同的 ec2 实例,此方法将失败,因为该关联数组将在不同的机器上。理想的解决方案是能够将 eventid 和 userid 传递给 paypal 并让他们将其传回给我,有没有办法在他们的 req 回调中访问交易/描述数据,或者还有其他好方法吗这?

【问题讨论】:

【参考方案1】:

要么enable sticky sessions 在负载平衡器中,要么开始将该数据存储在所有服务器共享的Redis cache 之类的地方。

【讨论】:

是的,我正在查看粘性会话,但我认为如果我可以将两个字符串传递给贝宝并让他们将其传回给我,那将非常容易。我不确定他们发回给我的请求中的某个地方是否埋没了我发送给他们的描述字符串。 另外,它的paypals确认服务器在确认后发回重定向,所以它不是同一个用户发出http请求,它是一个来自paypal的http帖子,对粘性会话没有帮助? 我已经有几年没用过Paypal API了,但上次我用Paypal导致用户的浏览器重定向。它没有直接发布 HTTP 帖子。如果是这种情况,那么粘性会话将不起作用。您在原始问题中提到它是“HTTP 重定向”,而不是来自 Paypal 的直接帖子。如果是重定向,则粘性会话将起作用。【参考方案2】:

我希望使用 paypal.payment 描述字符串来访问这些,但我找到了一个适合我目的的简单解决方案,我将这两个字符串传递到 paypal return_url,然后与 req.query.e 和 req 一起使用。返回发生时的query.u:

redirect_urls: 
            return_url: config.baseUrl + '/pay/payment?e='+req.headers.eventid+'&u='+req.headers.userid, 
            cancel_url: config.baseUrl + '/'
        ,

【讨论】:

以上是关于Paypal Node SDK payment.execute http req - 在弹性负载平衡上使用多个 ec2 实例维护状态。描述?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Paypal node.js中获得交易ID反应?

Paypal rest sdk 400 error (node.js) 关于 VALIDATION ERROR 的事情(错误写在描述中)

如何在 paypal node.js 中获取交易 ID 反应?

Paypal Node SDK payment.execute http req - 在弹性负载平衡上使用多个 ec2 实例维护状态。描述?

将 Paypal Rest API 与 Node 一起使用

我的 Paypal 结帐流程 Angular-Node 安全吗?