UNPKG

@muhammedaksam/sipay-node

Version:

Node.js TypeScript SDK for Sipay payment gateway

164 lines 7.98 kB
"use strict"; /** * Sipay Status Code Utilities * Helper functions for working with Sipay API status codes */ Object.defineProperty(exports, "__esModule", { value: true }); exports.StatusCodeGroups = void 0; exports.getStatusCodeInfo = getStatusCodeInfo; exports.isStatusInGroup = isStatusInGroup; exports.getSuggestedAction = getSuggestedAction; const status_codes_1 = require("../types/status-codes"); /** * Get comprehensive information about a status code */ function getStatusCodeInfo(statusCode) { return { code: statusCode, description: (0, status_codes_1.getStatusDescription)(statusCode), category: (0, status_codes_1.getStatusCategory)(statusCode), isSuccess: (0, status_codes_1.isSuccessStatus)(statusCode), isError: (0, status_codes_1.isErrorStatus)(statusCode), isRetryable: (0, status_codes_1.isRetryableStatus)(statusCode), httpEquivalent: getHttpEquivalent(statusCode), }; } /** * Map Sipay status codes to HTTP status codes where applicable */ function getHttpEquivalent(statusCode) { switch (statusCode) { case status_codes_1.SipayStatusCode.SUCCESSFUL: case status_codes_1.SipayStatusCode.REFUND_REQUEST_CREATED: case status_codes_1.SipayStatusCode.PARTIALLY_SUCCESSFUL: return 200; // OK case status_codes_1.SipayStatusCode.BASIC_VALIDATION: case status_codes_1.SipayStatusCode.ITEMS_VALIDATION_ERROR: case status_codes_1.SipayStatusCode.PRICE_TOTAL_MISMATCH: case status_codes_1.SipayStatusCode.QUANTITY_MUST_BE_INTEGER: case status_codes_1.SipayStatusCode.INVALID_INVOICE_ID: case status_codes_1.SipayStatusCode.INVALID_CHARACTER: case status_codes_1.SipayStatusCode.INVALID_CARD_NUMBER: case status_codes_1.SipayStatusCode.CANCELLATION_URL_SHOULD_NOT_BE_BLANK: return 400; // Bad Request case status_codes_1.SipayStatusCode.INVALID_CREDENTIALS: case status_codes_1.SipayStatusCode.INVALID_TOKEN_OR_CLIENT_NUMBER: return 401; // Unauthorized case status_codes_1.SipayStatusCode.PAYMENT_INTEGRATION_NOT_ALLOWED: case status_codes_1.SipayStatusCode.MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT: case status_codes_1.SipayStatusCode.MERCHANT_CARD_TRANSACTION_NOT_ALLOWED: case status_codes_1.SipayStatusCode.FOREIGN_CARDS_NOT_ALLOWED: return 403; // Forbidden case status_codes_1.SipayStatusCode.MERCHANT_NOT_FOUND: case status_codes_1.SipayStatusCode.TRANSACTION_NOT_FOUND: case status_codes_1.SipayStatusCode.POS_NOT_FOUND: case status_codes_1.SipayStatusCode.COMMISSION_NOT_FOUND: case status_codes_1.SipayStatusCode.INSTALLMENT_NOT_FOUND: case status_codes_1.SipayStatusCode.SUB_MERCHANT_NOT_FOUND: return 404; // Not Found case status_codes_1.SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED: case status_codes_1.SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED_ALT: return 409; // Conflict case status_codes_1.SipayStatusCode.UNKNOWN_ERROR: case status_codes_1.SipayStatusCode.CURRENCY_CONVERSION_FAILED: case status_codes_1.SipayStatusCode.FILE_PROCESSING_ERROR: return 500; // Internal Server Error default: return undefined; } } /** * Common status code groups for easy checking */ exports.StatusCodeGroups = { SUCCESS: [ status_codes_1.SipayStatusCode.SUCCESSFUL, status_codes_1.SipayStatusCode.REFUND_REQUEST_CREATED, status_codes_1.SipayStatusCode.PARTIALLY_SUCCESSFUL, ], VALIDATION_ERRORS: [ status_codes_1.SipayStatusCode.BASIC_VALIDATION, status_codes_1.SipayStatusCode.ITEMS_VALIDATION_ERROR, status_codes_1.SipayStatusCode.PRICE_TOTAL_MISMATCH, status_codes_1.SipayStatusCode.QUANTITY_MUST_BE_INTEGER, status_codes_1.SipayStatusCode.INVALID_INVOICE_ID, status_codes_1.SipayStatusCode.INVALID_CHARACTER, status_codes_1.SipayStatusCode.INVALID_CARD_NUMBER, status_codes_1.SipayStatusCode.CANCELLATION_URL_SHOULD_NOT_BE_BLANK, ], PAYMENT_ERRORS: [ status_codes_1.SipayStatusCode.ORDER_FAILED, status_codes_1.SipayStatusCode.PAYMENT_TERM_NOT_SET, status_codes_1.SipayStatusCode.REFUND_FAILED, status_codes_1.SipayStatusCode.TRANSACTION_NOT_FOUND, status_codes_1.SipayStatusCode.ORDER_NOT_YET_PROCESSED, status_codes_1.SipayStatusCode.TRANSACTION_NOT_APPROVED, ], MERCHANT_LIMIT_ERRORS: [ status_codes_1.SipayStatusCode.MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED, status_codes_1.SipayStatusCode.MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED, status_codes_1.SipayStatusCode.MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED, status_codes_1.SipayStatusCode.MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED, status_codes_1.SipayStatusCode.MINIMUM_TRANSACTION_LIMIT_VIOLATED, ], CARD_ERRORS: [ status_codes_1.SipayStatusCode.CREDIT_CARD_BLOCKED, status_codes_1.SipayStatusCode.MERCHANT_CARD_TRANSACTION_NOT_ALLOWED, status_codes_1.SipayStatusCode.CARD_PROGRAM_MISMATCH, status_codes_1.SipayStatusCode.FOREIGN_CARDS_NOT_ALLOWED, status_codes_1.SipayStatusCode.NO_FOREIGN_CARD_COMMISSION, ], HASH_KEY_ERRORS: [ status_codes_1.SipayStatusCode.HASH_KEY_VALIDATION_ERROR, status_codes_1.SipayStatusCode.INVALID_HASH_KEY, status_codes_1.SipayStatusCode.HASH_KEY_MERCHANT_KEY_MISMATCH, status_codes_1.SipayStatusCode.HASH_KEY_CUSTOMER_NUMBER_MISMATCH, status_codes_1.SipayStatusCode.HASH_KEY_CARD_HOLDER_NAME_MISMATCH, status_codes_1.SipayStatusCode.HASH_KEY_CARD_NUMBER_MISMATCH, status_codes_1.SipayStatusCode.HASH_KEY_EXPIRY_MONTH_MISMATCH, status_codes_1.SipayStatusCode.HASH_KEY_EXPIRY_YEAR_MISMATCH, status_codes_1.SipayStatusCode.HASH_KEY_CARD_TOKEN_MISMATCH, ], RETRYABLE_ERRORS: [ status_codes_1.SipayStatusCode.ORDER_NOT_YET_PROCESSED, status_codes_1.SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED, status_codes_1.SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED_ALT, status_codes_1.SipayStatusCode.MAXIMUM_TRANSACTION_LIMIT_VIOLATED, ], }; /** * Check if status code is in a specific group */ function isStatusInGroup(statusCode, group) { return group.includes(statusCode); } /** * Get suggested actions based on status code */ function getSuggestedAction(statusCode) { const info = getStatusCodeInfo(statusCode); switch (info.category) { case status_codes_1.SipayStatusCategory.SUCCESS: return 'Transaction completed successfully'; case status_codes_1.SipayStatusCategory.VALIDATION_ERROR: return 'Check request parameters and fix validation errors'; case status_codes_1.SipayStatusCategory.AUTHENTICATION_ERROR: return 'Verify API credentials and merchant configuration'; case status_codes_1.SipayStatusCategory.PAYMENT_ERROR: if (info.isRetryable) { return 'Transaction may be retried after a short delay'; } return 'Check payment details and try with different parameters'; case status_codes_1.SipayStatusCategory.MERCHANT_ERROR: return 'Contact your payment provider to resolve merchant configuration issues'; case status_codes_1.SipayStatusCategory.CARD_ERROR: return 'Try with a different card or contact the card issuer'; case status_codes_1.SipayStatusCategory.HASH_ERROR: return 'Verify hash key generation parameters and algorithm'; case status_codes_1.SipayStatusCategory.RECURRING_ERROR: return 'Check recurring payment configuration and parameters'; default: return 'Contact technical support for assistance'; } } //# sourceMappingURL=status-code-helpers.js.map