Refactoring the payment config/schema, loading and routes path
							parent
							
								
									5f68a5bc1f
								
							
						
					
					
						commit
						da34f3e63c
					
				
							
								
								
									
										58
									
								
								app.js
								
								
								
								
							
							
						
						
									
										58
									
								
								app.js
								
								
								
								
							|  | @ -38,41 +38,13 @@ if(baseConfig === false){ | |||
| } | ||||
| 
 | ||||
| // Validate the payment gateway config
 | ||||
| switch(config.paymentGateway){ | ||||
|     case 'paypal': | ||||
|         if(ajv.validate(require('./config/paypalSchema'), require('./config/paypal.json')) === false){ | ||||
|             console.log(colors.red(`PayPal config is incorrect: ${ajv.errorsText()}`)); | ||||
| if(ajv.validate( | ||||
|         require(`./config/payment/schema/${config.paymentGateway}Schema`), | ||||
|         require(`./config/payment/config/${config.paymentGateway}.json`)) === false | ||||
|     ){ | ||||
|     console.log(colors.red(`${config.paymentGateway} config is incorrect: ${ajv.errorsText()}`)); | ||||
|     process.exit(2); | ||||
| } | ||||
|         break; | ||||
| 
 | ||||
|     case 'stripe': | ||||
|         if(ajv.validate(require('./config/stripeSchema'), require('./config/stripe.json')) === false){ | ||||
|             console.log(colors.red(`Stripe config is incorrect: ${ajv.errorsText()}`)); | ||||
|             process.exit(2); | ||||
|         } | ||||
|         break; | ||||
| 
 | ||||
|     case 'authorizenet': | ||||
|         if(ajv.validate(require('./config/authorizenetSchema'), require('./config/authorizenet.json')) === false){ | ||||
|             console.log(colors.red(`Authorizenet config is incorrect: ${ajv.errorsText()}`)); | ||||
|             process.exit(2); | ||||
|         } | ||||
|         break; | ||||
| 
 | ||||
|     case 'adyen': | ||||
|         if(ajv.validate(require('./config/adyenSchema'), require('./config/adyen.json')) === false){ | ||||
|             console.log(colors.red(`adyen config is incorrect: ${ajv.errorsText()}`)); | ||||
|             process.exit(2); | ||||
|         } | ||||
|         break; | ||||
|     case 'instore': | ||||
|         if(ajv.validate(require('./config/instoreSchema'), require('./config/instore.json')) === false){ | ||||
|             console.log(colors.red(`instore config is incorrect: ${ajv.errorsText()}`)); | ||||
|             process.exit(2); | ||||
|         } | ||||
|         break; | ||||
| } | ||||
| 
 | ||||
| // require the routes
 | ||||
| const index = require('./routes/index'); | ||||
|  | @ -81,12 +53,9 @@ const product = require('./routes/product'); | |||
| const customer = require('./routes/customer'); | ||||
| const order = require('./routes/order'); | ||||
| const user = require('./routes/user'); | ||||
| const paypal = require('./routes/payments/paypal'); | ||||
| const stripe = require('./routes/payments/stripe'); | ||||
| const blockonomics = require('./routes/payments/blockonomics'); | ||||
| const authorizenet = require('./routes/payments/authorizenet'); | ||||
| const adyen = require('./routes/payments/adyen'); | ||||
| const instore = require('./routes/payments/instore'); | ||||
| 
 | ||||
| // Add the payment route
 | ||||
| const paymentRoute = require(`./lib/payments/${config.paymentGateway}`); | ||||
| 
 | ||||
| const app = express(); | ||||
| 
 | ||||
|  | @ -410,19 +379,16 @@ app.use((req, res, next) => { | |||
|     next(); | ||||
| }); | ||||
| 
 | ||||
| // setup the routes
 | ||||
| // Setup the routes
 | ||||
| app.use('/', index); | ||||
| app.use('/', customer); | ||||
| app.use('/', product); | ||||
| app.use('/', order); | ||||
| app.use('/', user); | ||||
| app.use('/', admin); | ||||
| app.use('/paypal', paypal); | ||||
| app.use('/stripe', stripe); | ||||
| app.use('/blockonomics', blockonomics); | ||||
| app.use('/authorizenet', authorizenet); | ||||
| app.use('/adyen', adyen); | ||||
| app.use('/instore', instore); | ||||
| 
 | ||||
| // Payment route
 | ||||
| app.use(`/${config.paymentGateway}`, paymentRoute); | ||||
| 
 | ||||
| // catch 404 and forward to error handler
 | ||||
| app.use((req, res, next) => { | ||||
|  |  | |||
|  | @ -336,20 +336,13 @@ const getConfig = () => { | |||
| 
 | ||||
| const getPaymentConfig = () => { | ||||
|     const siteConfig = getConfig(); | ||||
|     const gateConfigFile = path.join(__dirname, '../config', `${siteConfig.paymentGateway}.json`); | ||||
|     const gateConfigFile = path.join(__dirname, '../config', 'payment', 'config', `${siteConfig.paymentGateway}.json`); | ||||
| 
 | ||||
|     let config = []; | ||||
|     if(fs.existsSync(gateConfigFile)){ | ||||
|         config = JSON.parse(fs.readFileSync(gateConfigFile, 'utf8')); | ||||
|     } | ||||
| 
 | ||||
|     // If a local config we combine the objects. Local configs are .gitignored
 | ||||
|     const localConfig = path.join(__dirname, '../config', `${siteConfig.paymentGateway}-local.json`); | ||||
|     if(fs.existsSync(localConfig)){ | ||||
|         const localConfigObj = JSON.parse(fs.readFileSync(localConfig, 'utf8')); | ||||
|         config = Object.assign(config, localConfigObj); | ||||
|     } | ||||
| 
 | ||||
|     // Override from env.yaml environment file
 | ||||
|     Object.keys(config).forEach((configKey) => { | ||||
|         if(process.env[configKey]){ | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| const express = require('express'); | ||||
| const common = require('../../lib/common'); | ||||
| const { indexOrders } = require('../../lib/indexing'); | ||||
| const common = require('../common'); | ||||
| const { indexOrders } = require('../indexing'); | ||||
| const numeral = require('numeral'); | ||||
| const { Client, CheckoutAPI } = require('@adyen/api-library'); | ||||
| const router = express.Router(); | ||||
|  | @ -1,8 +1,8 @@ | |||
| const express = require('express'); | ||||
| const axios = require('axios'); | ||||
| const stripBom = require('strip-bom'); | ||||
| const common = require('../../lib/common'); | ||||
| const { indexOrders } = require('../../lib/indexing'); | ||||
| const common = require('../common'); | ||||
| const { indexOrders } = require('../indexing'); | ||||
| const router = express.Router(); | ||||
| 
 | ||||
| // The homepage of the site
 | ||||
|  | @ -1,6 +1,6 @@ | |||
| const express = require('express'); | ||||
| const common = require('../../lib/common'); | ||||
| const { indexOrders } = require('../../lib/indexing'); | ||||
| const common = require('../common'); | ||||
| const { indexOrders } = require('../indexing'); | ||||
| const router = express.Router(); | ||||
| const axios = require('axios').default; | ||||
| 
 | ||||
|  | @ -1,6 +1,6 @@ | |||
| const express = require('express'); | ||||
| const common = require('../../lib/common'); | ||||
| const { indexOrders } = require('../../lib/indexing'); | ||||
| const common = require('../common'); | ||||
| const { indexOrders } = require('../indexing'); | ||||
| const router = express.Router(); | ||||
| 
 | ||||
| // The homepage of the site
 | ||||
|  | @ -1,6 +1,6 @@ | |||
| const express = require('express'); | ||||
| const common = require('../../lib/common'); | ||||
| const { indexOrders } = require('../../lib/indexing'); | ||||
| const common = require('../common'); | ||||
| const { indexOrders } = require('../indexing'); | ||||
| const paypal = require('paypal-rest-sdk'); | ||||
| const router = express.Router(); | ||||
| 
 | ||||
|  | @ -1,6 +1,6 @@ | |||
| const express = require('express'); | ||||
| const common = require('../../lib/common'); | ||||
| const { indexOrders } = require('../../lib/indexing'); | ||||
| const common = require('../common'); | ||||
| const { indexOrders } = require('../indexing'); | ||||
| const numeral = require('numeral'); | ||||
| const stripe = require('stripe')(common.getPaymentConfig().secretKey); | ||||
| const router = express.Router(); | ||||
		Loading…
	
		Reference in New Issue