2017-08-06 66 views
1

我有一个带有表单的页面,支付系统需要。提交此表格,我打电话给服务系统发送请求。结果,我被重定向到付款系统页面,在那里我可以付款。付款完成后,我再次重定向到我的页面,该页面是发送请求的页面。 问题是我无法捕获组件中支付服务器的响应,尽管我可以在开发工具的Network选项卡中看到该响应。如何在页面重新加载后捕获服务器的响应? Angular 2

服务

sendXMLToFondy(request: RequestFondyViewModel): Observable<any> { 
    let body = ` 
        <?xml version="1.0" encoding="UTF-8"?> 
        <request> 
         <response_url>${request.response_url}</response_url> 
         <server_callback_url> ${request.server_callback_url}</server_callback_url> 
         <order_id> ${request.order_id}</order_id> 
         <order_desc> ${request.order_desc}</order_desc> 
         <currency>${request.currency}</currency> 
         <amount>${request.amount}</amount> 
         <signature>${request.signature}</signature> 
         <merchant_id>${request.merchant_id}</merchant_id> 
        </request>   
       `; 
    return this._http.post("https://api.fondy.eu/api/checkout/url/", body)   
     .map((response: Response) => {    
      let res = response.text(); 
      return res; 
     }); 
} 

方法,那就是我如何调用服务于我的组件

sendRequest(): void {  
     this._donateService.sendXMLToFondy(this.fondyPayModel). 
      subscribe((response) => { 
       console.log(response) 
      });  
    } 

运营商,我把里面.MAP(服务)和.subscribe(以组件) ,没有执行。

回答

0

在我的应用程序中,我也面临同样的问题。我解决了问题,在我的业务实现一个回调函数,如:

public paymentGateway(request: Customer, callback) { 
    this.http.post(url, request).map(res => res.json()).subscribe((res) => { 
     return callback(res); 
    }); 
} 

和组件的代码会是这样:

public onPaymentGateway(request: Customer) { 
    this.service.paymentGateway(request, (res) => { 
     console.log(res); 
    }); 
} 
+0

谢谢您的回答! 我试过你的方法,但它对我没有用。 它看起来像来自服务器的响应来自我的组件创建之前。所以,现在没有什么可以赶上这种反应,当它到达时。 –

相关问题