【问题标题】:handling Postbacks From other website to My website处理从其他网站到我的网站的回发
【发布时间】:2018-02-14 14:33:55
【问题描述】:

我正在使用SuperRewards (SR) 为我网站上的用户进行 Coin 交易,也许你对 SR 很熟悉。 每当发生交易时,SuperRewards 都会向我的服务器发送回发(发布请求),其中包含有关交易和硬币等的信息...
所以我的问题是如何处理使用 Nodejs Express 从其他网站向我的服务器回发或发布请求(我真的不知道差异)?
Picture 1 App testing
picture 2 app Testing
Code

【问题讨论】:

    标签: node.js express post postback


    【解决方案1】:

    您可以像处理您的 Express 应用程序的任何其他请求一样处理它。由于它是一个GET 请求,因此您将定义一个GET 路由。

    根据Fields and Formats 部分,您会得到相当多的查询字符串。知道我们可以做到以下几点:

    app.get('/super-rewards', async (req, res) => {
      // `new` is a reserved keyword, so we can't use `new` as a variable name.
      const newCurrency = req.query['new']
    
      const {
        id,
        uid,
        oid,
        total,
        sig
      } = req.query
    })
    

    此外,如果我理解正确,文档指出 sig 应该与您的 secret key 的 MD5 哈希匹配。所以一个完整的例子是这样的:

    const crypto = require('crypto')
    const express = require('express')
    
    const app = express()
    
    app.get('/super-rewards', async (req, res) => {
      // `new` is a reserved keyword, so we can't use `new` as a variable name.
      const newCurrency = req.query['new']
    
      const {
        id,
        uid,
        oid,
        total,
        sig
      } = req.query
    
      const secretHash = crypto.createHash('md5').update(process.env.SECRET_KEY).digest('hex')
      if (secretHash !== sig) {
        throw new Error('Invalid transaction')
      }
    })
    

    另外,这是一个GET 请求,因为文档明确指出:

    使用 HTTP GET 请求将回发从我们的服务器发送到您的服务器 (...)

    【讨论】:

    • 应用设置中有一个选项将请求更改为 POST Req(已检查),但现在我将其更改为 GET REQ 没关系。我使用了你的代码但是,虽然测试 => req.query 是一个空对象。所以我在超级奖励中添加了测试页面的屏幕截图并告诉我我是否做错了
    • 试试req.params。虽然查询字符串不应该是一个空对象,因为文档声明 (...) request with these fields in the query string
    • req.params 和 req.query 都是空的。我所做的是我将测试回发发送到我的服务器然后我手动转到回发 URL (localhost:3000/checkcoins) 然后我得到空对象......我不认为我在做某事
    【解决方案2】:

    我联系了支持团队,他们告诉我我必须使用公共域而不是本地主机,这就是它无法正常工作的原因,所以问题得到了解决,感谢您的宝贵时间:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-03
      • 2010-11-26
      • 1970-01-01
      • 2015-12-13
      • 2017-04-30
      • 2017-03-10
      • 2015-10-06
      • 2021-07-08
      相关资源
      最近更新 更多