Skip to content

Instantly share code, notes, and snippets.

@markd69

markd69/pay.js Secret

Created December 2, 2018 21:11
Show Gist options
  • Save markd69/aca03cab20e46e0abae7d4f1e402092d to your computer and use it in GitHub Desktop.
Save markd69/aca03cab20e46e0abae7d4f1e402092d to your computer and use it in GitHub Desktop.
const Discord = require('discord.js');
const Paypal = require('paypal-express-checkout');
const conf = require("../conf")
exports.run = (bot, message, args, helpers) => {
let msg = message;
if(helpers.checkPerms(message, "Management")) {
if(!args[0]) { return message.reply("Oops! You didn't give valid args.. -help pay"); }
let member = message.mentions.members.first();
if (!member) { return message.reply("Oops! You didn't mention the client.. -help pay"); }
let v = ((4.4 / 100) * args[0] + 0.30 + args[0]).toFixed(2); //-pay # @Client <option(Number of payments left (1/2/3))>
let n = args[2];
if(!n) { n = 2 }
if(isNaN(v)) {
return message.reply("Not a Number... "+v);
} else {
let messagePR = msg.channel.send('Processing Your Payment Request.').then(pr => {
let paypal = Paypal.init(conf.username, conf.password, conf.sign, 'http://172.106.202.26:8080/payments/return/?guildId='+msg.guild.id+"&memberId="+member.id+"&channelId="+msg.channel.id+"&messageId="+pr.id, 'http://172.106.202.26:8080/payments/cancel/');
paypal.pay(message.id, v, 'Invoice', 'USD', function(err, url) {
if (err) {
console.log(err)
throw err;
} else {
helpers.connection.query("SELECT * FROM tickets WHERE channelid = "+message.channel.id, function (err, rows, result) {
if(!rows[0]) { return message.reply("This channel isn't in the database.")}
let payEmbed = new Discord.RichEmbed()
.setAuthor("Payment Processer", message.author.displayAvatarURL)
.addField("Rendered", "$"+v+"", true)
.addField("Link","[Click Here!]("+url+")", true)
.addField("Payments:", n, true)
.addField("Status:", "Pending", true)
.addField("Client:","**"+member+"**", true)
.setImage('https://i.imgur.com/FUPUMDH.gif')
.setTimestamp()
.setColor(conf.color)
.setFooter(conf.footer);
pr.edit(payEmbed);
message.delete();
helpers.uticket("paid","Pending","channelid",message.channel.id);
})
//---------------------- ---- -- ------------ PAYPAL ---------------------- ---- -- ------------\\
const express = require('express');
const app = express();
const Paypal = require('paypal-express-checkout');
let paypal = Paypal.init(conf.username, conf.password, conf.sign, 'http://172.106.202.26:8080/payments/return/', 'http://172.106.202.26:8080/payments/cancel/');
app.get('/payments/cancel/', function(req, res) {
if (req.query.token != null && req.query.PayerID != null)
console.log(req.query.token + " " + req.query.PayerID);
res.redirect('https://www.paypal.com/');
});
app.get('/payments/return/', function(req, res){
if (req.query.token != null && req.query.PayerID != null)
console.log(req.query.token + " " + req.query.PayerID);
paypal.detail(req.query.token, req.query.PayerID, function (err, data, invoiceNumber, price) {
if (data.ACK === 'Success') {
if (req) {
console.log(req.originalUrl);
console.log(req.originalUrl.split('/')[3]);
let url = req.originalUrl.split('/')[3];
if (!url) return;
let guildId = url.split('?guildId=')[1].split('&')[0];
let guild = bot.guilds.get(guildId);
if (!guild) return console.error('No server.');
let userId = url.split('&memberId=')[1].split('&')[0];
let user = guild.members.get(userId);
if (!guild) return console.error('No user.');
let channelId = url.split('&channelId=')[1].split('&')[0];
let channel = guild.channels.get(channelId);
if (!channel) return console.error('No channel.');
let messageId = url.split('&messageId=')[1].split('&')[0];
if (!messageId) return console.error('No message ID.');
if (channel) {
channel.fetchMessage(messageId).then((fetchedMsg) => {
if (!fetchedMsg) return console.error('No message.');
helpers.connection.query("SELECT * FROM orders WHERE channelid = "+channelId, function (err, rows, result) {
if(err) { console.log(err); }
let paid = new Discord.RichEmbed()
.setAuthor("Payment Processer", 'https://cdn.discordapp.com/attachments/443315897596379141/497851038448091137/halloweenhydra.png')
.addField("Status:", "Completed ✅", true)
.addField("Client:", rows[0].username, true)
.addField("Freelancer", rows[0].freelancer, true)
.setTimestamp()
.setColor(conf.color)
.setFooter(conf.footer);
fetchedMsg.edit(paid);
let mang = message.guild.roles.find(x => x.name == "Management")
message.channel.send("<@"+member.id+">").then(msg => { msg.delete(); });
message.channel.send("<@"+mang.id+">").then(msg => { msg.delete(); });
fetchedMsg.react('✅');
})
})
}
}
res.redirect('https://www.paypal.com/');
}
});
});
app.listen(8080);
}
})
})
}
}
}
//CREDIT: This system was created with help of MarkD ( Mark David )
exports.conf = {
enabled: true,
guildOnly: false,
aliases: ['pa']
};
exports.help = {
name: "pay",
category: "Payments",
description: "Create a payment Processer.",
usage: "pay # @Client #"
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment