From cc545db17bf8ca83ef389789f3270ff3b853cab7 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Thu, 18 Dec 2014 18:59:29 +0000 Subject: [PATCH] can add account just about into recurly --- .../Subscription/RecurlyWrapper.coffee | 24 +++++++++++++- .../SubscriptionController.coffee | 6 ++-- .../Subscription/SubscriptionHandler.coffee | 5 +-- services/web/app/views/subscriptions/new.jade | 18 ++++++++-- .../coffee/main/new-subscription.coffee | 33 ++++++++++--------- 5 files changed, 62 insertions(+), 24 deletions(-) diff --git a/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee b/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee index d6c7fe272d..b2b0955bbe 100644 --- a/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee +++ b/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee @@ -8,6 +8,28 @@ logger = require("logger-sharelatex") module.exports = RecurlyWrapper = apiUrl : "https://api.recurly.com/v2" + createSubscription: (subscription, recurly_token_id, callback)-> + requestBody = """ + + student + USD + + TEST_SUBSCRIPTION + + #{recurly_token_id} + + + + """ + @apiRequest({ + url : "subscriptions" + method : "POST" + body : requestBody + }, (error, response, responseBody) => + return callback(error) if error? + @_parseSubscriptionXml responseBody, callback + ) + apiRequest : (options, callback) -> options.url = @apiUrl + "/" + options.url options.headers = @@ -16,7 +38,7 @@ module.exports = RecurlyWrapper = "Content-Type" : "application/xml; charset=utf-8" request options, (error, response, body) -> unless error? or response.statusCode == 200 or response.statusCode == 201 or response.statusCode == 204 - logger.err err:error, options:options, "error returned from recurly" + logger.err err:error, body:body, options:options, statusCode:response?.statusCode, "error returned from recurly" error = "Recurly API returned with status code: #{response.statusCode}" callback(error, response, body) diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionController.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionController.coffee index 7cebfdf535..c36374eaa0 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionController.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionController.coffee @@ -132,9 +132,9 @@ module.exports = SubscriptionController = createSubscription: (req, res, next)-> SecurityManager.getCurrentUser req, (error, user) -> return callback(error) if error? - subscriptionId = req.body.recurly_token - logger.log subscription_id: subscriptionId, user_id:user._id, "creating subscription" - SubscriptionHandler.createSubscription user, subscriptionId, (err)-> + recurly_token_id = req.body.recurly_token_id + logger.log recurly_token_id: recurly_token_id, user_id:user._id, "creating subscription" + SubscriptionHandler.createSubscription user, recurly_token_id, (err)-> if err? logger.err err:err, user_id:user._id, "something went wrong creating subscription" res.redirect "/user/subscription/thank-you" diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionHandler.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionHandler.coffee index c3423482ae..4acfc23b27 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionHandler.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionHandler.coffee @@ -10,9 +10,10 @@ DropboxHandler = require("../Dropbox/DropboxHandler") module.exports = - createSubscription: (user, recurlySubscriptionId, callback)-> + createSubscription: (user, recurly_token_id, callback)-> self = @ - RecurlyWrapper.getSubscription recurlySubscriptionId, {recurlyJsResult: true}, (error, recurlySubscription) -> + clientTokenId = "" + RecurlyWrapper.createSubscription user, recurly_token_id, (error, recurlySubscription)-> return callback(error) if error? SubscriptionUpdater.syncSubscription recurlySubscription, user._id, (error) -> return callback(error) if error? diff --git a/services/web/app/views/subscriptions/new.jade b/services/web/app/views/subscriptions/new.jade index cf08f9a4ce..7da03faaa5 100644 --- a/services/web/app/views/subscriptions/new.jade +++ b/services/web/app/views/subscriptions/new.jade @@ -6,7 +6,7 @@ block scripts window.recomendedCurrency = '#{currency}' window.plan_code = '#{plan_code}' - window.recurlyCreds = { apiKey : "", apiUrl:""} + window.recurlyCreds = { apiKey : "sc-GVdZOe7akgWbZRIFPllOx9", apiUrl:""} block content @@ -34,7 +34,7 @@ block content ng-click="changeCurrency(currency)", ) {{currency}} ({{value['symbol']}}) h1 #{translate("new_subscription")} - span {{ error }} + form .form-group label #{translate("credit_card_number")} @@ -54,7 +54,19 @@ block content .form-group label #{translate("last_name")} input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="last_name", ng-model="data.last_name") - + .form-group + label #{translate("address")} + input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="address1", ng-model="data.address1") + .form-group + label #{translate("city")} + input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="city", ng-model="data.city") + .form-group + label #{translate("country")} + input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="country", ng-model="data.country") + .form-group + label #{translate("country")} + input.form-control(type='text', value='', maxlength='255', tabindex='1', onkeyup='', data-recurly="postal_code", ng-model="data.postal_code") + .form-group button.btn.btn-success(ng-click="submit()") #{translate("submit")} diff --git a/services/web/public/coffee/main/new-subscription.coffee b/services/web/public/coffee/main/new-subscription.coffee index b383de1e00..82fe9d6211 100644 --- a/services/web/public/coffee/main/new-subscription.coffee +++ b/services/web/public/coffee/main/new-subscription.coffee @@ -2,7 +2,7 @@ define [ "base" ], (App)-> - App.controller "NewSubscriptionController", ($scope, MultiCurrencyPricing, abTestManager)-> + App.controller "NewSubscriptionController", ($scope, MultiCurrencyPricing, abTestManager, $http)-> $scope.currencyCode = MultiCurrencyPricing.currencyCode $scope.plans = MultiCurrencyPricing.plans @@ -13,23 +13,23 @@ define [ $scope.switchToStudent = ()-> window.location = "/user/subscription/new?planCode=student¤cy=#{$scope.currencyCode}" - - - - __api_key = recurlyCreds.apiKey - __api_url = recurlyCreds.apiUrl configured = false $scope.error = false $scope.token = false $scope.data = - number: "" - month: "" - year: "" - cvv: "" - first_name: "" - last_last: "" - postal_code: "" + number: "4111111111111111" + month: "02" + year: "2015" + cvv: "111" + first_name: "h" + last_name: "o" + postal_code: "se153tt" + address1 : "7 somewhere" + city:"london" + country:"uk" + + $scope.submit = -> throw new Error("Recurly API Library Missing.") if typeof recurly is "undefined" @@ -38,9 +38,12 @@ define [ if !configured recurly.configure __api_key configured = true - recurly.token $scope.data, (err, token) -> + recurly.token $scope.data, (err, recurly_token_id) -> if err $scope.error = err.message else - $scope.token = token + $http.post("/user/subscription/create", {_csrf: window.csrfToken, recurly_token_id:recurly_token_id.id}) + .success -> + console.log "success" +