2

我正在尝试让我的应用程序与 Adyen 支付系统一起使用。在某个时刻,我将用户重定向到 Adyen 进行付款。当用户完成后,Adyen 会重定向到提供的返回 url。Adyen 还向 url 添加了一些查询参数,这些参数在返回 url 页面上很有用。

这是 Adyen 在付款后重定向到的 URL 示例: http://my.domain/#/payment/result?authResult=AUTHORISED&merchantReference=000220-16402-1459625180&merchantSig=BjeKwBOp70hcsNRD8GUat3fHn4qXxX4Bb2Nxg9RRa04%3D&paymentMethod=mc&pspReference=8614596253051402&shopperLocale=en_GB&skinCode=wMrD9Eei

现在,我想使用 UI-Router 将我带到正确的页面,并加载正确的控制器。根据查询参数 authResult 中的值,我想进入不同的状态。我为 /payment/result?authResult 创建了一个状态:

$stateProvider.state('payment.result', {
    url: '/payment/result?authResult',
    templateUrl: IM_APP_DIR + '/views/payment.result.html',
    controller: function($state, $stateParams) {
        switch ($stateParams.authResult) {
            case 'AUTHORISED':
                $state.go('payment.authorised');
                break;
            case 'CANCELLED':
                $state.go('payment.cancelled');
                break;
            etcetera...
        }
    }
});

授权状态示例:

.state('payment.authorised', {
    url: '/payment/authorised',
    templateUrl: IM_APP_DIR + '/views/payment.authorised.html,
    controller: 'PaymentCtrl'
})

现在,当我对此进行测试并且 Adyen 测试环境重定向到上述 url 时,永远不会进入 /payment/result?authResult 状态的控制器。(我在定义开关的行放置了一个断点,但 Chrome 从未到达那里。)相反,我在控制台中从 angular 中得到了很多错误。他们主要说我进入了一个无限的摘要循环(https://docs.angularjs.org/error/$rootScope/infdig?p0=10&p1=%5B%5D)。我想这与这个问题无关,因为这也是 Adyen 重定向到返回 url 时发生的情况,而我还没有为重定向路径定义任何状态。

考虑到重定向网址,我定义的状态可能有什么问题?

非常感谢您的帮助!

4

1 回答 1

1

好的,我终于让它工作了。问题是我在路由配置中的父>子设置都错了。我还在父路由中省略了一个 ui-view 指令元素,子视图可以渲染到该元素。

于 2016-04-05T15:18:43.977 回答