Node.js 当支付系统向我的API回调URL发送请求时,我如何通知客户机?

Node.js 当支付系统向我的API回调URL发送请求时,我如何通知客户机?,node.js,api,express,vue.js,stripe-payments,Node.js,Api,Express,Vue.js,Stripe Payments,我目前正在构建一个以Vue.JS作为静态前端的网站,并使用Node和Express在云中编写一个单独的后端API 目前,我想与名为的支付提供商集成支付。该API的工作方式是,从客户端发出一个支付请求,该请求带有一个回调URL,当支付错误或支付时,该URL将进行Swish调用。此URL将是对我的API的post请求。我想知道“创建付款请求”如何异步等待我的付款提供商发出post请求,以便在Swish(付款提供商)处理完付款后返回,然后我可以向用户更新Vue中付款的状态 我还没有在没有投票的情况下解

我目前正在构建一个以Vue.JS作为静态前端的网站,并使用Node和Express在云中编写一个单独的后端API

目前,我想与名为的支付提供商集成支付。该API的工作方式是,从客户端发出一个支付请求,该请求带有一个回调URL,当支付错误或支付时,该URL将进行Swish调用。此URL将是对我的API的post请求。我想知道“创建付款请求”如何异步等待我的付款提供商发出post请求,以便在Swish(付款提供商)处理完付款后返回,然后我可以向用户更新Vue中付款的状态

我还没有在没有投票的情况下解决这个问题。一个简单的解决方案是让Swish访问的Post请求更新我的SQL数据库中的某些状态,并每隔10秒左右唤醒“创建付款请求”以检查数据库是否已更改有没有一种不用轮询的方法?我是否可以以某种方式发出一些事件,以从另一个Express端点唤醒处于睡眠状态的Express端点?或者我是否可以向回调URL传递一些webhook或其他内容,以便Swish回调可以在调用时直接通知我的Vue前端?

对于时间刻度,Swish调用回调URL最多需要3分钟

我想应该能解决你的问题。正如您已经说过的,您应该在数据库中保留付款状态。当Swish应用程序调用您的回调url时,您会发送一个websocket请求,其中包含新状态和所需信息。由于通信错误而重新创建websocket连接时需要该状态

一些可能有用的链接:


当您使用MySQL这样的数据库时,我认为没有其他解决方案可用。你必须进行民意调查以寻求改变。我知道还有其他数据库解决方案(如Google Firebase)使用套接字。将回调插入SQL数据库并让轮询执行选择查询是否愚蠢?如果我收到很多请求,那我的数据库不会被锁得很厉害吗?像socket.io这样的东西怎么样?这可以用于从回调中向另一个端点发出事件吗?读取查询不必担心锁,除非您正在执行另一种情况的事务。可以使用Socket.io,这意味着您的节点服务器进行轮询,然后使用Socket连接到前端。但不确定是否易于设置。谢谢您的帮助。我到底向谁发送了Websocket请求?我可以让回调URL处理程序向“创建请求”发送一个请求来唤醒它并完成它吗?我是否需要在前端使用websocket?我想通过后端处理它,不必太多地改变我的前端。是的,你需要在前端集成。WebSocket只是一种将消息从后端推送到前端而不是轮询的简单方法。如何处理swish内容独立于WebSocket。