Как получить доступ к API платежного канала Индии? Руководство для разработчиков

Как получить доступ к API платежного канала Индии? Руководство для разработчиков

Руководство по доступу к API платежного канала # Индия

Как эксперт по индийским платежным платформам, я подробно расскажу вам о том, как получить доступ к API ведущих платежных каналов в Индии.

Основные индийские платежные шлюзы

1. Разорпай
2. PayU India
3. CCAvenue
4. Instamojo
5. Платежный шлюз Paytm

Общий процесс доступа

1. зарегистрируйте торговый счет
- Посетите официальный сайт выбранного вами платежного шлюза, чтобы зарегистрировать торговый счет
- Предоставление документов KYC (обычно это PAN-карта, GSTIN, подтверждение банковского счета и т.д.).
- Ожидание одобрения (обычно занимает 1-3 рабочих дня)

2. приобретение ключа API
- Генерируйте или просматривайте пары API-ключей в Dashboard.
- Идентификатор ключа/публичный ключ
- Секрет ключа/Закрытый ключ

3. возможности интеграции с API
Большинство индийских платежных шлюзов поддерживают.
“`
a) Интеграция страницы оформления заказа (самая простая)
b) Обработка уведомлений Webhooks в режиме реального времени
c) Интеграция SDK (Node.js, PHP, Python и т.д.)
г) Необработанные вызовы API (интерфейс RESTful)
“`

Пример кода Razorpay (Node.js)

"javascript
const Razorpay = require('razorpay');
const instance = new Razorpay({
key_id: 'YOUR_KEY_ID',
key_secret: 'YOUR_KEY_SECRET'
});

//Создание заказа
const options = {
сумма: req.body.price *100, //сумма в пайсах (100 пайсов = 1 рупия)
валюта: "INR",
квитанция: "order_rcptid_11"
};

instance.orders.create(options).then((order)=>{
res.json(order);
}).catch((err)=>{
res.status(500).send(err);
});
“`

PayU India Sample (PHP)

"`php

// Razorpay UPI Intent Example
const options = {
сумма: 50000, // ₹500 (в пайсах)
валюта: "INR",
метод: "upi",
клиент: {
контакт: "+919876543210",
e-mail: "[email protected]"
},
upi_link: true, //Включить поток UPI-интентов
};

instance.paymentLink.create(options);

Описание ключевых параметров::

  • vpa: Виртуальный платежный адрес (например, user@upi)
  • поток: собирать или намереваться (по умолчанию)
  • истекать_по:: Срок действия ссылки UPI (временная метка UNIX)

Конфигурация опций EMI

При работе с рассрочкой платежа требуется особая осторожность:

$emiOptions = [
'bank' => 'HDFC', //поддерживаемые коды банков
'tenure' => [3,6], // количество разрешенных месяцев рассрочки
'interest_rate' => ['3'=>0,'6'=>2] // процентная ставка для каждого периода (%)
];

2. Реализация безопасности Webhook

Проверка подписи JWT (на примере PayU)

из jwt import decode, InvalidSignatureError

def verify_webhook(request).
попробуйте.
полезная нагрузка = decode(
request.headers['X-PayU-Signature'],
key='YOUR_MERCHANT_SECRET',
algorithms=['HS256']
)
return payload['payload']
except InvalidSignatureError.
abort(403) # отклоняет неаутентифицированный запрос

@app.route('/webhook', methods=['POST'])
def handle_webhook().
проверенные_данные = verify_webhook(request)

функция безопасности::
✅ Проверка IP-белого списка (получение официального IP-сегмента шлюза)
✅ Двойная проверка подписи HMAC
✅ Атака против воспроизведения с помощью нонса

Стратегия обработки ошибок API

Распространенные коды ошибок и ответы на них:

Код состояния HTTP Код ошибки Предлагаемое лечение
400 BAD_REQUEST Проверка форматов параметров и обязательных полей
401 НЕАВТОРИЗОВАННЫЙ Повторная генерация маркеров аутентификации
429 RATE_LIMITED Внедрение механизма повторного тестирования индекса
502/504 Разработка механизмов асинхронной компенсации

Рекомендуемая реализация логики повторных попыток (Node.js).

async-функция makePaymentRequest(params, retries=3){
попытка{
return await gateway.charge(params);
}catch(err){
if(retries>0 && isRetriable(err)){
await new Promise(r=>setTimeout(r,1000*(4-retries)));
return makePaymentRequest(params,retries-1);
}
выбросить ошибку.
}
}

function isRetriable(err){
const codes = ['ECONNRESET','ETIMEDOUT','EPIPE'];
return codes.includes(err.code) || err.statusCode >= 500;
}

Требования к соответствию стандарту PCI DSS

Нормы, которые необходимо соблюдать при обработке данных карт в Индии:

  1. SAQ A-EP Применимые сценарии::
    ✔️ полностью размещенная страница оплаты
    На сайте ✔️ нет конфиденциальных данных, проходящих через собственные серверы.

  2. Список необходимых мер::
    🔹 Ежеквартальное сканирование уязвимостей (инструмент сертификации QSA)
    🔹 Ежегодные отчеты о тестировании на проникновение
    🔹 Обязательная реализация TLS 1.2+ (настройка заголовка HSTS)

3.Спецификации ведения журнала:
📝 Храните журнал операций не менее 12 месяцев
🚫 Запрет на хранение номеров CVV/CVC
🛡️ зашифрованное хранение номеров PAN (с использованием AES256+ ротации ключа)

BharatQR Специальная интеграция

Для офлайн-торговцев необходима поддержка унифицированного QR-кода.

// Пример генерации контента BharatQR (BHIM SDK)
String qrData = new QRBuilder()
.setMerchantId("MER123456")
.setStoreId("STORE001")
. .setTerminalId("POS01")
.setAmount(new BigDecimal("250.50"))
.buildBharatQRString(); .

// Спецификация формата ответа
{
"qrType": "BHARATQR".
"content": "000201010212..." ,
"imageUrl": "https://api.upi.qr/v1/generate?data=..."
}

⚠️ Обратите внимание, что динамические QR-коды обычно действуют в течение 10 минут.

Мы надеемся, что этот расширенный контент поможет вам создать более надежную платежную систему. Пожалуйста, не забудьте обратиться к последней официальной документации по каждой платформе, поскольку нормативные требования NPCI и RBI регулярно обновляются. Для более детальной реализации конкретного шлюза я могу предоставить руководство по конкретной платформе.