recovering last weeks work on promisifying amazon payments

This commit is contained in:
Victor Piousbox
2016-04-21 00:07:58 +00:00
parent 62b059d4d8
commit f9915c3f77
8 changed files with 51 additions and 35 deletions

View File

@@ -19,7 +19,7 @@ website/src/routes/payments.js
website/src/routes/pages.js website/src/routes/pages.js
website/src/middlewares/apiThrottle.js website/src/middlewares/apiThrottle.js
website/src/middlewares/forceRefresh.js website/src/middlewares/forceRefresh.js
website/src/controllers/payments/ website/src/controllers/top-level/payments/paypal.js
debug-scripts/* debug-scripts/*
tasks/*.js tasks/*.js

View File

@@ -2,5 +2,8 @@
"extends": [ "extends": [
"habitrpg/server", "habitrpg/server",
"habitrpg/babel" "habitrpg/babel"
] ],
"globals": {
"Promise": true
}
} }

View File

@@ -1,11 +1,29 @@
import * as amz from '../../../../../website/src/libs/api-v3/amazonPayments'; import * as amz from '../../../../../website/src/libs/api-v3/amazonPayments';
import * as amzStub from 'amazon-payments'; // import * as amzStub from 'amazon-payments';
import amazonPayments from 'amazon-payments';
describe('amazonPayments', () => { describe('amazonPayments', () => {
beforeEach(() => { beforeEach(() => {
}); });
describe('#getTokenInfo', () => { describe('#getTokenInfo stubbed', () => {
let thisToken = 'this token info';
let amzOldConnect;
beforeEach(() => {
amzOldConnect = amazonPayments.connect;
amazonPayments.connect = () => {
let api = { getTokenInfo: (token, cb) => {
return cb(undefined, thisToken);
} };
return { api };
};
});
afterEach(() => {
amazonPayments.connect = amzOldConnect;
});
it('validates access_token parameter', async (done) => { it('validates access_token parameter', async (done) => {
try { try {
await amz.getTokenInfo(); await amz.getTokenInfo();
@@ -16,21 +34,15 @@ describe('amazonPayments', () => {
}); });
it('returns tokenInfo', async (done) => { it('returns tokenInfo', async (done) => {
let thisToken = 'this token info';
let amzStubInstance = amzStub.connect({});
amzStubInstance.api.getTokenInfo = (token, cb) => {
return cb(undefined, thisToken);
};
let result = await amz.getTokenInfo(); let result = await amz.getTokenInfo();
// console.log('+++ +++ result:', result);
expect(result).to.eql(thisToken); expect(result).to.eql(thisToken);
done(); done();
}); });
}); });
describe('#createOrderReferenceId', () => { describe('#createOrderReferenceId', () => {
it('is sane', () => { it('succeeds', () => {
expect(false).to.eql(true); // @TODO
}); });
}); });
}); });

View File

@@ -1,13 +1,13 @@
import async from 'async'; /* import async from 'async';
import cc from 'coupon-code'; import cc from 'coupon-code';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import moment from 'moment'; import moment from 'moment';
import payments from './index'; import payments from './index';
import shared from '../../../../../common'; import shared from '../../../../../common';
import { model as User } from '../../../models/user'; import { model as User } from '../../../models/user'; */
import { import {
NotFound, // NotFound,
NotAuthorized, // NotAuthorized,
BadRequest, BadRequest,
} from '../../../libs/api-v3/errors'; } from '../../../libs/api-v3/errors';
import amz from '../../../libs/api-v3/amazonPayments'; import amz from '../../../libs/api-v3/amazonPayments';
@@ -29,7 +29,7 @@ api.verifyAccessToken = {
await amz.getTokenInfo(req.body.access_token) await amz.getTokenInfo(req.body.access_token)
.then(() => { .then(() => {
res.respond(200, {}); res.respond(200, {});
}).catch( (error) => { }).catch((error) => {
throw new BadRequest(error.body.error_description); throw new BadRequest(error.body.error_description);
}); });
}, },

View File

@@ -1,6 +1,4 @@
import iap from 'in-app-purchase'; import iap from 'in-app-purchase';
import whatThis from 'in-app-purchase';
import payments from './index';
import nconf from 'nconf'; import nconf from 'nconf';
iap.config({ iap.config({
@@ -9,9 +7,9 @@ iap.config({
}); });
// Validation ERROR Codes // Validation ERROR Codes
const INVALID_PAYLOAD = 6778001; // const INVALID_PAYLOAD = 6778001;
/* const CONNECTION_FAILED = 6778002; // const CONNECTION_FAILED = 6778002;
const PURCHASE_EXPIRED = 6778003; */ // These variables were never used?? // const PURCHASE_EXPIRED = 6778003;
let api = {}; let api = {};

View File

@@ -25,7 +25,7 @@ paypal.configure({
'client_secret': nconf.get("PAYPAL:client_secret") 'client_secret': nconf.get("PAYPAL:client_secret")
}); });
var parseErr = function(res, err){ var parseErr = function (res, err) {
//var error = err.response ? err.response.message || err.response.details[0].issue : err; //var error = err.response ? err.response.message || err.response.details[0].issue : err;
var error = JSON.stringify(err); var error = JSON.stringify(err);
return res.status(400).json({err:error}); return res.status(400).json({err:error});
@@ -190,8 +190,7 @@ exports.cancelSubscription = function(req, res, next){
res.redirect('/'); res.redirect('/');
user = null; user = null;
}); });
} } // */
*/
/** /**
* General IPN handler. We catch cancelled HabitRPG subscriptions for users who manually cancel their * General IPN handler. We catch cancelled HabitRPG subscriptions for users who manually cancel their

View File

@@ -1,13 +1,13 @@
import nconf from 'nconf'; /* import nconf from 'nconf';
import stripeModule from 'stripe'; import stripeModule from 'stripe';
import async from 'async'; import async from 'async';
import payments from './index'; import payments from './index';
import { model as User } from '../../../models/user'; import { model as User } from '../../../models/user';
import shared from '../../../../../common'; import shared from '../../../../../common';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import cc from 'coupon-code'; import cc from 'coupon-code'; */
const stripe = stripeModule(nconf.get('STRIPE_API_KEY')); // const stripe = stripeModule(nconf.get('STRIPE_API_KEY'));
let api = {}; let api = {};
/* /*

View File

@@ -5,15 +5,18 @@ const IS_PROD = nconf.get('NODE_ENV') === 'production';
let api = {}; let api = {};
let amzPayment = amazonPayments.connect({ function connect (amazonPayments) {
environment: amazonPayments.Environment[IS_PROD ? 'Production' : 'Sandbox'], return amazonPayments.connect({
sellerId: nconf.get('AMAZON_PAYMENTS:SELLER_ID'), environment: amazonPayments.Environment[IS_PROD ? 'Production' : 'Sandbox'],
mwsAccessKey: nconf.get('AMAZON_PAYMENTS:MWS_KEY'), sellerId: nconf.get('AMAZON_PAYMENTS:SELLER_ID'),
mwsSecretKey: nconf.get('AMAZON_PAYMENTS:MWS_SECRET'), mwsAccessKey: nconf.get('AMAZON_PAYMENTS:MWS_KEY'),
clientId: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'), mwsSecretKey: nconf.get('AMAZON_PAYMENTS:MWS_SECRET'),
}); clientId: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'),
});
}
api.getTokenInfo = (token) => { api.getTokenInfo = (token) => {
let amzPayment = connect(amazonPayments);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
amzPayment.api.getTokenInfo(token, (err, tokenInfo) => { amzPayment.api.getTokenInfo(token, (err, tokenInfo) => {
if (err) return reject(err); if (err) return reject(err);
@@ -23,6 +26,7 @@ api.getTokenInfo = (token) => {
}; };
api.createOrderReferenceId = (inputSet) => { api.createOrderReferenceId = (inputSet) => {
let amzPayment = connect(amazonPayments);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
amzPayment.offAmazonPayments.createOrderReferenceForId(inputSet, (err, response) => { amzPayment.offAmazonPayments.createOrderReferenceForId(inputSet, (err, response) => {
if (err) return reject(err); if (err) return reject(err);