Server IP : 162.213.251.212 / Your IP : 3.142.119.68 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/home/allssztx/needapair.com/routes/paypal/ |
Upload File : |
const paypal = require('paypal-rest-sdk'); const express = require("express") const router = express.Router() const jwt = require('jsonwebtoken'); const User = require("../../schema/User"); const Sale = require('../../schema/Sale'); const JWT_SECRET = 'B!llHe$$'; paypal.configure({ // mode: 'sandbox', // Use 'sandbox' for testing, 'live' for production // client_id: 'AcsLi6OLNFiHnuqZa5RHev1yDZeaf980ImsizcwmEsRLNfjgzkczaozN44DZTSUN_nCLX1ZknwrkZWCx', // client_secret: 'EB1qJJduOXEWqOpc7GfVW9Zz8TLy89cZdHsi7v0_tHKPdZaWEXpaJiRALkHiNR4B5Gkqybfeivhbf6V-', mode: 'live', // Use 'sandbox' for testing, 'live' for production client_id: 'ARwlw8cpJMUY3CZe_KNZqJepfFzPjGru8xu_tm4RSemT_sn11Ysmp75pDE35Egqn6ey0-esluykEeYJ6', client_secret: 'EGljsT1a06yKNErJ4oi2tHcqxFUrLt2BT4ZxKDfKHDmuM7MjhHS85Npgt-DP0lJfoVhjQKrTMyQrLJrE', }); router.post('/create-payment', (req, res) => { try { // const { info } = req.body const user = req.user let totalAmount = 0; let totalCredits = 0; const items = user.cart.map((item) => { totalCredits += item.credits; totalAmount += item.price; return { "name": item.packageNo, "sku": "Package", "price": item.price, "currency": "USD", "quantity": 1 } }) const data = { items, totalAmount, totalCredits, user } const authtoken = jwt.sign(data, JWT_SECRET); var create_payment_json = { "intent": "sale", "payer": { "payment_method": "paypal" }, "redirect_urls": { "return_url": `https://needapair.com/api/payment/success/${authtoken}`, "cancel_url": "https://needapair.com/api/payment/cancel" // "return_url": `http://localhost:8000/api/payment/success/${authtoken}`, // "cancel_url": "http://localhost:8000/api/payment/cancel" }, "transactions": [{ "item_list": { "items": items }, "amount": { "currency": "USD", "total": Number(totalAmount.toFixed(2)) }, "description": "This is the payment description." }] }; console.log('create_payment_json', create_payment_json) console.log('totalAmount', totalAmount) // return paypal.payment.create(create_payment_json, function (error, payment) { if (error) { throw error; } else { for (let i = 0; i < payment.links.length; i++) { if (payment.links[i].rel === "approval_url") { res.redirect(payment.links[i].href); } } } }); } catch (error) { console.log(error) res.redirect(`/packages?error=${error.message}`) } }); router.get("/success/:token", async (req, res) => { try { const token = req.params.token const packageData = jwt.verify(token, JWT_SECRET) console.log("packageData", packageData) const payerId = req.query.PayerID; const paymentId = req.query.paymentId; const execute_payment_json = { payer_id: payerId, transactions: [ { amount: { currency: "USD", total: Number(packageData.totalAmount.toFixed(2)), }, }, ], }; paypal.payment.execute( paymentId, execute_payment_json, async function (error, payment) { if (error) { res.redirect(`/packages?error=Failed to Buy Package.`) console.log(error.response); throw error; } else { const query = req.query const sale = await Sale.create({ payment, query, user: packageData.user.id }) const user = await User.findById(req.user.id) user.credits += packageData.totalCredits user.sale = sale._id user.cart = [] await user.save() res.redirect(`/packages?message=${packageData.totalCredits} Credits has been Purchased.`) } } ); } catch (error) { console.log(error) } }); router.get("/cancel", (req, res) => { console.log("Failed to but") res.redirect(`/packages?error=Failed to Buy Package.`) }); module.exports = router