UNPKG

@muhammedaksam/sipay-node

Version:

Node.js TypeScript SDK for Sipay payment gateway

83 lines 3.26 kB
import { SipayResource } from './base'; import { generatePaymentHashKey, generateStatusHashKey, generateConfirmPaymentHashKey, } from '../utils'; export class Payments extends SipayResource { /** * Make a 2D payment (without 3D Secure authentication) */ async pay2D(paymentData, options) { const data = this.addMerchantKey(paymentData); // Generate hash key for payment verification const hashKey = generatePaymentHashKey(data.total, data.installments_number || 1, data.currency_code, this.client['config'].merchantKey, data.invoice_id, this.client['config'].appSecret); data.hash_key = hashKey; return this.post('/api/paySmart2D', data, options); } /** * Process a 3D payment (with 3D Secure authentication) * Returns HTML form that should be rendered and auto-submitted */ async pay3D(paymentData, options) { const data = this.addMerchantKey(paymentData); return this.postForm('/api/paySmart3D', data, options); } /** * Get POS information and installment options for a credit card */ async getPos(posData, options) { const data = this.addMerchantKey({ ...posData, credit_card: posData.credit_card, }); return this.post('/api/getpos', data, options); } /** * Check the status of a payment */ async checkStatus(statusData, options) { const data = this.addMerchantKey(statusData); // Generate hash key for status check const hashKey = generateStatusHashKey(data.invoice_id, this.client['config'].merchantKey, this.client['config'].appSecret); data.hash_key = hashKey; return this.post('/api/checkstatus', data, options); } /** * Confirm a pre-authorization payment */ async confirmPayment(confirmData, options) { const data = this.addMerchantKey(confirmData); // Generate hash key for payment confirmation // Hash format: merchant_key|invoice_id|status const hashKey = generateConfirmPaymentHashKey(data.merchant_key, data.invoice_id, data.status, this.client['config'].appSecret); data.hash_key = hashKey; return this.post('/api/confirmPayment', data, options); } /** * Refund a payment */ async refund(refundData, options) { const data = this.addMerchantKey(refundData); return this.post('/api/refund', data, options); } /** * Get merchant active installments * Note: This endpoint uses Bearer token authentication */ async getInstallments(options) { // This endpoint doesn't require request body, only headers with Bearer token return this.post('/api/installments', {}, options); } /** * Get authentication token * Used for Bearer token authentication in certain endpoints */ async getToken(tokenData, options) { return this.post('/api/token', tokenData, options); } /** * Legacy 2D payment method (maintains compatibility) */ async pay(paymentData, options) { const data = this.addMerchantKey(paymentData); return this.post('/api/pay', data, options); } } //# sourceMappingURL=payments.js.map