@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.
- package/LICENSE +21 -0
- package/README.md +346 -0
- package/dist/esm/index.js +45 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/resources/base.js +24 -0
- package/dist/esm/resources/base.js.map +1 -0
- package/dist/esm/resources/branded-solution.js +18 -0
- package/dist/esm/resources/branded-solution.js.map +1 -0
- package/dist/esm/resources/commissions.js +10 -0
- package/dist/esm/resources/commissions.js.map +1 -0
- package/dist/esm/resources/payments.js +50 -0
- package/dist/esm/resources/payments.js.map +1 -0
- package/dist/esm/resources/recurring.js +16 -0
- package/dist/esm/resources/recurring.js.map +1 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/http-client.js +119 -0
- package/dist/esm/utils/http-client.js.map +1 -0
- package/dist/esm/utils/index.js +136 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/base.d.ts +12 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/base.js +28 -0
- package/dist/resources/base.js.map +1 -0
- package/dist/resources/branded-solution.d.ts +15 -0
- package/dist/resources/branded-solution.d.ts.map +1 -0
- package/dist/resources/branded-solution.js +22 -0
- package/dist/resources/branded-solution.js.map +1 -0
- package/dist/resources/commissions.d.ts +9 -0
- package/dist/resources/commissions.d.ts.map +1 -0
- package/dist/resources/commissions.js +14 -0
- package/dist/resources/commissions.js.map +1 -0
- package/dist/resources/payments.d.ts +30 -0
- package/dist/resources/payments.d.ts.map +1 -0
- package/dist/resources/payments.js +54 -0
- package/dist/resources/payments.js.map +1 -0
- package/dist/resources/recurring.d.ts +13 -0
- package/dist/resources/recurring.d.ts.map +1 -0
- package/dist/resources/recurring.js +20 -0
- package/dist/resources/recurring.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/http-client.d.ts +16 -0
- package/dist/utils/http-client.d.ts.map +1 -0
- package/dist/utils/http-client.js +126 -0
- package/dist/utils/http-client.js.map +1 -0
- package/dist/utils/index.d.ts +36 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +178 -0
- package/dist/utils/index.js.map +1 -0
- 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 @@
|
|
|
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
|
+
}
|