2017-08-06 57 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

謝謝您的回答! 我試過你的方法,但它對我沒有用。 它看起來像來自服務器的響應來自我的組件創建之前。所以,現在沒有什麼可以趕上這種反應,當它到達時。 –