Files
portal_v3/portal/admin/services/paypal/server.js
equippedcoding-master 1c59875b8a initial commit 2
2025-09-17 15:19:57 -05:00

185 lines
5.5 KiB
JavaScript

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"
*/