Начните работу с Paystack API с помощью nodejs и expressjs для добавления платежных функций в ваше приложение. Прежде чем я решил написать эту статью, я перерыл весь интернет, чтобы понять, как использовать Paystack API, созданный компанией kehers, потому что не было практически никакой документации о том, как использовать API вместо использования формата запроса Paystacks Javascript в их официальной документации по API.
Установка
После настройки вашего приложения nodejs установите API paystack, созданный kehers:
npm install paystack
После завершения установки переходим к его настройке.
Сначала создайте учетную запись Paystack и скопируйте секретные ключи тестового API (Примечание: Это только для целей разработки, для производственных целей используйте живые ключи).
Инициализация
Затем перейдите к импорту Paystack
//For JavaScript ES5
const Paystack = require("paystack")("SECRET_KEY");
//For JavaScript ES6+
import Paystack from "paystack";
var paystack = Paystack("SECRET_KEY");
Ресурсы
Вот список функций, которые могут быть использованы с этим API
- клиент
- создать
- получить
- список
- обновить
- транзакция
- инициализировать
- взимать плату
- получить
- список
- итоги
- проверить
- план
- создать
- получить
- список
- обновить
- страница
- создать
- получить
- список
- обновление
- подписка
- создать
- отключить
- включить
- получить
- список
- субсчет
- создать
- получить
- список
- listBanks
- обновить
- Разное
- список_банков
- resolve_bin
В этой статье мы рассмотрим ТРИ ресурса, а именно:
- транзакция
- план
- страница
Транзакция
Эта функция Paystack используется для транзакций на ходу, т.е. немедленно, функция создает ссылку и код доступа для пользователя, чтобы перейти к транзакции или оплате, после чего мы также можем проверить транзакцию с помощью этой функции.
Инициализация транзакции или платежа
paystack.transaction.initialize({
name: "Transaction or product name",
email: "The user email",
amount: amount * 100, // this because paystack also send kobo
quantity: "quantity of product just for reference purposes",
callback_url: "redirect URL"
metadata:{
//other information you want to send with the transaction and check when verifying
userId: ""
}
}).then(async(transaction) =>{
console.log(transaction)
}
Вы заметите, что здесь мы используем некоторые параметры, такие как имя, email и т.д. Вы также можете использовать другие параметры, которые можно найти здесь, например, channel для выбора канала оплаты, например, ussd, банк, карта и т.д.
Результат транзакции
{
"status": true,
"message": "Authorization URL created",
"data": {
"authorization_url": "https://checkout.paystack.com/kixd9nonoitt8kq",
"access_code": "kixd9nonoitt8kq",
"reference": "uj4vb5ginv"
}
}
authorization_url — это ссылка, по которой человек должен перейти, чтобы инициировать транзакцию, код доступа — это код маршрута для данной конкретной транзакции и номер ссылки.
Веб-страница ссылки
Для других функций транзакции вы можете определить их, как описано выше, и использовать параметры, как показано здесь.
Проверка транзакции
Для проверки транзакций через API необходимо добавить callback_url, этот URL будет перенаправлен после успешной транзакции, а номер ссылки будет добавлен в виде запроса к перенаправленному URL следующим образом
www.example.com?trxref=" Reference number"&reference=" Reference number"
paystack.transaction.verify(req.query.trxref)
.then(transaction =>{
console.log(transaction
})
Выход из режима верифицированной транзакции
{
"status": true,
"message": "Verification successful",
"data": {
"id": 2002145115,
"domain": "test",
"status": "success",
"reference": "ou8lydbxhx",
"amount": 50000,
"message": null,
"gateway_response": "Successful",
"paid_at": "2022-08-06T10:05:43.000Z",
"created_at": "2022-08-06T10:05:34.000Z",
"channel": "card",
"currency": "NGN",
"ip_address": "102.89.38.113",
"metadata": {
"userId": "1"
},
"log": {
"start_time": 1659780339,
"time_spent": 4,
"attempts": 1,
"errors": 0,
"success": true,
"mobile": false,
"input": [],
"history": [
{
"type": "action",
"message": "Attempted to pay with card",
"time": 4
},
{
"type": "success",
"message": "Successfully paid with card",
"time": 4
}
]
},
"fees": 750,
"fees_split": null,
"authorization": {
"authorization_code": "AUTH_94nofujms7",
"bin": "408408",
"last4": "4081",
"exp_month": "12",
"exp_year": "2030",
"channel": "card",
"card_type": "visa ",
"bank": "TEST BANK",
"country_code": "NG",
"brand": "visa",
"reusable": true,
"signature": "SIG_X3HQR6lCmgpa7SHUhKxH",
"account_name": null,
"receiver_bank_account_number": null,
"receiver_bank": null
},
"customer": {
"id": 78903216,
"first_name": "raqeeb",
"last_name": "taiwo",
"email": "taiworoqeeb@gmail.com",
"customer_code": "CUS_a11iakhvmp9ja2g",
"phone": "",
"metadata": null,
"risk_action": "default",
"international_format_phone": null
},
"plan": null,
"split": {},
"order_id": null,
"paidAt": "2022-08-06T10:05:43.000Z",
"createdAt": "2022-08-06T10:05:34.000Z",
"requested_amount": 50000,
"pos_transaction_data": null,
"source": null,
"fees_breakdown": null,
"transaction_date": "2022-08-06T10:05:34.000Z",
"plan_object": {},
"subaccount": {}
}
}
Здесь вы можете выбрать сохранение любой из вышеперечисленной информации в вашей базе данных.
План
Эта функция используется для создания плана для подписки с описанным названием, например, у вас может быть до 3 различных планов, на которые вы хотите подписать своих клиентов на день или месяц, вы можете использовать эту функцию для создания планов, а также редактировать цену/сумму плана, если хотите.
Вот как создать план
paystack.plan.create({
name: "Plan name e.g basic",
amount: 500 * 100,
interval: "monthly", //e.g daily, yearly, weekly, biweekly, etc
description: "description",
invoice_limit: 0, //Rate at which customer gets billed
}).then(plan => {
console.log(plan)
})
Выход из плана
{
"status": true,
"message": "Plan created",
"data": {
"name": "Plan name e.g basic",
"amount": 50000,
"interval": "monthly",
"description": "description",
"invoice_limit": 0,
"integration": 767539,
"domain": "test",
"currency": "NGN",
"plan_code": "PLN_vq6tj7tetv6dbvt",
"send_invoices": true,
"send_sms": true,
"hosted_page": false,
"migrate": false,
"is_archived": false,
"id": 359274,
"createdAt": "2022-08-07T09:57:36.907Z",
"updatedAt": "2022-08-07T09:57:36.907Z"
}
}
Здесь вы создали план, на который могут подписаться ваши клиенты. Чтобы ваши клиенты могли подписаться на план, вы можете использовать функцию subscription function
или просто создать страницу с помощью функции page function
для плана, на который вы будете перенаправлять своих клиентов. Я покажу вам только, как использовать функцию page
.
Страница
Эта функция используется для создания страницы подписки для плана. Вместо того чтобы постоянно использовать функцию подписки, когда клиент хочет подписаться, эта страница будет создана для плана постоянно, т.е. клиенты всегда смогут перейти на нее, чтобы подписаться на план в любое время.
Как создать страницу
paystack.page.create({
name: `plan's name`,
description: "description",
plan: 359274, //the plan's id
amount: 500 * 100, //the plan's price
channels: ['card', 'bank', 'ussd', 'bank_transfer'],
redirect_url: `REDIRECT_SITE URL`
}).then((pagebody) => {
console.log(pagebody)
})
Выход из функции страницы
{
"status": true,
"message": "Page created",
"data": {
"name": "plan's name",
"description": "description",
"amount": 50000,
"plan": 359274,
"redirect_url": "http://localhost:3000/pay",
"integration": 767539,
"domain": "test",
"slug": "2axeyi5d0u",
"type": "subscription",
"currency": "NGN",
"collect_phone": false,
"active": true,
"published": true,
"migrate": false,
"id": 1197532,
"createdAt": "2022-08-07T10:14:06.009Z",
"updatedAt": "2022-08-07T10:14:06.009Z"
}
}
Затем перейдите к URL-адресу подписки. Перейдите: https://paystack.com/pay/${pagebody.data.slug}
т.е. https://paystack.com/pay/2axeyi5d0u
. Это приведет вас на эту страницу ниже.
Для проверки платежа вы можете использовать ту же проверку, что и при транзакции.
Ну, пока я думаю, что я сделал справедливость на важную часть Paysatck API, если у вас есть какие-либо вопросы, предложения, вклад или наблюдения, не стесняйтесь связаться со мной, спасибо!