我正在使用Go在Google App Engine中编写Paypal IPN的API。如贝宝(PayPal)文档所述,有人用我的贝宝(PayPal)按钮进行购买后,它将触发我的API,并且我需要以200
状态码作为响应,并将“ cmd = _notify-validate&”添加到正文,然后向PayPal服务器发送新请求以获取VERIFIED
或INVALID
作为响应,以继续我自己的信息处理。
发送具有相同正文的请求是PayPal的握手,用于验证我收到的消息确实来自PayPal。
另一个事实是,谷歌应用引擎要求我对所有内容使用context
。我知道Google会强制执行此限制以使应用程序可扩展。
现在我的问题是,应用引擎中的所有内容都需要一个context
,而我拥有的唯一上下文是我通过激活API的请求创建的上下文,并且PayPal正在等待200
状态该请求的代码。但是在用200
响应之前,我需要向PayPal发送新请求,以从PayPal服务器获取响应,然后继续自己的处理。
当处理和发送请求可能要花费一些时间并且上下文可能会超时时,就会出现问题。由于我没有回复200
,因此超时后PayPal将重新发送webhook
,以上所有内容可能会再次发生。
我尝试在Go中使用Flusher
接口,但似乎它不适用于状态码,而是用于正文中的数据。
有什么办法可以独立完成此操作吗?我已经搜索并阅读了google文档,却一无所获。