This is Unofficial NestPay payment gateway integration for Node.js and NestJS applications. This package provides a simple and type-safe way to integrate with Turkish banks using the NestPay payment gateway.
This package is fully licensed under the MIT License and is created to assist developers in integrating NestPay for Turkish banks. While this package aims to simplify integration, the usage of this package comes with no warranty or liability.
For any issues encountered, feel free to reach out. You can also support the project by forking and contributing. Together, we can make this library even better!
- TypeScript support with full type definitions
- Support for multiple Turkish banks (İş Bankası, Akbank, Denizbank, etc.)
- Easy to use API with Promise-based methods
- Comprehensive error handling
- Both Node.js and NestJS support
- Full XML field support including billing, shipping, and order details
- Auto-generated order IDs (UUID)
npm install @montarist/nestpay-api
const { NestPayService, TransactionType, Currency } = require('@montarist/nestpay-api');
// Initialize the service
const nestpay = new NestPayService({
clientId: 'YOUR_CLIENT_ID',
username: 'YOUR_API_USERNAME',
password: 'YOUR_API_PASSWORD',
environment: 'TEST', // or 'PROD'
bank: 'isbank',
});
// Process a payment with all details
async function processDetailedPayment() {
try {
const response = await nestpay.processPayment({
// Temel Bilgiler
type: TransactionType.AUTH,
orderId: '12345',
groupId: 'GROUP1',
transId: 'TRANS1',
// Tutar Bilgileri
amount: 100.5,
currency: Currency.TRY,
installment: 1,
// Kart Bilgileri
cardNumber: '4444333322221111',
expiryMonth: '12',
expiryYear: '25',
cvv: '123',
cardHolderName: 'John Doe',
// Müşteri Bilgileri
ipAddress: '192.168.1.1',
email: '[email protected]',
// Fatura Bilgileri
billTo: {
name: 'John Doe',
company: 'Example Corp',
street1: 'Invoice Street',
street2: 'No: 123',
city: 'Istanbul',
stateProv: 'Kadikoy',
postalCode: '34700',
country: 'TR',
telVoice: '+902121234567',
},
// Teslimat Bilgileri
shipTo: {
name: 'Jane Doe',
street1: 'Shipping Street',
city: 'Istanbul',
stateProv: 'Besiktas',
postalCode: '34353',
country: 'TR',
telVoice: '+902121234567',
},
// Sipariş Detayları
orderItems: [
{
itemNumber: 'ITEM1',
productCode: 'PRD1',
qty: 2,
desc: 'Example Product',
id: '1',
price: 50.25,
total: 100.5,
},
],
});
console.log(response);
} catch (error) {
console.error(error);
}
}
// 1. 3D Secure başlatma
const threeDResponse = await nestpay.initiate3DSecure({
orderId: '12345',
amount: 100.5,
currency: Currency.TRY,
cardNumber: '4444333322221111',
expiryMonth: '12',
expiryYear: '25',
cvv: '123',
cardHolderName: 'John Doe',
successUrl: 'https://your-site.com/success',
failureUrl: 'https://your-site.com/failure',
});
// 2. 3D Secure sonrası ödeme tamamlama
const paymentResponse = await nestpay.process3DCallback({
oid: '12345',
status: 'success',
md: 'md123',
xid: 'xid123',
eci: 'eci123',
cavv: 'cavv123',
amount: '100.50',
});
const refundResponse = await nestpay.refund('12345', 100.5);
// OrderId ile iptal
const cancelResponse = await nestpay.cancelWithOrderId('12345');
// TransId ile iptal
const cancelWithTransId = await nestpay.cancelWithTransId('789');
import { Module } from '@nestjs/common';
import { NestPayService } from '@montarist/nestpay-api';
@Module({
providers: [
{
provide: NestPayService,
useValue: new NestPayService({
clientId: 'YOUR_CLIENT_ID',
username: 'YOUR_API_USERNAME',
password: 'YOUR_API_PASSWORD',
environment: 'TEST',
bank: 'isbank',
}),
},
],
exports: [NestPayService],
})
export class PaymentModule {}
Then in your service:
import { Injectable } from '@nestjs/common';
import { NestPayService, TransactionType, Currency } from '@montarist/nestpay-api';
@Injectable()
export class PaymentService {
constructor(private readonly nestpayService: NestPayService) {}
async processPayment(paymentDetails: any) {
return this.nestpayService.processPayment({
type: TransactionType.AUTH,
amount: paymentDetails.amount,
currency: Currency.TRY,
orderId: paymentDetails.orderId,
cardNumber: paymentDetails.cardNumber,
expiryMonth: paymentDetails.expiryMonth,
expiryYear: paymentDetails.expiryYear,
cvv: paymentDetails.cvv,
cardHolderName: paymentDetails.cardHolderName,
// ... diğer alanlar
});
}
async cancelPayment(orderId: string) {
return this.nestpayService.cancelWithOrderId(orderId);
}
}
- İş Bankası
- Akbank
- Denizbank
- Halkbank
- Ziraat Bankası
- TEB
- QNB Finansbank
- Anadolubank
The package includes comprehensive error handling. All methods return promises that may reject with specific error types. Always wrap your calls in try-catch blocks.
MIT
For support, please create an issue on the GitHub repository.