Razorpay — популярный платежный шлюз в Индии, используемый на веб-сайтах электронной коммерции или любых платных услугах. В несколько шагов вы можете начать собирать деньги со своих клиентов, используя эту услугу.

Сегодняшний пост будет посвящен созданию учетной записи на Razorpay и интеграции с приложением node.js.

Шаг 1. Настройка учетной записи RazorPay

Перейдите на https://dashboard.razorpay.com/signup и введите свой адрес электронной почты и необходимую информацию.

По умолчанию он создает тестовую среду, в которой вы можете поиграть со всеми параметрами. Вы можете активировать свой аккаунт, заполнив форму KYC в разделе «Мой аккаунт -> Профиль -> Активация аккаунта».

Теперь перейдите в «Настройки -> API-ключи», чтобы сгенерировать API-ключи для подключения к узлу. Загрузите ключи и сохраните их в надежном месте.

Шаг 2. Настройка Node.js

Установите пакет Razorpay с помощью npm.

npm i --save razorpay

Теперь давайте создадим файл index.js и создадим экземпляр Razorpay с key_id и key_secret, которые мы загрузили в качестве ключей API.

const rzp = new Razorpay({
 key_id: "YOUR_KEY_ID",
 key_secret: "YOUR_KEY_SECRET",
})

Создайте заказ и отправьте идентификатор заказа обратно для оформления заказа.

const rzpOrder = await rzp.orders.create({
 amount: amount * 100, // rzp format with paise
 currency: 'INR',
 receipt: "receipt#1" //Receipt no that corresponds to this Order,
 payment_capture: true,
 notes: {
  orderType: "Pre"
 } //Key-value pair used to store additional information
})
// To create recurring subscription
const subscriptionObject = {
 plan_id: PLAN_ID,
 total_count: 60,
 quantity: 1,
 customer_notify: 1,
 notes,
}
const subscription = await rzp.subscriptions.create(subscriptionObject)

Передайте идентификатор заказа для создания объекта проверки

<button id=”rzp-button1">Pay</button>
<script src=”https://checkout.razorpay.com/v1/checkout.js"></script> <script> 
 var options = 
  {
   “key”: “YOUR_KEY_ID”, // Enter the Key ID generated from the Dashboard 
   "name": "Test Company", 
   "order_id": "rzpOrder.id", // For one time payment
   "subscription_id" : "subscription.id" // For recurring subscription
   "prefill": {
     "name": "Test User",
     "email": "[email protected]",
     "contact": "9999999999"
   },
   "theme": {
    "color": "#3399cc"
   },
   // This handler function will handle the success payment
   "handler": function (response) {
    alert(response.razorpay_payment_id);
    alert("Payment Successfull")
   },
};
var rzp1 = new Razorpay(options);
document.getElementById('rzp-button1').onclick = function (e) {
  rzp1.open();
  e.preventDefault();
}
rzp1.on('payment.failed', function (response)
 {            
  alert(response.error.code);     
  alert(response.error.description);      
  alert(response.error.source);
  alert(response.error.step);     
  alert(response.error.reason);
  alert(response.error.metadata.order_id);
  alert(response.error.metadata.payment_id);
 }
</script

Если все верно, пользователь будет перенаправлен на страницу оформления заказа Razorpay.

Вы можете зафиксировать платеж автоматически или с помощью метода захвата. Webhooks позволяет вам получить ответ от сервера Razorpay.

Вы можете подписаться на определенное событие из вебхука Razorpay и сохранить данные в своей БД.

Вы можете настроить веб-перехватчики с панели инструментов для режима реального времени и тестового режима отдельно.

Теперь вам нужно проверить подлинность события веб-перехватчика, отправленного Razorpay.

const requestedBody = JSON.stringify(req.body)
const receivedSignature = req.headers['x-razorpay-signature']
const expectedSignature = crypto.createHmac('sha256', RAZORPAY_WEBHOOK_SECRET).update(requestedBody).digest('hex')
if (receivedSignature === expectedSignature) { 
  // Store in your DB
} else {
 res.status(501).send('received but unverified resp')
}

Вывод

И это все. Вы все готовы начать свой бизнес онлайн-платежей. Для получения дополнительной информации посетите официальную документацию по интеграции RazorPay.

Спасибо, что прочитали. Первоначально опубликовано на https://noob2geek.in 12 апреля 2021 г.

Дополнительные материалы на plainenglish.io