我正在离子应用中实施Stripe付款方式,需要从服务中获取iGraph
。
我面临的问题是,token
中的console.log(token)
正在安慰令牌,但我需要将其传递给我的控制器来做一些额外的事情。
我在StripeService
方法和return token;
中尝试了this.open()
,但没有运气。
我正在尝试这个 - https://stripe.com/docs/checkout
让我知道如何从服务中获取令牌到我的控制器。
代码 -
以下是我的AngularJS服务代码 -
console.log(StripeService.open(amount))
以下是我在控制器中的方法并调用服务 -
.service('StripeService', function(){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
return handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
console.log(token);
}
});
};
});
答案 0 :(得分:1)
您可以使用promises
返回令牌。
服务:
.service('StripeService', ['$q', function($q){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
var deferred = $q.defer();
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
deferred.resolve(token);
}
});
return deferred.promise;
};
}]);
控制器:
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};
我没有测试过,但应该有效!
答案 1 :(得分:1)
正如manzapanza所说,你可以使用诺言,我个人更喜欢这种新的符号:
服务:
.service('StripeService', ['$q', function($q){
var handler = StripeCheckout.configure({
key: 'pk_test_6776Randomkey8990',
image: '/img/logo.png',
locale: 'auto'
});
this.open = function(amount) {
return $q(function(resolve) {
handler.open({
name: 'mywebsite.com',
description: 'Pay via stripe',
amount: amount,
token: function(token) {
console.log(token);
resolve(token);
}
});
});
};
}]);
控制器:
$scope.clicked = function(amount) {
StripeService.open(amount).then(function(token){
console.log('token', token);
});
};