我正在尝试让我的应用程序与 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 时发生的情况,而我还没有为重定向路径定义任何状态。
考虑到重定向网址,我定义的状态可能有什么问题?
非常感谢您的帮助!