【问题标题】:How to capture response from the server after page has been reloaded? Angular 2重新加载页面后如何从服务器捕获响应?角 2
【发布时间】:2017-08-06 14:06:33
【问题描述】:

我有一个页面,其中包含支付系统所需的字段表单。提交此表单,我调用服务向该系统发送请求。结果,我被重定向到支付系统页面,我可以在那里进行支付。付款完成后,我会再次被重定向到我的页面,从那里发送请求。 问题是我无法在我的组件中捕获来自支付服务器的响应,尽管我可以在开发工具的网络选项卡中看到该响应。

服务中的方法

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(in service) 和 .subscribe(in component) 中的操作符不会被执行。

【问题讨论】:

    标签: angular typescript payment


    【解决方案1】:

    在我的申请中,我也遇到了同样的问题。我通过在我的服务中实现回调函数解决了这个问题,例如:

    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);
        });
    }
    

    【讨论】:

    • 感谢您的回答!我尝试了你的方法,但它对我不起作用。看起来服务器的响应是在我的组件创建之前出现的。因此,当它到达时,目前没有任何东西可以捕捉到这种响应。
    猜你喜欢
    • 2017-12-08
    • 2021-07-19
    • 2018-06-28
    • 2017-10-22
    • 2012-08-25
    • 1970-01-01
    • 2013-04-27
    • 2020-09-25
    • 2014-10-22
    相关资源
    最近更新 更多