Прием платежей с помощью API Paystack в Node.js и Express.js: реализация и рекомендации
Привет и добро пожаловать!
Если вы читаете это, вас ждет захватывающий урок. Сегодня я проведу вас через процесс использования Paystack API в среде Node.js, чтобы упростить прием и проверку платежей. Но это не все! Мы также погрузимся в область чистой архитектуры, гарантируя, что наш код будет не только функциональным, но и легко читаемым, ремонтопригодным и масштабируемым.
Прежде чем мы перейдем к написанию кода, давайте рассмотрим платежный API Paystack. Чтобы получить платеж с помощью Paystack API, вам нужно будет сделать вызовы API к этим трем конечным точкам:
- Инициализировать конечную точку.API ожидает адрес электронной почты клиента, сумму транзакции в Kobo и дополнительные параметры. Он вернет ссылку на транзакцию, код доступа для оплаты SDK и URL-адрес авторизации.
- Подтвердить конечную точку. После успешного платежа позвоните в конечную точку, чтобы подтвердить статус платежа. В ответе будет предоставлен код авторизации, позволяющий взимать плату с пользователя в будущих транзакциях.
- Авторизация списания средств.Эта конечная точка используется для списания средств с постоянных клиентов в будущем без сбора их платежных реквизитов после их получения в первый раз.
Поскольку это руководство сосредоточено на получении платежей через API Paystack, мы сосредоточимся на отправке запросов к конечной точке инициализации. Кроме того, в целях тестирования мы будем использовать POSTMAN для взаимодействия с нашим приложением на стороне сервера.
Давайте начнем этот путь исследования и реализации!
- Для начала создайте учетную запись Paystack, посетив страницу регистрации. Если у вас еще нет учетной записи, просто зарегистрируйтесь, чтобы создать ее.
- После того, как вы зарегистрировались и вошли в свою панель управления Paystack, перейдите в раздел «Настройки» и нажмите «Ключи API и веб-перехватчики». Оттуда найдите тестовый секретный ключ и обязательно сохраните его. Этот ключ будет использоваться для аутентификации вашего приложения во время запросов API.
- Давайте начнем наш проект, создав новую папку. Откройте командную строку или терминал Git Bash и выполните следующую команду, чтобы создать новый каталог проекта:
mkdir paystack-nodejs-app
Эта команда создаст папку с именем «paystack-nodejs-app», которая будет служить корневым каталогом для нашего приложения. Не стесняйтесь заменить «paystack-nodejs-app» на предпочитаемое вами имя папки.
4. Чтобы инициализировать новый проект Node.js, перейдите в папку проекта и выполните эту команду.
cd paystack-nodejs-app npm init -y
5. Установите необходимые модули для этого приложения, выполнив следующую команду:
npm install express body-parser dotenv
6. Далее нам нужно создать файл index.js
в корне нашего приложения, затем добавить следующий код.
// index.js file require('dotenv').config(); const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const router = require('./Router/route') const port = process.env.PORT || 3001; // Parse incoming requests with JSON payloads app.use(bodyParser.json()); // Call the routers app.use(router); // Start the server app.listen(port, () => { console.log(`Server running at https://localhost:${port}`); });
7. Теперь давайте создадим файл контроллера. В корневом каталоге вашего проекта создайте новую папку под названием «controllers». Внутри папки «controllers» создайте файл с именем contollers.js
.
// controllers/controllers.js file require('dotenv').config(); const express = require('express'); const https = require('https'); const payStack = { acceptPayment: async(req, res) => { try { // request body from the clients const email = req.body.email; const amount = req.body.amount; // params const params = JSON.stringify({ "email": email, "amount": amount * 100 }) // options const options = { hostname: 'api.paystack.co', port: 443, path: '/transaction/initialize', method: 'POST', headers: { Authorization: process.env.PUBLIC_KEY, // where you place your secret key copied from your dashboard 'Content-Type': 'application/json' } } // client request to paystack API const clientReq = https.request(options, apiRes => { let data = '' apiRes.on('data', (chunk) => { data += chunk }); apiRes.on('end', () => { console.log(JSON.parse(data)); return res.status(200).json(data); }) }).on('error', error => { console.error(error) }) clientReq.write(params) clientReq.end() } catch (error) { // Handle any errors that occur during the request console.error(error); res.status(500).json({ error: 'An error occurred' }); } }, } const initializePayment = payStack; module.exports = initializePayment;
Таким образом, функция acceptPayment представляет собой контроллер, который обрабатывает процесс приема платежей с помощью Paystack API. Он извлекает адрес электронной почты и сумму из тела запроса, создает строку JSON с параметрами и инициирует клиентский запрос к API Paystack, используя предоставленные параметры. Данные ответа API собираются и регистрируются, а затем отправляются обратно клиенту с кодом состояния 200.
ПРИМЕЧАНИЕ.Все вызовы Paystack с вашего сервера аутентифицируются путем отправки вашего секретного ключа в заголовке авторизации в следующем формате Авторизация: Bearer sk_live_bl3xyzbl3xyz. Кроме того, не передавайте свои секретные ключи в git и не используйте их в клиентском коде.
8. Далее нам нужно создать обработчики маршрутов. Создайте папку routes
в корневом каталоге и внутри этой папки создайте файл routes.js
, затем добавьте следующие коды.
// routes/routes.js file const express = require('express'); const router = express.Router(); const initializePayment = require('../Controllers/controllers'); // import the controller router.post('/acceptpayment', initializePayment.acceptPayment); module.exports = router
Вы можете видеть, как мы придерживались фундаментального принципа построения каждой системы в виде отдельного модуля, при этом каждый модуль несет определенную и независимую ответственность. Это лишь один пример из множества хороших практик, которым следует следовать при создании проекта Node.js.
8. Далее, чтобы запустить и протестировать приложение, просто используйте команду индекс узла в терминале. Это запустит сервер и позволит вам протестировать функциональность приложения на этом URL-адресе: https://localhost:3001/acceptpayment
9. Зайдите в свой POSTMAN и сделайте POST-запрос на этот адрес: https://localhost:3001/acceptpayment. ниже пример запроса Json
{ "email": "[email protected]", "amount": 500000 }SAm
Пример ответа
{ "status": true, "message": "Authorization URL created", "data": { "authorization_url": "https://checkout.paystack.com/0peioxfhpn", "access_code": "0peioxfhpn", "reference": "7PVGX8MEk85tgeEpVDtD" } }
9. «authorization_url», полученный из ответа, перенаправит пользователей на всплывающую страницу оплаты Paystack, где они смогут безопасно совершить платеж.
Наконец, выполнив эти шаги, вы сможете беспрепятственно интегрировать API Paystack в свое приложение Node.js для приема платежей. Чтобы узнать о более продвинутых и подробных функциях, я рекомендую обратиться к Документации Paystack API, которая предоставляет обширные ресурсы для создания исключительных способов оплаты. Не стесняйтесь исследовать и использовать предоставленный исходный код для дальнейшего улучшения вашего проекта. Удачного кодирования!