如何从对回调 URL 的响应中提取数据?

Posted

技术标签:

【中文标题】如何从对回调 URL 的响应中提取数据?【英文标题】:How do I extract data from a response to a callback URL? 【发布时间】:2020-05-05 09:39:10 【问题描述】:

我需要为我目前开发的预订服务集成支付功能。

我使用 React.js 作为前端,使用 NodeJS/Express 作为后端。

我已经在我的快递服务器 /payment 上设置了一个路由,在 /payment 路由中,我基本上采用了一个包含一些客户数据的数据对象,然后我通过 axios POST 请求将数据发送到 /apiURL,然后我得到一个响应并向 /apiURL/responseID 发送另一个 POST 请求,然后得到 API 公司建议我设置一个回调 URL(这应该是第一次调用中的数据参数),API 将向其发送回发客户完成付款后请求。

所以我的问题是,如何提取此回调响应数据?我可以以某种方式等待它并在同一条路线上提取吗?

由于我使用 React,我是否应该使用 React Router 制作响应回调 URL 的组件?

或者我是否必须制作一个服务器端变量,以便在回调到来时读取并更改?我第一次处理这样一个更大的项目,我真的不知道该怎么做。

我可以阅读有关此问题的一些伪代码或文章会很棒。

/干杯

这是有问题的路线

server.express.post("/payment", async (req, res) => 
  // payment header
  const paymentHeader = ...

  const body = 
    "payment": 
      ...
      "urls": 
        "hostUrls": ["https://example.com"],
        "paymentUrl": "http://example.com/perform-payment",
        "completeUrl": "https://example.com/payment-completed",
        "cancelUrl": "https://example.com/payment-canceled",
        "callbackUrl": "https://example.com/payment-callback",
        "logoUrl": "https://example.com/logo.png",
        "termsOfServiceUrl": "https://example.com/terms.pdf"
      ,
      ...
    
  

  axios
    .post(
      `$process.env.PAYMENT_URL/psp/swish/payments`,
      body,
      paymentHeader
    )
    .then(response => 
      console.log('2d post /payment')
      axios.post(`$process.env.PAYMENT_URL$response.data.payment.id/sales`, 
        "transaction": 
          "msisdn": "+46739000001"
        ,
        paymentHeader

      
      ).then(response => console.log(response.data)).catch(err => console.log(err.response.data))
    )
    .catch(err => console.log(err.response.data));
);

【问题讨论】:

为了更好的帮助,我鼓励您提供您的方法的基本代码示例。 这个问题的答案是什么?我正在努力解决类似的问题。 【参考方案1】:

我不确定我是否正确理解了这个问题,但我认为这可能会对您有所帮助:

axios.get('/your-backend-api')
        .then( (response) => 
            console.log("response", response.data);
            //Do what you want with response after server answered
        )
        .catch( (error) => 
            console.log(error);
            //server had a problem 
        );  

【讨论】:

所以如果我设置 /callback 路由,我会通过 axios.get 调用得到响应吗?由于可能会同时进行多次付款,因此我需要做一个动态地址,例如 /callback/:id 那么?

以上是关于如何从对回调 URL 的响应中提取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 koa 中发送 HTTP 响应之前等待 url 回调?

httprunner怎么提取date里响应数据

爬虫基础

如何从 Swift 中的 BLE 外设特征写入回调中提取数据?

如何等待 react native Image Picker 回调函数响应?

如何在AFJSONRequestOperation的回调中从NSHTTPURLResponse中获取响应数据?