185 lines
5.5 KiB
JavaScript
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"
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|