refactor(payments): PayPal setup linting pass

This commit is contained in:
Sabe Jones
2016-04-15 21:31:40 +00:00
parent 36740e7dc8
commit ee6092d7d2
@@ -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 */