import { createRequire } from 'module'; import path from 'path'; import { fileURLToPath } from 'url'; import {encode} from 'html-entities'; import {decode} from 'html-entities'; const require = createRequire(import.meta.url); const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const fs = require('fs'); const mypath = path.join(__dirname, '../../system/db/.env'); require('dotenv').config({ path: mypath }) console.log(mypath); //import "dotenv/config"; import express from "express"; // import fs from "fs"; import http from "http"; import https from "https"; import * as paypal from "./paypal-api.js"; var mysql = require('mysql2'); // // /home/cradle2careertxxyz/websites/www15/portal/dashboard/services/paypal/node/advanced-integration/ // cd /home/cradle2careertxxyz/websites/www15/portal/dashboard/services/node/paypal/server.js // pm2 start // pm2 start server.js --name "www15" -- www15 // pm2 start server.js --name "www10" -- www10 // pm2 delete www15;pm2 start server.js --name "www15" -- www15;pm2 logs www15 --lines 1000 // pm2 delete www10;pm2 start server.js --name "www10" -- www10;pm2 logs www10 --lines 1000 //process.argv.forEach(function (val, index, array) {console.log(index + ': ' + val);}); const subdomain = process.argv[2]; // var con = mysql.createConnection({ // host: "localhost", // user: "cradle2careertxxyz", // password: "MYblessings1984!", // database: "cradle2careertxxyzdb", // insecureAuth : true // }); var con = mysql.createConnection({ host: process.env.MY_HOSTNAME, user: process.env.MY_USER, password: process.env.MY_PASSWORD, database: process.env.MY_DATABASE, insecureAuth : true }); // console.log(process.env.MY_HOSTNAME); // console.log(process.env.MY_USER); // console.log(process.env.MY_PASSWORD); // console.log(process.env.MY_DATABASE); function decodeHTMLEntities(text) { var textArea = document.createElement('textarea'); textArea.innerHTML = text; return textArea.value; } con.connect(function(err) { if (err) throw err; con.query(`SELECT * FROM subdomain_properties WHERE SubDomain = '${subdomain}'`, function (err, results) { if (err) throw err; if(results.length > 0){ var obj = {}; for(var i=0; i < results.length; i++){ console.log(results[i].SubDomain + " : " + results[i].PropertyName + " : " + results[i].PropertyValue); obj[results[i].PropertyName] = results[i].PropertyValue; } con.query(`SELECT * FROM configurations WHERE category = 'paypal'`, function (err, results2) { console.log("") console.log(results2[0]); // console.log(decode(results2[0].json)); let paypal_config = null; for(let v=0; v < results2.length; v++){ let me = JSON.parse(decode(results2[v].json)); if(me.active==true){ paypal_config = me; break; } } con.end(); run({ ...obj, ...paypal_config }); }); }else{ console.log(`Error starting server! No port number found for subdomain ${subdomain}`); } }); }); // con.connect(function(err) { // if (err) throw err; // con.query(`SELECT * FROM managed_domain WHERE SubDomain = '${subdomain}'`, function (err, result) { // if (err) throw err; // con.end(); // if(result.length > 0){ // console.log(result[0]) // run(result[0]); // }else{ // console.log(`Error starting server! No port number found for subdomain ${subdomain}`); // } // }); // }); function run(opts){ console.log("Starting Paypal Server on port: " + opts.service_port); console.log(opts); var privateKey = fs.readFileSync(opts.CertPrivateKeyLocation, 'utf8'); var certificate = fs.readFileSync(opts.CertPublicKeyLocation, 'utf8'); var credentials = {key: privateKey, cert: certificate}; var app = express(); // render checkout page with client id & unique client token app.get("/"+opts.service_end_point, async (req, res) => { var clientId = process.env.CLIENT_ID; if(opts.client_id!=undefined){ clientId = opts.client_id; } try { //console.log("starting..."); if(req.query.type=="generate_token"){ console.log("Generating token..."); const clientToken = await paypal.generateClientToken(opts.client_id, opts.client_secret); res.jsonp(JSON.stringify({clientToken:clientToken,clientId:clientId})); }else if(req.query.type=="create_order"){ console.log(req.query.data) var data = JSON.parse( req.query.data ); const order = await paypal.createOrder(data,opts.client_id, opts.client_secret); res.jsonp(order); }else if(req.query.type=="capture_order"){ const orderID = req.query.orderID; const captureData = await paypal.capturePayment(orderID,opts.client_id, opts.client_secret); res.jsonp(captureData); }else if(req.query.type=="refund"){ const orderID = req.query.orderID; const captureData = await paypal.refundPayment(orderID); res.jsonp(captureData); } } catch (err) { console.log(err.message) res.jsonp(err.message); } }); var httpServer = http.createServer(app); var httpsServer = https.createServer(credentials, app); //httpServer.listen(9888); httpsServer.listen(opts.service_port); } // pm2 delete www15;pm2 start server.js --name "www15" -- www15;pm2 log --lines 200 www15 /* curl -v POST https://api.sandbox.paypal.com/v1/oauth2/token \ -H "Accept: application/json" \ -H "Accept-Language: en_US" \ -u "AbehsBM-Cg5UwIx6pAWObkiltltLPwN82QlhN-u4qwYMD7Fzly_mDmUGYnSJqHuMLIWjhBk9I5iKsvIN:EIMOBpKnMGNlgaofARDgpuigkvpoSilNUJQSXSmXhNRwxrVosOVp1DCpb7Ky2OfjX7rR0SqszgRMyg1-" \ -d "grant_type=client_credentials" */