处理从其他网站到我的网站的回传

handling Postbacks From other website to My website

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

您可以像处理任何其他发送到您的 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 请求,因为文档明确指出:

Postbacks are sent from our server to yours using a HTTP GET request (...)

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