2017-08-18 78 views
0

我试图在我的网站上设置条纹以获取信用卡付款。 我成功设法带工资的工作是这样的:使用Apple/Android支付的AngularJs网站上的条纹

function directive() { 
    return { 
     restrict: 'A', 
     controller: 'StripePayController', 
     controllerAs: 'controller', 
     bindToController: true, 
     templateUrl: 'app/directives/stripe-pay/stripe-pay.html' 
    }; 
}; 

function controller(stripePayService) { 
    var self = this; 

    // Method binding 
    self.checkout = stripePayService.checkout; 

    init(); 

    ////////////////////////////////////////////////// 

    function init() { 
     stripePayService.configure(); 
    }; 
}; 


function service($rootScope, $localStorage, $q, $document, paymentService) { 
    var handler; 
    return { 
     configure: configure, 
     checkout: checkout 
    }; 

    ////////////////////////////////////////////////// 

    function configure() { 

     // Load our script 
     loadScript().then(function() {     
      handler = StripeCheckout.configure({ 
       key: 'my-code', 
       locale: 'auto', 
       token: function (token) { 
        token.transaction = transaction(); 
        paymentService.create({ token: token.id }).then(function (response) { 
         var authorizationData = $rootScope.authorizationData; 
         authorizationData.stripeCardId = response.stripeCardId; 
         authorizationData.stripeCustomerId = response.stripeCustomerId; 
         authorizationData.stripeSubscriptionId = response.stripeSubscriptionId; 
         $localStorage.set('authorizationData', angular.toJson(authorizationData)); 
        }); 
       } 
      }); 
     }); 
    }; 

    function checkout(e) { 
     handler.open(transaction()); 
     e.preventDefault(); 
    }; 

    function transaction() { 
     var email = $rootScope.authorizationData.userName; 
     return { 
      name: 'acme Ltd', 
      description: 'Results', 
      email: email, 
      zipCode: false, 
      currency: 'gbp', 
      amount: 199 
     }; 
    }; 

    function loadScript() { 

     // Create our script 
     var deferred = $q.defer(); 
     var doc = $document[0]; 
     var script = doc.createElement('script'); 

     // Set the url 
     script.src = 'https://checkout.stripe.com/checkout.js'; 

     // Bind our methods 
     script.onload = function() { 
      deferred.resolve(); 
     }; 

     // Bind our methods 
     script.onreadystatechange = function() { 
      var rs = this.readyState; 
      if (rs === 'loaded' || rs === 'complete') 
       deferred.resolve(); 
     }; 

     // Bind our methods 
     script.onerror = function() { 
      deferred.reject(new Error('Unable to load checkout.js')); 
     }; 

     // Get the head 
     var container = doc.getElementsByTagName('head')[0]; 

     // Append our script to our page 
     container.appendChild(script); 

     // Return our promise 
     return deferred.promise; 
    }; 
}; 

这似乎很好地工作。 但是设置应用工资似乎更加复杂。有没有人有之前使用过的任何angularjs代码可以帮助我?

回答