如何将数据从服务传递到控制器AngularJS + Stripe

时间:2015-10-29 20:31:23

标签: javascript angularjs ionic-framework stripe-payments angular-services

我正在离子应用中实施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);
            }
        });
    };
});

2 个答案:

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