@muhammedaksam/sipay-node 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +346 -0
  3. package/dist/esm/index.js +45 -0
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/esm/resources/base.js +24 -0
  6. package/dist/esm/resources/base.js.map +1 -0
  7. package/dist/esm/resources/branded-solution.js +18 -0
  8. package/dist/esm/resources/branded-solution.js.map +1 -0
  9. package/dist/esm/resources/commissions.js +10 -0
  10. package/dist/esm/resources/commissions.js.map +1 -0
  11. package/dist/esm/resources/payments.js +50 -0
  12. package/dist/esm/resources/payments.js.map +1 -0
  13. package/dist/esm/resources/recurring.js +16 -0
  14. package/dist/esm/resources/recurring.js.map +1 -0
  15. package/dist/esm/types/index.js +2 -0
  16. package/dist/esm/types/index.js.map +1 -0
  17. package/dist/esm/utils/http-client.js +119 -0
  18. package/dist/esm/utils/http-client.js.map +1 -0
  19. package/dist/esm/utils/index.js +136 -0
  20. package/dist/esm/utils/index.js.map +1 -0
  21. package/dist/index.d.ts +35 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +69 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/resources/base.d.ts +12 -0
  26. package/dist/resources/base.d.ts.map +1 -0
  27. package/dist/resources/base.js +28 -0
  28. package/dist/resources/base.js.map +1 -0
  29. package/dist/resources/branded-solution.d.ts +15 -0
  30. package/dist/resources/branded-solution.d.ts.map +1 -0
  31. package/dist/resources/branded-solution.js +22 -0
  32. package/dist/resources/branded-solution.js.map +1 -0
  33. package/dist/resources/commissions.d.ts +9 -0
  34. package/dist/resources/commissions.d.ts.map +1 -0
  35. package/dist/resources/commissions.js +14 -0
  36. package/dist/resources/commissions.js.map +1 -0
  37. package/dist/resources/payments.d.ts +30 -0
  38. package/dist/resources/payments.d.ts.map +1 -0
  39. package/dist/resources/payments.js +54 -0
  40. package/dist/resources/payments.js.map +1 -0
  41. package/dist/resources/recurring.d.ts +13 -0
  42. package/dist/resources/recurring.d.ts.map +1 -0
  43. package/dist/resources/recurring.js +20 -0
  44. package/dist/resources/recurring.js.map +1 -0
  45. package/dist/types/index.d.ts +116 -0
  46. package/dist/types/index.d.ts.map +1 -0
  47. package/dist/types/index.js +3 -0
  48. package/dist/types/index.js.map +1 -0
  49. package/dist/utils/http-client.d.ts +16 -0
  50. package/dist/utils/http-client.d.ts.map +1 -0
  51. package/dist/utils/http-client.js +126 -0
  52. package/dist/utils/http-client.js.map +1 -0
  53. package/dist/utils/index.d.ts +36 -0
  54. package/dist/utils/index.d.ts.map +1 -0
  55. package/dist/utils/index.js +178 -0
  56. package/dist/utils/index.js.map +1 -0
  57. package/package.json +72 -0
@@ -0,0 +1,116 @@
1
+ export interface SipayConfig {
2
+ appId: string;
3
+ appSecret: string;
4
+ merchantKey: string;
5
+ baseUrl?: string;
6
+ timeout?: number;
7
+ }
8
+ export interface SipayApiResponse<T = any> {
9
+ status_code: number;
10
+ status_description: string;
11
+ data?: T;
12
+ message?: string;
13
+ status?: boolean;
14
+ link?: string;
15
+ success_message?: string;
16
+ }
17
+ export interface TokenResponse {
18
+ token: string;
19
+ is_3d: number;
20
+ }
21
+ export interface PaymentItem {
22
+ name: string;
23
+ price: number;
24
+ qnantity: number;
25
+ description: string;
26
+ }
27
+ export interface BasePaymentRequest {
28
+ merchant_key: string;
29
+ invoice_id: string;
30
+ invoice_description: string;
31
+ total: number;
32
+ currency_code: string;
33
+ installments_number?: number;
34
+ items: PaymentItem[];
35
+ name: string;
36
+ surname: string;
37
+ hash_key?: string;
38
+ }
39
+ export interface CreditCardInfo {
40
+ cc_holder_name: string;
41
+ cc_no: string;
42
+ expiry_month: string;
43
+ expiry_year: string;
44
+ cvv?: string;
45
+ }
46
+ export interface Payment2DRequest extends BasePaymentRequest, CreditCardInfo {
47
+ }
48
+ export interface Payment3DRequest extends BasePaymentRequest, CreditCardInfo {
49
+ }
50
+ export interface GetPosRequest {
51
+ credit_card: string;
52
+ amount: string;
53
+ currency_code: string;
54
+ merchant_key: string;
55
+ is_2d?: number;
56
+ }
57
+ export interface PosInfo {
58
+ pos_id: string;
59
+ pos_name: string;
60
+ installments: InstallmentOption[];
61
+ }
62
+ export interface InstallmentOption {
63
+ installment: number;
64
+ rate: number;
65
+ amount: number;
66
+ }
67
+ export interface OrderStatusRequest {
68
+ merchant_key: string;
69
+ invoice_id: string;
70
+ include_pending_status?: string;
71
+ }
72
+ export interface RefundRequest {
73
+ invoice_id: string;
74
+ merchant_key: string;
75
+ amount: string;
76
+ }
77
+ export interface RecurringQueryRequest {
78
+ merchant_key: string;
79
+ plan_code: string;
80
+ app_id: string;
81
+ app_secret: string;
82
+ }
83
+ export interface RecurringPlanProcessRequest {
84
+ merchant_id: string;
85
+ plan_code: string;
86
+ }
87
+ export interface CommissionRequest {
88
+ currency_code: string;
89
+ }
90
+ export interface BrandedSolutionRequest {
91
+ merchant_key: string;
92
+ invoice_id: string;
93
+ invoice_description: string;
94
+ total: number;
95
+ currency_code: string;
96
+ items: PaymentItem[];
97
+ name: string;
98
+ surname: string;
99
+ return_url?: string;
100
+ cancel_url?: string;
101
+ }
102
+ export interface BrandedStatusRequest {
103
+ merchant_key: string;
104
+ invoice_id: string;
105
+ is_direct_bank?: number;
106
+ }
107
+ export interface SipayError extends Error {
108
+ status_code?: number;
109
+ status_description?: string;
110
+ type: 'SipayError';
111
+ }
112
+ export interface RequestOptions {
113
+ timeout?: number;
114
+ headers?: Record<string, string>;
115
+ }
116
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { SipayConfig, SipayApiResponse, RequestOptions } from '../types';
2
+ export declare class SipayHttpClient {
3
+ private client;
4
+ private config;
5
+ private token?;
6
+ constructor(config: SipayConfig);
7
+ authenticate(): Promise<void>;
8
+ request<T = any>(method: 'GET' | 'POST', url: string, data?: any, options?: RequestOptions): Promise<SipayApiResponse<T>>;
9
+ get<T = any>(url: string, params?: any, options?: RequestOptions): Promise<SipayApiResponse<T>>;
10
+ post<T = any>(url: string, data?: any, options?: RequestOptions): Promise<SipayApiResponse<T>>;
11
+ postForm<T = any>(url: string, data?: any, options?: RequestOptions): Promise<SipayApiResponse<T>>;
12
+ private createSipayError;
13
+ getToken(): string | undefined;
14
+ setToken(token: string): void;
15
+ }
16
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,cAAc,EAAE,MAAM,UAAU,CAAC;AAErF,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,MAAM,EAAE,WAAW;IAiCzB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB7B,OAAO,CAAC,CAAC,GAAG,GAAG,EACnB,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAqBzB,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAIzB,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAIzB,QAAQ,CAAC,CAAC,GAAG,GAAG,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAyB/B,OAAO,CAAC,gBAAgB;IAmBxB,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG9B"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SipayHttpClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ class SipayHttpClient {
9
+ constructor(config) {
10
+ this.config = {
11
+ baseUrl: 'https://provisioning.sipay.com.tr/ccpayment',
12
+ timeout: 80000,
13
+ ...config,
14
+ };
15
+ this.client = axios_1.default.create({
16
+ baseURL: this.config.baseUrl,
17
+ timeout: this.config.timeout,
18
+ headers: {
19
+ Accept: 'application/json',
20
+ 'Content-Type': 'application/json',
21
+ },
22
+ });
23
+ // Request interceptor to add auth token
24
+ this.client.interceptors.request.use((config) => {
25
+ if (this.token && config.url !== '/api/token') {
26
+ config.headers.Authorization = `Bearer ${this.token}`;
27
+ }
28
+ return config;
29
+ });
30
+ // Response interceptor for error handling
31
+ this.client.interceptors.response.use((response) => response, (error) => {
32
+ throw this.createSipayError(error);
33
+ });
34
+ }
35
+ async authenticate() {
36
+ try {
37
+ const response = await this.client.post('/api/token', {
38
+ app_id: this.config.appId,
39
+ app_secret: this.config.appSecret,
40
+ });
41
+ if (response.data.status_code === 100 && response.data.data?.token) {
42
+ this.token = response.data.data.token;
43
+ }
44
+ else {
45
+ throw new Error(response.data.status_description || 'Authentication failed');
46
+ }
47
+ }
48
+ catch (error) {
49
+ throw this.createSipayError(error);
50
+ }
51
+ }
52
+ async request(method, url, data, options) {
53
+ // Ensure we have a valid token before making requests
54
+ if (!this.token && url !== '/api/token') {
55
+ await this.authenticate();
56
+ }
57
+ const config = {
58
+ method,
59
+ url,
60
+ ...(data && { data }),
61
+ ...options,
62
+ };
63
+ try {
64
+ const response = await this.client.request(config);
65
+ return response.data;
66
+ }
67
+ catch (error) {
68
+ throw this.createSipayError(error);
69
+ }
70
+ }
71
+ async get(url, params, options) {
72
+ return this.request('GET', url, params, options);
73
+ }
74
+ async post(url, data, options) {
75
+ return this.request('POST', url, data, options);
76
+ }
77
+ async postForm(url, data, options) {
78
+ const formOptions = {
79
+ ...options,
80
+ headers: {
81
+ ...options?.headers,
82
+ 'Content-Type': 'application/x-www-form-urlencoded',
83
+ },
84
+ };
85
+ // Convert data to FormData for 3D payments
86
+ if (data && typeof data === 'object') {
87
+ const formData = new URLSearchParams();
88
+ for (const [key, value] of Object.entries(data)) {
89
+ if (Array.isArray(value) || typeof value === 'object') {
90
+ formData.append(key, JSON.stringify(value));
91
+ }
92
+ else {
93
+ formData.append(key, String(value));
94
+ }
95
+ }
96
+ return this.request('POST', url, formData.toString(), formOptions);
97
+ }
98
+ return this.request('POST', url, data, formOptions);
99
+ }
100
+ createSipayError(error) {
101
+ const sipayError = new Error();
102
+ sipayError.type = 'SipayError';
103
+ if (error.response?.data) {
104
+ const errorData = error.response.data;
105
+ sipayError.message =
106
+ errorData.status_description || errorData.message || 'Unknown Sipay error';
107
+ sipayError.status_code = errorData.status_code;
108
+ sipayError.status_description = errorData.status_description;
109
+ }
110
+ else if (error.request) {
111
+ sipayError.message = 'Network error: No response received from Sipay';
112
+ }
113
+ else {
114
+ sipayError.message = error.message || 'Unknown error occurred';
115
+ }
116
+ return sipayError;
117
+ }
118
+ getToken() {
119
+ return this.token;
120
+ }
121
+ setToken(token) {
122
+ this.token = token;
123
+ }
124
+ }
125
+ exports.SipayHttpClient = SipayHttpClient;
126
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Utility functions for Sipay SDK
3
+ */
4
+ /**
5
+ * Generate hash key for payment requests
6
+ * Based on Sipay documentation requirements
7
+ */
8
+ export declare function generateHashKey(merchantKey: string, invoiceId: string, amount: number, secretKey: string): string;
9
+ /**
10
+ * Validate credit card number using Luhn algorithm
11
+ */
12
+ export declare function validateCreditCard(cardNumber: string): boolean;
13
+ /**
14
+ * Format currency amount for Sipay API
15
+ */
16
+ export declare function formatAmount(amount: number): string;
17
+ /**
18
+ * Generate a unique invoice ID
19
+ */
20
+ export declare function generateInvoiceId(prefix?: string): string;
21
+ /**
22
+ * Validate required payment fields
23
+ */
24
+ export declare function validatePaymentData(data: any): string[];
25
+ /**
26
+ * Mask credit card number for logging
27
+ */
28
+ export declare function maskCreditCard(cardNumber: string): string;
29
+ /**
30
+ * Parse Sipay error response
31
+ */
32
+ export declare function parseSipayError(error: any): {
33
+ code: number;
34
+ message: string;
35
+ };
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA0B9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAQ,GAAG,MAAM,CAIxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,EAAE,CAsDvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAa7E"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.generateHashKey = generateHashKey;
37
+ exports.validateCreditCard = validateCreditCard;
38
+ exports.formatAmount = formatAmount;
39
+ exports.generateInvoiceId = generateInvoiceId;
40
+ exports.validatePaymentData = validatePaymentData;
41
+ exports.maskCreditCard = maskCreditCard;
42
+ exports.parseSipayError = parseSipayError;
43
+ const crypto = __importStar(require("crypto"));
44
+ /**
45
+ * Utility functions for Sipay SDK
46
+ */
47
+ /**
48
+ * Generate hash key for payment requests
49
+ * Based on Sipay documentation requirements
50
+ */
51
+ function generateHashKey(merchantKey, invoiceId, amount, secretKey) {
52
+ const hashString = `${merchantKey}${invoiceId}${amount}${secretKey}`;
53
+ return crypto.createHash('sha256').update(hashString).digest('hex');
54
+ }
55
+ /**
56
+ * Validate credit card number using Luhn algorithm
57
+ */
58
+ function validateCreditCard(cardNumber) {
59
+ const num = cardNumber.replace(/\D/g, '');
60
+ // Check if empty or less than 13 digits
61
+ if (num.length < 13 || num.length > 19) {
62
+ return false;
63
+ }
64
+ let sum = 0;
65
+ let isEven = false;
66
+ for (let i = num.length - 1; i >= 0; i--) {
67
+ let digit = parseInt(num.charAt(i), 10);
68
+ if (isEven) {
69
+ digit *= 2;
70
+ if (digit > 9) {
71
+ digit -= 9;
72
+ }
73
+ }
74
+ sum += digit;
75
+ isEven = !isEven;
76
+ }
77
+ return sum % 10 === 0;
78
+ }
79
+ /**
80
+ * Format currency amount for Sipay API
81
+ */
82
+ function formatAmount(amount) {
83
+ return amount.toFixed(2);
84
+ }
85
+ /**
86
+ * Generate a unique invoice ID
87
+ */
88
+ function generateInvoiceId(prefix = 'INV') {
89
+ const timestamp = Date.now();
90
+ const random = Math.floor(Math.random() * 10000);
91
+ return `${prefix}${timestamp}${random}`;
92
+ }
93
+ /**
94
+ * Validate required payment fields
95
+ */
96
+ function validatePaymentData(data) {
97
+ const errors = [];
98
+ const requiredFields = [
99
+ 'cc_holder_name',
100
+ 'cc_no',
101
+ 'expiry_month',
102
+ 'expiry_year',
103
+ 'currency_code',
104
+ 'invoice_id',
105
+ 'total',
106
+ 'name',
107
+ 'surname',
108
+ 'items',
109
+ ];
110
+ for (const field of requiredFields) {
111
+ if (!data[field]) {
112
+ errors.push(`Missing required field: ${field}`);
113
+ }
114
+ }
115
+ // Validate credit card
116
+ if (data.cc_no && !validateCreditCard(data.cc_no)) {
117
+ errors.push('Invalid credit card number');
118
+ }
119
+ // Validate amount
120
+ if (data.total && (isNaN(data.total) || data.total <= 0)) {
121
+ errors.push('Invalid amount');
122
+ }
123
+ // Validate currency
124
+ const validCurrencies = ['TRY', 'USD', 'EUR'];
125
+ if (data.currency_code && !validCurrencies.includes(data.currency_code)) {
126
+ errors.push('Invalid currency code');
127
+ }
128
+ // Validate expiry
129
+ if (data.expiry_month) {
130
+ const month = parseInt(data.expiry_month, 10);
131
+ if (isNaN(month) || month < 1 || month > 12) {
132
+ errors.push('Invalid expiry month');
133
+ }
134
+ }
135
+ if (data.expiry_year) {
136
+ const year = parseInt(data.expiry_year, 10);
137
+ const currentYear = new Date().getFullYear();
138
+ if (isNaN(year) || year < currentYear || year > currentYear + 20) {
139
+ errors.push('Invalid expiry year');
140
+ }
141
+ }
142
+ return errors;
143
+ }
144
+ /**
145
+ * Mask credit card number for logging
146
+ */
147
+ function maskCreditCard(cardNumber) {
148
+ const num = cardNumber.replace(/\D/g, '');
149
+ if (num.length <= 3) {
150
+ return '*'.repeat(num.length);
151
+ }
152
+ if (num.length <= 7) {
153
+ const firstThree = num.substring(0, 3);
154
+ const middle = '*'.repeat(num.length - 4);
155
+ const lastOne = num.substring(num.length - 1);
156
+ return `${firstThree}${middle}${lastOne}`;
157
+ }
158
+ const firstFour = num.substring(0, 4);
159
+ const lastFour = num.substring(num.length - 4);
160
+ const middle = '*'.repeat(Math.max(0, num.length - 8));
161
+ return `${firstFour}${middle}${lastFour}`;
162
+ }
163
+ /**
164
+ * Parse Sipay error response
165
+ */
166
+ function parseSipayError(error) {
167
+ if (error.response?.data) {
168
+ return {
169
+ code: error.response.data.status_code || 0,
170
+ message: error.response.data.status_description || error.response.data.message || 'Unknown error',
171
+ };
172
+ }
173
+ return {
174
+ code: 0,
175
+ message: error.message || 'Network error',
176
+ };
177
+ }
178
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@muhammedaksam/sipay-node",
3
+ "version": "0.1.0",
4
+ "description": "Node.js TypeScript SDK for Sipay payment gateway",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "module": "dist/esm/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "keywords": [
19
+ "sipay",
20
+ "payment",
21
+ "gateway",
22
+ "credit-card",
23
+ "turkey",
24
+ "typescript",
25
+ "nodejs"
26
+ ],
27
+ "author": "Muhammed Mustafa AKŞAM <info@muhammedaksam.com.tr> (https://github.com/muhammedaksam)",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/muhammedaksam/sipay-node.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/muhammedaksam/sipay-node/issues"
35
+ },
36
+ "homepage": "https://github.com/muhammedaksam/sipay-node#readme",
37
+ "devDependencies": {
38
+ "@eslint/js": "^9.30.1",
39
+ "@types/jest": "^30.0.0",
40
+ "@types/node": "^24.0.13",
41
+ "@typescript-eslint/eslint-plugin": "^8.36.0",
42
+ "@typescript-eslint/parser": "^8.36.0",
43
+ "eslint": "^9.30.1",
44
+ "jest": "^30.0.4",
45
+ "prettier": "^3.6.2",
46
+ "rimraf": "^6.0.1",
47
+ "ts-jest": "^29.4.0",
48
+ "ts-node": "^10.9.2",
49
+ "typescript": "^5.8.3"
50
+ },
51
+ "dependencies": {
52
+ "axios": "^1.10.0"
53
+ },
54
+ "engines": {
55
+ "node": ">=18"
56
+ },
57
+ "scripts": {
58
+ "build": "pnpm run build:cjs && pnpm run build:esm && pnpm run build:types",
59
+ "build:cjs": "tsc -p tsconfig.json",
60
+ "build:esm": "tsc -p tsconfig.esm.json",
61
+ "build:types": "tsc -p tsconfig.types.json",
62
+ "dev": "ts-node src/index.ts",
63
+ "test": "jest",
64
+ "test:watch": "jest --watch",
65
+ "test:coverage": "jest --coverage",
66
+ "lint": "eslint src test examples --ext .ts",
67
+ "lint:fix": "eslint src test examples --ext .ts --fix",
68
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"examples/**/*.ts\"",
69
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"examples/**/*.ts\"",
70
+ "clean": "rimraf dist"
71
+ }
72
+ }