From ee6092d7d262bd6bdc9b91de6af46e32de1be8be Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Fri, 15 Apr 2016 21:31:40 +0000 Subject: [PATCH] refactor(payments): PayPal setup linting pass --- .../top-level/payments/paypalBillingSetup.js | 135 +++++++++--------- 1 file changed, 70 insertions(+), 65 deletions(-) diff --git a/website/src/controllers/top-level/payments/paypalBillingSetup.js b/website/src/controllers/top-level/payments/paypalBillingSetup.js index d8a2081a8e..0e8170ff51 100644 --- a/website/src/controllers/top-level/payments/paypalBillingSetup.js +++ b/website/src/controllers/top-level/payments/paypalBillingSetup.js @@ -2,91 +2,96 @@ // payment plan definitions, instead you have to create it via their REST SDK and keep it updated the same way. So this // file will be used once for initing your billing plan (then you get the resultant plan.id to store in config.json), // and once for any time you need to edit the plan thereafter -var path = require('path'); -var nconf = require('nconf'); -_ = require('lodash'); +import path from 'path'; +import nconf from 'nconf'; +import _ from 'lodash'; +import paypal from 'paypal-rest-sdk'; +import shared from '../../../../../common'; + +let blocks = shared.content.subscriptionBlocks; +const BILLING_PLAN_TITLE = 'Habitica Subscription'; +const LIVE = nconf.get('PAYPAL:mode') === 'live'; +const OP = 'create'; // list create update remove + nconf.argv().env().file('user', path.join(path.resolve(__dirname, '../../../config.json'))); -var paypal = require('paypal-rest-sdk'); -var blocks = require('../../../../../common').content.subscriptionBlocks; -var live = nconf.get('PAYPAL:mode')=='live'; - -var OP = 'create'; // list create update remove +/* eslint-disable camelcase */ paypal.configure({ - 'mode': nconf.get("PAYPAL:mode"), //sandbox or live - 'client_id': nconf.get("PAYPAL:client_id"), - 'client_secret': nconf.get("PAYPAL:client_secret") + mode: nconf.get('PAYPAL:mode'), // sandbox or live + client_id: nconf.get('PAYPAL:client_id'), + client_secret: nconf.get('PAYPAL:client_secret'), }); // https://developer.paypal.com/docs/api/#billing-plans-and-agreements -var billingPlanTitle ="Habitica Subscription"; -var billingPlanAttributes = { - "name": billingPlanTitle, - "description": billingPlanTitle, - "type": "INFINITE", - "merchant_preferences": { - "auto_bill_amount": "yes", - "cancel_url": live ? 'https://habitica.com' : 'http://localhost:3000', - "return_url": (live ? 'https://habitica.com' : 'http://localhost:3000') + '/paypal/subscribe/success' +let billingPlanAttributes = { + name: BILLING_PLAN_TITLE, + description: BILLING_PLAN_TITLE, + type: 'INFINITE', + merchant_preferences: { + auto_bill_amount: 'yes', + cancel_url: LIVE ? 'https://habitica.com' : 'http://localhost:3000', + return_url: LIVE ? 'https://habitica.com/paypal/subscribe/success' : 'http://localhost:3000/paypal/subscribe/success', }, payment_definitions: [{ - "type": "REGULAR", - "frequency": "MONTH", - "cycles": "0" - }] + type: 'REGULAR', + frequency: 'MONTH', + cycles: '0', + }], }; -_.each(blocks, function(block){ +_.each(blocks, function defineBlock (block) { block.definition = _.cloneDeep(billingPlanAttributes); _.merge(block.definition.payment_definitions[0], { - "name": billingPlanTitle + ' ($'+block.price+' every '+block.months+' months, recurring)', - "frequency_interval": ""+block.months, - "amount": { - "currency": "USD", - "value": ""+block.price - } + name: `${BILLING_PLAN_TITLE} (\$${block.price} every ${block.months} months, recurring)`, + frequency_interval: `${block.months}`, + amount: { + currency: 'USD', + value: `${block.price}`, + }, }); -}) +}); -switch(OP) { - case "list": - paypal.billingPlan.list({status: 'ACTIVE'}, function(err, plans){ - console.log({err:err, plans:plans}); +let update = { + op: 'replace', + path: '/merchant_preferences', + value: { + cancel_url: 'https://habitica.com', + }, +}; + +switch (OP) { + case 'list': + paypal.billingPlan.list({status: 'ACTIVE'}, function listPlans () { + // TODO Was a console.log statement. Need proper response output }); break; - case "get": - paypal.billingPlan.get(nconf.get("PAYPAL:billing_plans:12"), function (err, plan) { - console.log({err:err, plan:plan}); - }) - break; - case "update": - var update = { - "op": "replace", - "path": "/merchant_preferences", - "value": { - "cancel_url": "https://habitica.com" - } - }; - paypal.billingPlan.update(nconf.get("PAYPAL:billing_plans:12"), update, function (err, res) { - console.log({err:err, plan:res}); + case 'get': + paypal.billingPlan.get(nconf.get('PAYPAL:billing_plans:12'), function getPlan () { + // TODO Was a console.log statement. Need proper response output }); break; - case "create": - paypal.billingPlan.create(blocks["google_6mo"].definition, function(err,plan){ - if (err) return console.log(err); - if (plan.state == "ACTIVE") - return console.log({err:err, plan:plan}); - var billingPlanUpdateAttributes = [{ - "op": "replace", - "path": "/", - "value": { - "state": "ACTIVE" - } + case 'update': + paypal.billingPlan.update(nconf.get('PAYPAL:billing_plans:12'), update, function updatePlan () { + // TODO Was a console.log statement. Need proper response output + }); + break; + case 'create': + paypal.billingPlan.create(blocks.google_6mo.definition, function createPlan (err, plan) { + if (err) return; // TODO Was a console.log statement. Need proper response output + if (plan.state === 'ACTIVE') + return; // TODO Was a console.log statement. Need proper response output + let billingPlanUpdateAttributes = [{ + op: 'replace', + path: '/', + value: { + state: 'ACTIVE', + }, }]; // Activate the plan by changing status to Active - paypal.billingPlan.update(plan.id, billingPlanUpdateAttributes, function(err, response){ - console.log({err:err, response:response, id:plan.id}); + paypal.billingPlan.update(plan.id, billingPlanUpdateAttributes, function activatePlan () { + // TODO Was a console.log statement. Need proper response output }); }); break; - case "remove": break; + case 'remove': break; } +/* eslint-enable camelcase */