1.0.4 • Published 3 months ago

paymaya-integration v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

PayMaya Integration Module 💳

This module provides a client for integrating the PayMaya payment system into Node.js applications.

🇹🇷 Türkçe versiyonu için tıklayın

Installation 📦

npm install paymaya-integration

Usage 🚀

Initialization

const PayMaya = require('paymaya-integration');

const paymaya = new PayMaya({
  publicKey: 'YOUR_PUBLIC_KEY',
  secretKey: 'YOUR_SECRET_KEY',
  environment: 'SANDBOX' // or 'PRODUCTION'
});

Checkout Example

const checkoutData = {
  totalAmount: {
    value: 100,
    currency: 'PHP',
  },
  buyer: {
    firstName: 'John',
    lastName: 'Doe',
    contact: {
      phone: '09123456789',
      email: 'john.doe@example.com'
    },
    shippingAddress: {
      line1: '123 Street',
      line2: 'Sample Barangay',
      city: 'Manila',
      state: 'Metro Manila',
      zipCode: '1234',
      countryCode: 'PH'
    },
    billingAddress: {
      line1: '123 Street',
      line2: 'Sample Barangay',
      city: 'Manila',
      state: 'Metro Manila',
      zipCode: '1234',
      countryCode: 'PH'
    }
  },
  items: [
    {
      name: 'Product 1',
      quantity: 1,
      code: 'PROD1',
      description: 'Product description',
      amount: {
        value: 100,
        details: {
          discount: 0,
          serviceCharge: 0,
          shippingFee: 0,
          tax: 0,
          subtotal: 100
        }
      },
      totalAmount: {
        value: 100,
        details: {
          discount: 0,
          serviceCharge: 0,
          shippingFee: 0,
          tax: 0,
          subtotal: 100
        }
      }
    }
  ],
  redirectUrl: {
    success: 'https://example.com/success',
    failure: 'https://example.com/failure',
    cancel: 'https://example.com/cancel'
  },
  requestReferenceNumber: 'REF123456789'
};

// Create payment transaction
paymaya.checkout.create(checkoutData)
  .then(response => {
    console.log('Checkout URL:', response.redirectUrl);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });

Webhook Processing Example

// Express Application Example
const express = require('express');
const app = express();
app.use(express.json());

app.post('/webhook/payment', (req, res) => {
  const isValid = paymaya.webhooks.verifyWebhook(req, 'YOUR_SECRET_KEY');
  
  if (isValid) {
    const event = req.body;
    
    // Process webhook events
    switch (event.type) {
      case 'CHECKOUT_SUCCESS':
        // Successful payment process
        break;
      case 'CHECKOUT_FAILURE':
        // Failed payment process
        break;
      default:
        console.log('Unknown event:', event.type);
    }
    
    res.status(200).send('OK');
  } else {
    res.status(400).send('Invalid webhook');
  }
});

API Reference 📚

Checkout

  • paymaya.checkout.create(checkoutData): Creates a new payment transaction
  • paymaya.checkout.retrieve(id): Gets the details of a payment transaction
  • paymaya.checkout.setWebhooks(webhooks): Sets webhook URLs
  • paymaya.checkout.getWebhooks(): Gets webhook URLs

Invoice

  • paymaya.invoice.create(invoiceData): Creates a new invoice
  • paymaya.invoice.retrieve(id): Gets the details of an invoice
  • paymaya.invoice.cancel(id, reason): Cancels an invoice

Vault (Card Storage)

  • paymaya.vault.createCustomer(customerData): Creates a new customer
  • paymaya.vault.updateCustomer(customerId, customerData): Updates customer information
  • paymaya.vault.getCustomer(customerId): Gets customer information
  • paymaya.vault.deleteCustomer(customerId): Deletes a customer record
  • paymaya.vault.createCard(customerId, cardData): Adds a new card
  • paymaya.vault.getCard(customerId, cardId): Gets a saved card
  • paymaya.vault.deleteCard(customerId, cardId): Deletes a saved card
  • paymaya.vault.createPayment(customerId, cardId, paymentData): Makes a payment with a saved card

Webhooks

  • paymaya.webhooks.verifyWebhook(request, secretKey): Verifies a webhook
  • paymaya.webhooks.register(webhooks): Registers webhook URLs
  • paymaya.webhooks.list(): Lists registered webhook URLs
  • paymaya.webhooks.update(id, webhookData): Updates webhook URLs
  • paymaya.webhooks.delete(id): Deletes a webhook registration

Sandbox Test Information ⚙️

Sandbox API Keys

Sandbox MerchantPublic API KeySecret API Key
Sandbox Party 1pk-Z0OSzLvIcOI2UIvDhdTGVVfRSSeiGStnceqwUE7n0Ahsk-X8qolYjy62kIzEbr0QRK1h4b4KDVHaNcwMYk39jInSl
Sandbox Party 2pk-eo4sL393CWU5KmveJUaW8V730TTei2zY8zE4dHJDxkFsk-KfmfLJXFdV5t1inYN8lIOwSrueC1G27SCAklBqYCdrU
Sandbox Party 3pk-lNAUk1jk7VPnf7koOT1uoGJoZJjmAxrbjpj6urB8EIAsk-fzukI3GXrzNIUyvXY3n16cji8VTJITfzylz5o5QzZMC

Test Cards

Card TypeNumberExpiry MonthExpiry YearCVV3D Secure
MASTERCARD5123456789012346122025111Not Active
MASTERCARD5453010000064154122025111secbarry1
VISA4123450131001381122025123mctest1

Maya E-wallet Test Account

  • Username: 09193890579
  • Password: Password@1
  • OTP: 123456

Author 👨‍💻


PayMaya Entegrasyon Modülü 💳

Bu modül, PayMaya ödeme sistemini Node.js uygulamalarına entegre etmek için bir istemci sağlar.

🇬🇧 Click for English version

Kurulum 📦

npm install paymaya-integration

Kullanım 🚀

Başlatma

const PayMaya = require('paymaya-integration');

const paymaya = new PayMaya({
  publicKey: 'YOUR_PUBLIC_KEY',
  secretKey: 'YOUR_SECRET_KEY',
  environment: 'SANDBOX' // veya 'PRODUCTION'
});

Checkout İşlemi Örneği

const checkoutData = {
  totalAmount: {
    value: 100,
    currency: 'PHP',
  },
  buyer: {
    firstName: 'John',
    lastName: 'Doe',
    contact: {
      phone: '09123456789',
      email: 'john.doe@example.com'
    },
    shippingAddress: {
      line1: '123 Street',
      line2: 'Sample Barangay',
      city: 'Manila',
      state: 'Metro Manila',
      zipCode: '1234',
      countryCode: 'PH'
    },
    billingAddress: {
      line1: '123 Street',
      line2: 'Sample Barangay',
      city: 'Manila',
      state: 'Metro Manila',
      zipCode: '1234',
      countryCode: 'PH'
    }
  },
  items: [
    {
      name: 'Product 1',
      quantity: 1,
      code: 'PROD1',
      description: 'Product description',
      amount: {
        value: 100,
        details: {
          discount: 0,
          serviceCharge: 0,
          shippingFee: 0,
          tax: 0,
          subtotal: 100
        }
      },
      totalAmount: {
        value: 100,
        details: {
          discount: 0,
          serviceCharge: 0,
          shippingFee: 0,
          tax: 0,
          subtotal: 100
        }
      }
    }
  ],
  redirectUrl: {
    success: 'https://example.com/success',
    failure: 'https://example.com/failure',
    cancel: 'https://example.com/cancel'
  },
  requestReferenceNumber: 'REF123456789'
};

// Ödeme işlemi oluştur
paymaya.checkout.create(checkoutData)
  .then(response => {
    console.log('Checkout URL:', response.redirectUrl);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });

Webhook İşleme Örneği

// Express Uygulaması Örneği
const express = require('express');
const app = express();
app.use(express.json());

app.post('/webhook/payment', (req, res) => {
  const isValid = paymaya.webhooks.verifyWebhook(req, 'YOUR_SECRET_KEY');
  
  if (isValid) {
    const event = req.body;
    
    // Webhook olaylarını işle
    switch (event.type) {
      case 'CHECKOUT_SUCCESS':
        // Başarılı ödeme işlemi
        break;
      case 'CHECKOUT_FAILURE':
        // Başarısız ödeme işlemi
        break;
      default:
        console.log('Bilinmeyen olay:', event.type);
    }
    
    res.status(200).send('OK');
  } else {
    res.status(400).send('Invalid webhook');
  }
});

API Referansı 📚

Checkout

  • paymaya.checkout.create(checkoutData): Yeni bir ödeme işlemi oluşturur
  • paymaya.checkout.retrieve(id): Bir ödeme işleminin detayını alır
  • paymaya.checkout.setWebhooks(webhooks): Webhook URL'lerini ayarlar
  • paymaya.checkout.getWebhooks(): Webhook URL'lerini alır

Invoice

  • paymaya.invoice.create(invoiceData): Yeni bir fatura oluşturur
  • paymaya.invoice.retrieve(id): Bir faturanın detaylarını alır
  • paymaya.invoice.cancel(id, reason): Bir faturayı iptal eder

Vault (Kart Saklama)

  • paymaya.vault.createCustomer(customerData): Yeni bir müşteri oluşturur
  • paymaya.vault.updateCustomer(customerId, customerData): Müşteri bilgilerini günceller
  • paymaya.vault.getCustomer(customerId): Müşteri bilgilerini alır
  • paymaya.vault.deleteCustomer(customerId): Müşteri kaydını siler
  • paymaya.vault.createCard(customerId, cardData): Yeni bir kart ekler
  • paymaya.vault.getCard(customerId, cardId): Kaydedilmiş kartı alır
  • paymaya.vault.deleteCard(customerId, cardId): Kaydedilmiş kartı siler
  • paymaya.vault.createPayment(customerId, cardId, paymentData): Kaydedilmiş kart ile ödeme yapar

Webhooks

  • paymaya.webhooks.verifyWebhook(request, secretKey): Webhook doğrulaması yapar
  • paymaya.webhooks.register(webhooks): Webhook URL'lerini kaydeder
  • paymaya.webhooks.list(): Kayıtlı webhook URL'lerini listeler
  • paymaya.webhooks.update(id, webhookData): Webhook URL'lerini günceller
  • paymaya.webhooks.delete(id): Webhook kaydını siler

Sandbox Test Bilgileri ⚙️

Sandbox API Keys

Sandbox MerchantPublic API KeySecret API Key
Sandbox Party 1pk-Z0OSzLvIcOI2UIvDhdTGVVfRSSeiGStnceqwUE7n0Ahsk-X8qolYjy62kIzEbr0QRK1h4b4KDVHaNcwMYk39jInSl
Sandbox Party 2pk-eo4sL393CWU5KmveJUaW8V730TTei2zY8zE4dHJDxkFsk-KfmfLJXFdV5t1inYN8lIOwSrueC1G27SCAklBqYCdrU
Sandbox Party 3pk-lNAUk1jk7VPnf7koOT1uoGJoZJjmAxrbjpj6urB8EIAsk-fzukI3GXrzNIUyvXY3n16cji8VTJITfzylz5o5QzZMC

Test Kartları

Kart TipiNumaraSon Kullanma AySon Kullanma YılCVV3D Secure
MASTERCARD5123456789012346122025111Aktif Değil
MASTERCARD5453010000064154122025111secbarry1
VISA4123450131001381122025123mctest1

Maya E-wallet Test Hesabı

  • Kullanıcı Adı: 09193890579
  • Şifre: Password@1
  • OTP: 123456

Yapımcı 👨‍💻

1.0.4

3 months ago

1.0.3

3 months ago

1.0.2

3 months ago

1.0.1

3 months ago

1.0.0

3 months ago