UNPKG

node-payments

Version:

node-payments is a express based facade to multiple payment services.

82 lines (63 loc) 1.84 kB
config = require( "./config" ) module.exports = class RedirServer extends require( "./basic" ) constructor: ( @main, express )-> super() if express?.engines? # reuse an existing express server # proxy the listen method to get the port _listen = express.listen express.listen = ( port, host )=> @port = port _listen.apply( express, arguments ) return @server = express @createRoutes() else # create a express server @createExpress() return createExpress: => @port = config.get( "serverDefaultPort" ) @host = config.get( "serverDefaultHost" ) try express = require( "express" ) catch _err if _err.code is "MODULE_NOT_FOUND" @_handleError( null, "EMISSINGEXPRESS" ) return @server = express() @server.set( "title", "node-payment" ) @server.use( express.logger( "dev" ) ) @server.use( express.urlencoded() ) @server.use( express.json() ) @createRoutes() @server.listen( @port ) return auth: ( req, res, next )=> next() return createRoutes: => _urls = @main.getUrls() @debug "redir-urls", _urls @server.get _urls.success, @auth, @onSuccess @server.get _urls.cancel, @auth, @onCancel return onSuccess: ( req, res )=> @main.onSuccessReturn req.params.pid, req.query.token, req.query.PayerID, ( err, payment )=> if err res.send( err, 500 ) return @main.emit( "approved", res, payment ) return return onCancel: ( req, res )=> @main.onCancelReturn req.params.pid, ( err, payment )=> if err res.send( err, 500 ) return @main.emit( "cancel", res, payment ) return return ERRORS: => @extend super, "EMISSINGEXPRESS": "To use a internal express you have to run `npm install express`. It's not a hard dependency to reduce node_module size for the usually used integrated version."