From 20387d09c1eb96727562b84b0ab2574ec7ffa7d9 Mon Sep 17 00:00:00 2001 From: SaiSivaRubha Date: Wed, 13 Aug 2025 16:46:56 +0530 Subject: [PATCH] payment --- server/package-lock.json | 290 ++++++++++++++++++++++++-------------- server/package.json | 5 +- server/routes/payments.js | 52 +++++++ server/sample.env | 8 +- server/server.js | 3 +- 5 files changed, 244 insertions(+), 114 deletions(-) create mode 100644 server/routes/payments.js diff --git a/server/package-lock.json b/server/package-lock.json index df5ecf3..792a6c0 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9,13 +9,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@clerk/express": "^1.7.2", + "@clerk/express": "^1.7.15", "cloudinary": "^2.7.0", "cors": "^2.8.5", - "dotenv": "^16.6.0", + "dotenv": "^16.6.1", "express": "^5.1.0", "mongoose": "^8.16.1", "multer": "^2.0.1", + "razorpay": "^2.9.6", "svix": "^1.68.0" }, "devDependencies": { @@ -23,15 +24,15 @@ } }, "node_modules/@clerk/backend": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-2.3.0.tgz", - "integrity": "sha512-QkvJOF6nshJ9TkCjdXKY2MDWv29/TefIop350sXMpIrN1fIJIWzdFEnIjd4PCINSySPSctlRybL51Z8G/aTusg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-2.6.2.tgz", + "integrity": "sha512-IUTjLmA1QkqoJnB97S8Ay/oeFR1QtBxxzi9V2J8zncGdUUpAHRp9PfbUwe203VEZuoDD8n6PGfK4oiiq5CoKhQ==", "license": "MIT", "dependencies": { - "@clerk/shared": "^3.10.0", - "@clerk/types": "^4.62.0", + "@clerk/shared": "^3.17.0", + "@clerk/types": "^4.72.0", "cookie": "1.0.2", - "snakecase-keys": "8.0.1", + "standardwebhooks": "^1.0.0", "tslib": "2.8.1" }, "engines": { @@ -48,14 +49,14 @@ } }, "node_modules/@clerk/express": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@clerk/express/-/express-1.7.2.tgz", - "integrity": "sha512-JqKQhmSBuxx8ayhGNHw0Q52tQPL4latd2IKbPmI8Up2TQrfxfEXNv8YNv3WQGNRTkoKmBFh8Gr4eG3bdhTRveQ==", + "version": "1.7.15", + "resolved": "https://registry.npmjs.org/@clerk/express/-/express-1.7.15.tgz", + "integrity": "sha512-75yh1fAl8rjPcHZKR0FT84yJLyOaAIOufHLs0SBkGVzYSX+V6pZpriiuh3QtAeXR8gSxQKF5/qMzDKpqUa/nCA==", "license": "MIT", "dependencies": { - "@clerk/backend": "^2.3.0", - "@clerk/shared": "^3.10.0", - "@clerk/types": "^4.62.0", + "@clerk/backend": "^2.6.2", + "@clerk/shared": "^3.17.0", + "@clerk/types": "^4.72.0", "tslib": "2.8.1" }, "engines": { @@ -66,18 +67,18 @@ } }, "node_modules/@clerk/shared": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.10.0.tgz", - "integrity": "sha512-3Xljj8v5dszuxzSEnQMQTf5pgfs8i/zzq9Dl744q0LutL5qGwtmk5Ja7G0kN3qQymyYy6OJOVcgnweevjazOPQ==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.17.0.tgz", + "integrity": "sha512-eYbA0xmKG1DluFmdVykXiElgZGTpCruEyXmIBAwokpxypd5nOpDsS1xvEKwYvZieLTZkFz21Z3Y6HdDI5cPxBQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@clerk/types": "^4.62.0", + "@clerk/types": "^4.72.0", "dequal": "2.0.3", "glob-to-regexp": "0.4.1", "js-cookie": "3.0.5", "std-env": "^3.9.0", - "swr": "^2.3.3" + "swr": "2.3.4" }, "engines": { "node": ">=18.17.0" @@ -96,9 +97,9 @@ } }, "node_modules/@clerk/types": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.62.0.tgz", - "integrity": "sha512-Ps/8eQHCuv2bZYgTG3+4xgxlltoX91GNf+G5TG/DSSmECgR657qGoasOrLLcMMyE+OZiX57k51oH137Ohhggog==", + "version": "4.72.0", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.72.0.tgz", + "integrity": "sha512-SEkgiQNeTstC0/mQjHCGBEyX0/ALyWAa5QZBBvVOok204r48MLipfIKsXQhyWE2Hk6FIo5WT6YyqD36jaxUEIw==", "license": "MIT", "dependencies": { "csstype": "3.1.3" @@ -179,6 +180,23 @@ "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -345,6 +363,18 @@ "node": ">=9" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -442,6 +472,15 @@ } } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -460,20 +499,10 @@ "node": ">=6" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/dotenv": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.0.tgz", - "integrity": "sha512-Omf1L8paOy2VJhILjyhrhqwLIdstqm1BvcDPKg4NGAlkwEu9ODyrFbvk8UymUOMCT+HXo31jg1lArIrVAAhuGA==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -541,6 +570,21 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -640,6 +684,63 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -772,6 +873,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -919,27 +1035,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -1206,16 +1301,6 @@ "node": ">= 0.6" } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -1383,6 +1468,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -1455,10 +1546,19 @@ "node": ">= 0.8" } }, + "node_modules/razorpay": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.9.6.tgz", + "integrity": "sha512-zsHAQzd6e1Cc6BNoCNZQaf65ElL6O6yw0wulxmoG5VQDr363fZC90Mp1V5EktVzG45yPyNomNXWlf4cQ3622gQ==", + "license": "MIT", + "dependencies": { + "axios": "^1.6.8" + } + }, "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", + "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", "license": "MIT", "peer": true, "engines": { @@ -1687,30 +1787,6 @@ "node": ">=10" } }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/snakecase-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-8.0.1.tgz", - "integrity": "sha512-Sj51kE1zC7zh6TDlNNz0/Jn1n5HiHdoQErxO8jLtnyrkJW/M5PrI7x05uDgY3BO7OUQYKCvmeMurW6BPUdwEOw==", - "license": "MIT", - "dependencies": { - "map-obj": "^4.1.0", - "snake-case": "^3.0.4", - "type-fest": "^4.15.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -1720,6 +1796,16 @@ "memory-pager": "^1.0.2" } }, + "node_modules/standardwebhooks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/standardwebhooks/-/standardwebhooks-1.0.0.tgz", + "integrity": "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==", + "license": "MIT", + "dependencies": { + "@stablelib/base64": "^1.0.0", + "fast-sha256": "^1.3.0" + } + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -1791,9 +1877,9 @@ } }, "node_modules/swr": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", - "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.4.tgz", + "integrity": "sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==", "license": "MIT", "dependencies": { "dequal": "^2.0.3", @@ -1853,18 +1939,6 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", diff --git a/server/package.json b/server/package.json index 697af2b..559f42f 100644 --- a/server/package.json +++ b/server/package.json @@ -12,13 +12,14 @@ "author": "", "license": "ISC", "dependencies": { - "@clerk/express": "^1.7.2", + "@clerk/express": "^1.7.15", "cloudinary": "^2.7.0", "cors": "^2.8.5", - "dotenv": "^16.6.0", + "dotenv": "^16.6.1", "express": "^5.1.0", "mongoose": "^8.16.1", "multer": "^2.0.1", + "razorpay": "^2.9.6", "svix": "^1.68.0" }, "devDependencies": { diff --git a/server/routes/payments.js b/server/routes/payments.js new file mode 100644 index 0000000..5886b8e --- /dev/null +++ b/server/routes/payments.js @@ -0,0 +1,52 @@ +import express from "express"; +import Razorpay from "razorpay"; +import dotenv from "dotenv"; +import crypto from "crypto"; +const router=express.Router(); +router.post("/orders",async(req,res)=>{ + try{ + const instance=new Razorpay({ + key_id:process.env.KEY_ID, + key_secret:process.env.KEY_SECRET + }) + const options={ + amount:req.body.amount*100, + currency:"INR", + receipt:crypto.randomBytes(10).toString("hex") + } + instance.orders.create(options,(error,order)=>{ + if(error){ + return res.status(500).json({message:"Something went wrong"}) + } + else{ + return res.status(200).json({order}) + } + }) + + }catch(error){ + return res.status(500).json({message:"Intenal server error"}) + } +}) +router.post("/verify",async(req,res)=>{ + try{ + const{ + razorpay_orderID, + razorpay_paymentID, + razorpay_signature + }=req.body + const sign=razorpay_orderID+"|"+razorpay_paymentID + const resultSign=crypto.createHmac("sha256",process.env.KEY_SECRET).update(sign.toString()).digest("hex"); + if(razorpay_signature==resultSign){ + return res.status(200).json({message:"Payment verified successfully"}) + } + else{ + return res.status(500).json({message:"Payment failed"}) + } + + } + catch(error){ + console.log(error); + res.status(400).json({message:"Internal Server Error"}) + } +}) +export default router; diff --git a/server/sample.env b/server/sample.env index 2af365c..130a56f 100644 --- a/server/sample.env +++ b/server/sample.env @@ -1,7 +1,9 @@ MONGODB_URI = database_uri - +PORT=5000 #Clerk Keys CLERK_PUBLISHABLE_KEY=your_publishable_key -CLERK_SECRET_KEY=your_secret_key -CLERK_WEBHOOK_SECRET=your_webhook_key \ No newline at end of file +CLERK_SECRET_KEY=your_clerk_secret +CLERK_WEBHOOK_SECRET=your_webhook_key +KEY_ID=your_key +KEY_SECRET=your_secret \ No newline at end of file diff --git a/server/server.js b/server/server.js index 6a10a2b..12bf990 100644 --- a/server/server.js +++ b/server/server.js @@ -4,6 +4,7 @@ import cors from "cors"; import connectDB from "./configs/db.js"; import { clerkMiddleware } from '@clerk/express' import clerkWebhooks from "./controllers/clerkWebhooks.js"; +import paymentRoute from "./routes/payments.js" connectDB(); const app = express(); @@ -17,7 +18,7 @@ app.use(clerkMiddleware()); //API to listen to clerk Webhooks app.use('/api/clerk', clerkWebhooks); - +app.use("/api/payment",paymentRoute); app.get('/', (req, res) => { res.send("API is Up and running"); });