anypay-node
Version:
Node.js integration for Anypay payment gateway
250 lines (211 loc) • 7.84 kB
JavaScript
const { AnypayClient, crypto } = require('./lib/index');
// AnypayClient örneği oluşturma
const client = new AnypayClient({
merchantId: '1399', // Merchant ID
secretKey: 'NLmx0woAqrgHYnMbDSVLChCJ77R8adf', // Gizli anahtar
apiId: 'your-api-id', // API ID
apiKey: 'your-api-key' // API anahtarı
});
// Örnek 1: Ödeme formu oluşturma
async function createPaymentFormExample() {
console.log('--- Ödeme Formu Örneği ---');
const formParams = {
pay_id: '12345',
amount: '100.00',
currency: 'RUB',
desc: 'Test ödeme',
success_url: 'https://example.com/success',
fail_url: 'https://example.com/fail',
email: 'customer@example.com'
};
const formData = client.createPaymentFormData(formParams);
console.log('Form Verileri:', formData);
const formHtml = client.createPaymentForm(formParams);
console.log('Form HTML:', formHtml);
}
// Örnek 2: Ödeme bildirimi doğrulama
function validateNotificationExample() {
console.log('--- Ödeme Bildirimi Doğrulama Örneği ---');
// Bildirim nesnesini oluştur
const notification = {
currency: 'RUB',
amount: '100.00',
pay_id: '12345',
merchant_id: '1399',
status: 'paid',
transaction_id: '4950030',
profit: '95.00',
email: 'customer@example.com',
method: 'card',
test: '0'
};
// API dökümanına göre doğru imza parametreleri:
// SHA256(currency:amount:pay_id:merchant_id:status:secretKey)
const secretKey = 'NLmx0woAqrgHYnMbDSVLChCJ77R8adf';
console.log('Debug - İmza bilgileri:');
console.log('- Currency:', notification.currency);
console.log('- Amount:', notification.amount);
console.log('- Pay ID:', notification.pay_id);
console.log('- Merchant ID:', notification.merchant_id);
console.log('- Status:', notification.status);
console.log('- Secret Key:', secretKey);
// İmza oluştur
const signParams = [
notification.currency,
notification.amount,
notification.pay_id,
notification.merchant_id,
notification.status,
secretKey
];
console.log('İmza parametreleri:', signParams.join(':'));
notification.sign = crypto.createSHA256Sign(signParams);
console.log('Oluşturulan imza:', notification.sign);
const ipAddress = '185.162.128.38'; // Anypay'in geçerli IP'lerinden biri
// Bildirim doğrulama
const isValid = client.validateNotification(notification, ipAddress);
console.log('Bildirim Geçerli mi?', isValid);
// Manuel doğrulama (sadece imza kontrolü)
const manualValidation = crypto.validateNotificationSign(notification, secretKey);
console.log('Manuel İmza Doğrulama:', manualValidation);
// Farklı değerlerle test
const invalidIP = '192.168.1.1'; // Geçersiz IP adresi
console.log('Geçersiz IP ile:', client.validateNotification(notification, invalidIP));
// Geçersiz imza ile test
const invalidNotification = { ...notification, sign: 'invalid-signature' };
console.log('Geçersiz İmza ile:', client.validateNotification(invalidNotification, ipAddress));
}
// Örnek 3: Hesap bakiyesi alınması
async function getBalanceExample() {
console.log('--- Hesap Bakiyesi Örneği ---');
try {
const balance = await client.getBalance();
console.log('Hesap Bakiyesi:', balance);
} catch (error) {
console.error('Bakiye alınırken hata:', error.message);
}
}
// Örnek 4: Döviz kurları alınması
async function getRatesExample() {
console.log('--- Döviz Kurları Örneği ---');
try {
const rates = await client.getRates();
console.log('Giriş Kurları:', rates.in);
console.log('Çıkış Kurları:', rates.out);
} catch (error) {
console.error('Kurlar alınırken hata:', error.message);
}
}
// Örnek 5: Komisyon oranları alınması
async function getCommissionsExample() {
console.log('--- Komisyon Oranları Örneği ---');
try {
const commissions = await client.getCommissions();
console.log('Komisyon Oranları:', commissions);
} catch (error) {
console.error('Komisyonlar alınırken hata:', error.message);
}
}
// Örnek 6: API ile ödeme oluşturma
async function createPaymentExample() {
console.log('--- API ile Ödeme Oluşturma Örneği ---');
try {
const paymentParams = {
pay_id: '12345',
amount: '100.00',
currency: 'RUB',
desc: 'API ile test ödeme',
email: 'customer@example.com',
method: 'card',
success_url: 'https://example.com/success',
fail_url: 'https://example.com/fail'
};
const payment = await client.createPayment(paymentParams);
console.log('Oluşturulan Ödeme:', payment);
console.log('Ödeme URL:', payment.payment_url);
} catch (error) {
console.error('Ödeme oluşturulurken hata:', error.message);
}
}
// Örnek 7: Ödemeleri listele
async function getPaymentsExample() {
console.log('--- Ödemeleri Listele Örneği ---');
try {
const payments = await client.getPayments();
console.log('Toplam Ödeme Sayısı:', payments.total);
console.log('Ödemeler:', payments.payments);
} catch (error) {
console.error('Ödemeler listelenirken hata:', error.message);
}
}
// Örnek 8: Para çekme işlemi oluştur
async function createPayoutExample() {
console.log('--- Para Çekme İşlemi Örneği ---');
try {
const payoutParams = {
payout_id: '54321',
payout_type: 'card',
amount: '1000.00',
wallet: '4000000000000000', // Kredi kartı numarası
wallet_currency: 'RUB',
commission_type: 'payment'
};
const payout = await client.createPayout(payoutParams);
console.log('Oluşturulan Para Çekme İşlemi:', payout);
} catch (error) {
console.error('Para çekme işlemi oluşturulurken hata:', error.message);
}
}
// Örnek 9: Para çekme işlemlerini listele
async function getPayoutsExample() {
console.log('--- Para Çekme İşlemlerini Listele Örneği ---');
try {
const payouts = await client.getPayouts();
console.log('Toplam Para Çekme İşlemi Sayısı:', payouts.total);
console.log('Para Çekme İşlemleri:', payouts.payouts);
} catch (error) {
console.error('Para çekme işlemleri listelenirken hata:', error.message);
}
}
// Örnek 10: Bildirim IP adreslerini al
async function getNotificationIPsExample() {
console.log('--- Bildirim IP Adresleri Örneği ---');
try {
const ipData = await client.getNotificationIPs();
console.log('Bildirim IP Adresleri:', ipData.ip);
} catch (error) {
console.error('IP adresleri alınırken hata:', error.message);
}
}
// Tüm örnekleri çalıştır
async function runAllExamples() {
console.log('====== Anypay API Örnekleri ======\n');
await createPaymentFormExample();
console.log('\n');
validateNotificationExample();
console.log('\n');
// API çağrıları için gerçek API anahtarları gerektiğinden,
// bu örnekler yorum satırına alınmıştır. Gerçek API anahtarları
// ile çalıştırmak için yorum satırlarını kaldırın.
/*
await getBalanceExample();
console.log('\n');
await getRatesExample();
console.log('\n');
await getCommissionsExample();
console.log('\n');
await createPaymentExample();
console.log('\n');
await getPaymentsExample();
console.log('\n');
await createPayoutExample();
console.log('\n');
await getPayoutsExample();
console.log('\n');
await getNotificationIPsExample();
*/
}
// Örnekleri çalıştır
runAllExamples().catch(error => {
console.error('Bir hata oluştu:', error);
});