sac*_*ero 7 http-post payment-gateway angularjs
我们制作了一个AngularJS应用程序,用户打开一个URL(xyz.com/booking)填写表格,然后选择一些商品进行购买.
之后,用户点击"购买"按钮,离开支付网关站点的站点.成功付款后,Payment Gateway通过在回拨URL(xyz.com/booking-success)上发送POST请求来回送用户.
现在问题是我为该回调URL配置的相应Angular页面没有打开.我在RouteProvider中配置了xyz.com/booking-success页面,但这似乎没有用.
但是,如果我直接通过浏览器打开页面xyz.com/booking-success,它将被打开.
如何处理这种情况?任何帮助将不胜感激.
ngRoute
无法处理通过POST访问的URL,如果你在index.html上重写,你只是发布到index.html而不是你的路由,当你配置/预订成功并且你通过cURL在那个网址上POST时它不起作用你实际上发布到index.html.角度路由只是"虚拟"而不是真实的.像cURL或任何其他HTTP客户端这样的系统无法看到它,因此它们会发布到index.html.
永远不要处理来自付款/预订/角度内任何网关的回调网址.Angular很危险,因为您必须确保将执行回调过程.Angular不是容错的,如果有任何javascript错误,你的角度调用中的任何错误都会丢失所有的回调数据,而你实际上是搞砸了.
回调必须是REST API的一部分,并且必须实现以返回HTTP状态代码200,否则在任何其他HTTP代码的情况下,网关应该知道它们必须重试调用.(例如,skrill.com在没有HTTP 200代码的情况下重复10次回调).实际上,AngularJS每次都会响应200,因为您的Web服务器将提供index.html,它不关心javascript代码中发生了什么.
redirect_url
,通常是用户在代理端成功付款/操作后重定向的URL.但与此同时,仍然会在应用程序的较低级别调用回调URL.重定向URL通过浏览器重定向内的GET调用,因此用户将正常看到它.每个"普通"网关都有callback_url
(API的低级别通知,操作成功redirect_url
,并且重定向回您的站点xyz.com/booking-success).但他们应该分开.如果您的网关没有重定向,则您无法选择,只能在新窗口中打开整个预订.并在调用回调后以某种方式通知您的前端.这可以通过间隔轮询来完成.例如,10秒,它将检索您的实际状态booking_id
(is_processed (true|false)
您将在回调代码中设置的列.当状态从false变为true时,您将通知您的前端(重定向用户或show popup).此外,您还可以实现套接字.您可以处理轮询的io库,并且在调用回调URL时您的通知将立即生效.
归档时间: |
|
查看次数: |
7557 次 |
最近记录: |