-
-
Save markd69/aca03cab20e46e0abae7d4f1e402092d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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