@muhammedaksam/sipay-node 1.0.6 → 1.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 (86) hide show
  1. package/dist/esm/index.js +15 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/resources/branded-solution.js +0 -7
  4. package/dist/esm/resources/branded-solution.js.map +1 -1
  5. package/dist/esm/resources/cards.js +74 -0
  6. package/dist/esm/resources/cards.js.map +1 -0
  7. package/dist/esm/resources/cashout.js +17 -0
  8. package/dist/esm/resources/cashout.js.map +1 -0
  9. package/dist/esm/resources/marketplace.js +58 -0
  10. package/dist/esm/resources/marketplace.js.map +1 -0
  11. package/dist/esm/resources/payment-completion.js +41 -0
  12. package/dist/esm/resources/payment-completion.js.map +1 -0
  13. package/dist/esm/resources/payments.js +28 -2
  14. package/dist/esm/resources/payments.js.map +1 -1
  15. package/dist/esm/resources/recurring.js +4 -12
  16. package/dist/esm/resources/recurring.js.map +1 -1
  17. package/dist/esm/resources/sub-merchant.js +84 -0
  18. package/dist/esm/resources/sub-merchant.js.map +1 -0
  19. package/dist/esm/types/index.js +2 -1
  20. package/dist/esm/types/index.js.map +1 -1
  21. package/dist/esm/types/status-codes.js +292 -0
  22. package/dist/esm/types/status-codes.js.map +1 -0
  23. package/dist/esm/utils/http-client.js +14 -3
  24. package/dist/esm/utils/http-client.js.map +1 -1
  25. package/dist/esm/utils/index.js +40 -35
  26. package/dist/esm/utils/index.js.map +1 -1
  27. package/dist/esm/utils/status-code-helpers.js +158 -0
  28. package/dist/esm/utils/status-code-helpers.js.map +1 -0
  29. package/dist/index.d.ts +15 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +21 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/resources/branded-solution.d.ts +1 -5
  34. package/dist/resources/branded-solution.d.ts.map +1 -1
  35. package/dist/resources/branded-solution.js +0 -7
  36. package/dist/resources/branded-solution.js.map +1 -1
  37. package/dist/resources/cards.d.ts +76 -0
  38. package/dist/resources/cards.d.ts.map +1 -0
  39. package/dist/resources/cards.js +78 -0
  40. package/dist/resources/cards.js.map +1 -0
  41. package/dist/resources/cashout.d.ts +28 -0
  42. package/dist/resources/cashout.d.ts.map +1 -0
  43. package/dist/resources/cashout.js +21 -0
  44. package/dist/resources/cashout.js.map +1 -0
  45. package/dist/resources/commissions.d.ts +2 -2
  46. package/dist/resources/commissions.d.ts.map +1 -1
  47. package/dist/resources/marketplace.d.ts +87 -0
  48. package/dist/resources/marketplace.d.ts.map +1 -0
  49. package/dist/resources/marketplace.js +62 -0
  50. package/dist/resources/marketplace.js.map +1 -0
  51. package/dist/resources/payment-completion.d.ts +21 -0
  52. package/dist/resources/payment-completion.d.ts.map +1 -0
  53. package/dist/resources/payment-completion.js +78 -0
  54. package/dist/resources/payment-completion.js.map +1 -0
  55. package/dist/resources/payments.d.ts +20 -6
  56. package/dist/resources/payments.d.ts.map +1 -1
  57. package/dist/resources/payments.js +27 -1
  58. package/dist/resources/payments.js.map +1 -1
  59. package/dist/resources/recurring.d.ts +0 -9
  60. package/dist/resources/recurring.d.ts.map +1 -1
  61. package/dist/resources/recurring.js +4 -12
  62. package/dist/resources/recurring.js.map +1 -1
  63. package/dist/resources/sub-merchant.d.ts +136 -0
  64. package/dist/resources/sub-merchant.d.ts.map +1 -0
  65. package/dist/resources/sub-merchant.js +88 -0
  66. package/dist/resources/sub-merchant.js.map +1 -0
  67. package/dist/types/index.d.ts +373 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/index.js +16 -0
  70. package/dist/types/index.js.map +1 -1
  71. package/dist/types/status-codes.d.ts +125 -0
  72. package/dist/types/status-codes.d.ts.map +1 -0
  73. package/dist/types/status-codes.js +300 -0
  74. package/dist/types/status-codes.js.map +1 -0
  75. package/dist/utils/http-client.d.ts.map +1 -1
  76. package/dist/utils/http-client.js +14 -3
  77. package/dist/utils/http-client.js.map +1 -1
  78. package/dist/utils/index.d.ts +12 -3
  79. package/dist/utils/index.d.ts.map +1 -1
  80. package/dist/utils/index.js +80 -38
  81. package/dist/utils/index.js.map +1 -1
  82. package/dist/utils/status-code-helpers.d.ts +42 -0
  83. package/dist/utils/status-code-helpers.d.ts.map +1 -0
  84. package/dist/utils/status-code-helpers.js +164 -0
  85. package/dist/utils/status-code-helpers.js.map +1 -0
  86. package/package.json +1 -1
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ /**
3
+ * Sipay API Status Codes
4
+ * Based on official API documentation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SipayStatusCategory = exports.SipayStatusDescriptions = exports.SipayStatusCode = exports.SipayHttpStatusCode = void 0;
8
+ exports.getStatusCategory = getStatusCategory;
9
+ exports.isSuccessStatus = isSuccessStatus;
10
+ exports.isErrorStatus = isErrorStatus;
11
+ exports.getStatusDescription = getStatusDescription;
12
+ exports.isRetryableStatus = isRetryableStatus;
13
+ // Server HTTP Status Codes
14
+ var SipayHttpStatusCode;
15
+ (function (SipayHttpStatusCode) {
16
+ SipayHttpStatusCode[SipayHttpStatusCode["OK"] = 200] = "OK";
17
+ SipayHttpStatusCode[SipayHttpStatusCode["CREATED"] = 201] = "CREATED";
18
+ SipayHttpStatusCode[SipayHttpStatusCode["ACCEPTED"] = 202] = "ACCEPTED";
19
+ SipayHttpStatusCode[SipayHttpStatusCode["BAD_REQUEST"] = 400] = "BAD_REQUEST";
20
+ SipayHttpStatusCode[SipayHttpStatusCode["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
21
+ SipayHttpStatusCode[SipayHttpStatusCode["FORBIDDEN"] = 403] = "FORBIDDEN";
22
+ SipayHttpStatusCode[SipayHttpStatusCode["NOT_FOUND"] = 404] = "NOT_FOUND";
23
+ SipayHttpStatusCode[SipayHttpStatusCode["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
24
+ SipayHttpStatusCode[SipayHttpStatusCode["CONFLICT"] = 409] = "CONFLICT";
25
+ SipayHttpStatusCode[SipayHttpStatusCode["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED";
26
+ SipayHttpStatusCode[SipayHttpStatusCode["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
27
+ SipayHttpStatusCode[SipayHttpStatusCode["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
28
+ SipayHttpStatusCode[SipayHttpStatusCode["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
29
+ SipayHttpStatusCode[SipayHttpStatusCode["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
30
+ })(SipayHttpStatusCode || (exports.SipayHttpStatusCode = SipayHttpStatusCode = {}));
31
+ // Application Status Codes
32
+ var SipayStatusCode;
33
+ (function (SipayStatusCode) {
34
+ // Validation and Basic Errors
35
+ SipayStatusCode[SipayStatusCode["BASIC_VALIDATION"] = 1] = "BASIC_VALIDATION";
36
+ SipayStatusCode[SipayStatusCode["INVOICE_ID_ALREADY_PROCESSED"] = 3] = "INVOICE_ID_ALREADY_PROCESSED";
37
+ SipayStatusCode[SipayStatusCode["ITEMS_VALIDATION_ERROR"] = 12] = "ITEMS_VALIDATION_ERROR";
38
+ SipayStatusCode[SipayStatusCode["PRICE_TOTAL_MISMATCH"] = 13] = "PRICE_TOTAL_MISMATCH";
39
+ SipayStatusCode[SipayStatusCode["MERCHANT_NOT_FOUND"] = 14] = "MERCHANT_NOT_FOUND";
40
+ // Authentication and Authorization
41
+ SipayStatusCode[SipayStatusCode["INVALID_CREDENTIALS"] = 30] = "INVALID_CREDENTIALS";
42
+ SipayStatusCode[SipayStatusCode["TRANSACTION_NOT_FOUND"] = 31] = "TRANSACTION_NOT_FOUND";
43
+ SipayStatusCode[SipayStatusCode["INVALID_INVOICE_ID"] = 32] = "INVALID_INVOICE_ID";
44
+ SipayStatusCode[SipayStatusCode["QUANTITY_MUST_BE_INTEGER"] = 33] = "QUANTITY_MUST_BE_INTEGER";
45
+ SipayStatusCode[SipayStatusCode["PAYMENT_INTEGRATION_NOT_ALLOWED"] = 34] = "PAYMENT_INTEGRATION_NOT_ALLOWED";
46
+ SipayStatusCode[SipayStatusCode["CREDIT_CARD_PAYMENT_NOT_DEFINED"] = 35] = "CREDIT_CARD_PAYMENT_NOT_DEFINED";
47
+ // POS and Commission Errors
48
+ SipayStatusCode[SipayStatusCode["POS_NOT_FOUND"] = 36] = "POS_NOT_FOUND";
49
+ SipayStatusCode[SipayStatusCode["MERCHANT_POS_COMMISSION_NOT_SET"] = 37] = "MERCHANT_POS_COMMISSION_NOT_SET";
50
+ SipayStatusCode[SipayStatusCode["MERCHANT_COMMISSION_NOT_DETERMINED"] = 38] = "MERCHANT_COMMISSION_NOT_DETERMINED";
51
+ SipayStatusCode[SipayStatusCode["COMMISSION_NOT_FOUND"] = 39] = "COMMISSION_NOT_FOUND";
52
+ SipayStatusCode[SipayStatusCode["INSTALLMENT_NOT_FOUND"] = 40] = "INSTALLMENT_NOT_FOUND";
53
+ // Payment Errors
54
+ SipayStatusCode[SipayStatusCode["ORDER_FAILED"] = 41] = "ORDER_FAILED";
55
+ SipayStatusCode[SipayStatusCode["PAYMENT_FAILED"] = 41] = "PAYMENT_FAILED";
56
+ SipayStatusCode[SipayStatusCode["PRODUCT_PRICE_LESS_THAN_COMMISSION"] = 42] = "PRODUCT_PRICE_LESS_THAN_COMMISSION";
57
+ SipayStatusCode[SipayStatusCode["PAYMENT_TERM_NOT_SET"] = 43] = "PAYMENT_TERM_NOT_SET";
58
+ SipayStatusCode[SipayStatusCode["CREDIT_CARD_BLOCKED"] = 44] = "CREDIT_CARD_BLOCKED";
59
+ SipayStatusCode[SipayStatusCode["MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED"] = 44] = "MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED";
60
+ SipayStatusCode[SipayStatusCode["MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED"] = 45] = "MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED";
61
+ SipayStatusCode[SipayStatusCode["MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED"] = 46] = "MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED";
62
+ SipayStatusCode[SipayStatusCode["MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED"] = 47] = "MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED";
63
+ SipayStatusCode[SipayStatusCode["MINIMUM_TRANSACTION_LIMIT_VIOLATED"] = 48] = "MINIMUM_TRANSACTION_LIMIT_VIOLATED";
64
+ SipayStatusCode[SipayStatusCode["REFUND_FAILED"] = 49] = "REFUND_FAILED";
65
+ SipayStatusCode[SipayStatusCode["MAXIMUM_TRANSACTION_LIMIT_VIOLATED"] = 49] = "MAXIMUM_TRANSACTION_LIMIT_VIOLATED";
66
+ // Recurring Payment Errors
67
+ SipayStatusCode[SipayStatusCode["RECURRING_PAYMENT_VALIDATION_ERROR"] = 55] = "RECURRING_PAYMENT_VALIDATION_ERROR";
68
+ SipayStatusCode[SipayStatusCode["INVALID_SALE_WEBHOOK_KEY"] = 56] = "INVALID_SALE_WEBHOOK_KEY";
69
+ // Card and Merchant Restrictions
70
+ SipayStatusCode[SipayStatusCode["MERCHANT_CARD_TRANSACTION_NOT_ALLOWED"] = 60] = "MERCHANT_CARD_TRANSACTION_NOT_ALLOWED";
71
+ // Hash Key Errors
72
+ SipayStatusCode[SipayStatusCode["HASH_KEY_VALIDATION_ERROR"] = 68] = "HASH_KEY_VALIDATION_ERROR";
73
+ SipayStatusCode[SipayStatusCode["ORDER_NOT_YET_PROCESSED"] = 69] = "ORDER_NOT_YET_PROCESSED";
74
+ SipayStatusCode[SipayStatusCode["CARD_PROGRAM_MISMATCH"] = 70] = "CARD_PROGRAM_MISMATCH";
75
+ // Recurring Plan Errors
76
+ SipayStatusCode[SipayStatusCode["RECURRING_PLAN_UPDATE_FAILED"] = 71] = "RECURRING_PLAN_UPDATE_FAILED";
77
+ SipayStatusCode[SipayStatusCode["FAILED_TO_DELETE"] = 72] = "FAILED_TO_DELETE";
78
+ SipayStatusCode[SipayStatusCode["FAILED_TO_ADD_DUPLICATE_PLAN_CARD"] = 73] = "FAILED_TO_ADD_DUPLICATE_PLAN_CARD";
79
+ // Foreign Card Errors
80
+ SipayStatusCode[SipayStatusCode["FOREIGN_CARDS_NOT_ALLOWED"] = 76] = "FOREIGN_CARDS_NOT_ALLOWED";
81
+ SipayStatusCode[SipayStatusCode["NO_FOREIGN_CARD_COMMISSION"] = 77] = "NO_FOREIGN_CARD_COMMISSION";
82
+ // Token Payment Errors
83
+ SipayStatusCode[SipayStatusCode["MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT"] = 79] = "MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT";
84
+ SipayStatusCode[SipayStatusCode["SUB_MERCHANT_NOT_FOUND"] = 80] = "SUB_MERCHANT_NOT_FOUND";
85
+ SipayStatusCode[SipayStatusCode["CURRENCY_CONVERSION_FAILED"] = 81] = "CURRENCY_CONVERSION_FAILED";
86
+ // Card Token Errors
87
+ SipayStatusCode[SipayStatusCode["INVALID_CHARACTER"] = 85] = "INVALID_CHARACTER";
88
+ SipayStatusCode[SipayStatusCode["CARD_TOKEN_SAVE_FAILED"] = 86] = "CARD_TOKEN_SAVE_FAILED";
89
+ SipayStatusCode[SipayStatusCode["INVALID_TOKEN_OR_CLIENT_NUMBER"] = 87] = "INVALID_TOKEN_OR_CLIENT_NUMBER";
90
+ SipayStatusCode[SipayStatusCode["FAILED_TO_DELETE_CARD_TOKEN"] = 88] = "FAILED_TO_DELETE_CARD_TOKEN";
91
+ SipayStatusCode[SipayStatusCode["FAILED_TO_UPDATE_CARD_TOKEN"] = 89] = "FAILED_TO_UPDATE_CARD_TOKEN";
92
+ // Hash Key Specific Errors
93
+ SipayStatusCode[SipayStatusCode["INVALID_HASH_KEY"] = 90] = "INVALID_HASH_KEY";
94
+ SipayStatusCode[SipayStatusCode["HASH_KEY_MERCHANT_KEY_MISMATCH"] = 91] = "HASH_KEY_MERCHANT_KEY_MISMATCH";
95
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CUSTOMER_NUMBER_MISMATCH"] = 92] = "HASH_KEY_CUSTOMER_NUMBER_MISMATCH";
96
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CARD_HOLDER_NAME_MISMATCH"] = 93] = "HASH_KEY_CARD_HOLDER_NAME_MISMATCH";
97
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CARD_NUMBER_MISMATCH"] = 94] = "HASH_KEY_CARD_NUMBER_MISMATCH";
98
+ SipayStatusCode[SipayStatusCode["HASH_KEY_EXPIRY_MONTH_MISMATCH"] = 95] = "HASH_KEY_EXPIRY_MONTH_MISMATCH";
99
+ SipayStatusCode[SipayStatusCode["HASH_KEY_EXPIRY_YEAR_MISMATCH"] = 96] = "HASH_KEY_EXPIRY_YEAR_MISMATCH";
100
+ SipayStatusCode[SipayStatusCode["HASH_KEY_CARD_TOKEN_MISMATCH"] = 97] = "HASH_KEY_CARD_TOKEN_MISMATCH";
101
+ // General Status Codes
102
+ SipayStatusCode[SipayStatusCode["UNKNOWN_ERROR"] = 99] = "UNKNOWN_ERROR";
103
+ SipayStatusCode[SipayStatusCode["SUCCESSFUL"] = 100] = "SUCCESSFUL";
104
+ SipayStatusCode[SipayStatusCode["REFUND_REQUEST_CREATED"] = 101] = "REFUND_REQUEST_CREATED";
105
+ SipayStatusCode[SipayStatusCode["POS_NOT_DEFINED"] = 102] = "POS_NOT_DEFINED";
106
+ SipayStatusCode[SipayStatusCode["PAYBY_TOKEN_COMMISSION_NOT_ESTABLISHED"] = 103] = "PAYBY_TOKEN_COMMISSION_NOT_ESTABLISHED";
107
+ SipayStatusCode[SipayStatusCode["RETURN_TRANSACTION_ID_MUST_BE_UNIQUE"] = 104] = "RETURN_TRANSACTION_ID_MUST_BE_UNIQUE";
108
+ SipayStatusCode[SipayStatusCode["TRANSACTION_NOT_APPROVED"] = 105] = "TRANSACTION_NOT_APPROVED";
109
+ SipayStatusCode[SipayStatusCode["INVALID_MERCHANT_TYPE"] = 106] = "INVALID_MERCHANT_TYPE";
110
+ SipayStatusCode[SipayStatusCode["FAILED_TO_VERIFY_API_OPT"] = 107] = "FAILED_TO_VERIFY_API_OPT";
111
+ SipayStatusCode[SipayStatusCode["INVALID_CARD_NUMBER"] = 108] = "INVALID_CARD_NUMBER";
112
+ SipayStatusCode[SipayStatusCode["FILE_PROCESSING_ERROR"] = 109] = "FILE_PROCESSING_ERROR";
113
+ SipayStatusCode[SipayStatusCode["PARTIAL_RETURNS_NOT_ALLOWED"] = 110] = "PARTIAL_RETURNS_NOT_ALLOWED";
114
+ SipayStatusCode[SipayStatusCode["PARTIALLY_SUCCESSFUL"] = 112] = "PARTIALLY_SUCCESSFUL";
115
+ SipayStatusCode[SipayStatusCode["INVOICE_ID_ALREADY_PROCESSED_ALT"] = 117] = "INVOICE_ID_ALREADY_PROCESSED_ALT";
116
+ SipayStatusCode[SipayStatusCode["CANCELLATION_URL_SHOULD_NOT_BE_BLANK"] = 404] = "CANCELLATION_URL_SHOULD_NOT_BE_BLANK";
117
+ })(SipayStatusCode || (exports.SipayStatusCode = SipayStatusCode = {}));
118
+ // Status Code Descriptions
119
+ exports.SipayStatusDescriptions = {
120
+ [SipayStatusCode.BASIC_VALIDATION]: 'Basic validation',
121
+ [SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED]: 'Invoice ID already processed. Order with this invoice ID process continues, Please wait or create order with new invoice id',
122
+ [SipayStatusCode.ITEMS_VALIDATION_ERROR]: 'Items must be an array, Invalid Currency code, Invalid item format',
123
+ [SipayStatusCode.PRICE_TOTAL_MISMATCH]: 'The sum of your product price does not equal the total of the invoice',
124
+ [SipayStatusCode.MERCHANT_NOT_FOUND]: 'Merchant not found!',
125
+ [SipayStatusCode.INVALID_CREDENTIALS]: 'Invalid Credentials',
126
+ [SipayStatusCode.TRANSACTION_NOT_FOUND]: 'Transaction not found',
127
+ [SipayStatusCode.INVALID_INVOICE_ID]: 'Invalid invoice ID, order not completed',
128
+ [SipayStatusCode.QUANTITY_MUST_BE_INTEGER]: 'Quantity must be integer',
129
+ [SipayStatusCode.PAYMENT_INTEGRATION_NOT_ALLOWED]: 'Payment integration method not allowed. Please contact support.',
130
+ [SipayStatusCode.CREDIT_CARD_PAYMENT_NOT_DEFINED]: 'Credit Card Payment Option not defined',
131
+ [SipayStatusCode.POS_NOT_FOUND]: 'Pos not found',
132
+ [SipayStatusCode.MERCHANT_POS_COMMISSION_NOT_SET]: 'Merchant Pos Commission has not been set. Please contact the service provider.',
133
+ [SipayStatusCode.MERCHANT_COMMISSION_NOT_DETERMINED]: 'Merchant Commission has not been determined for this currency and payment method. Please try another payment method',
134
+ [SipayStatusCode.COMMISSION_NOT_FOUND]: 'Commission not found',
135
+ [SipayStatusCode.INSTALLMENT_NOT_FOUND]: 'Installment not found',
136
+ [SipayStatusCode.ORDER_FAILED]: 'Order failed / Payment failed',
137
+ [SipayStatusCode.PRODUCT_PRICE_LESS_THAN_COMMISSION]: 'Product price less than commission, Product price less than cost',
138
+ [SipayStatusCode.PAYMENT_TERM_NOT_SET]: 'Payment term not set',
139
+ [SipayStatusCode.CREDIT_CARD_BLOCKED]: 'This credit card has been blocked. Merchant daily transaction limit exceeded',
140
+ [SipayStatusCode.MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED]: 'Merchant daily transaction amount limit exceeded',
141
+ [SipayStatusCode.MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED]: 'Merchant monthly transaction number limit exceeded',
142
+ [SipayStatusCode.MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED]: 'Merchant monthly transaction amount limit exceeded',
143
+ [SipayStatusCode.MINIMUM_TRANSACTION_LIMIT_VIOLATED]: 'Minimum transaction limit per transaction violated',
144
+ [SipayStatusCode.REFUND_FAILED]: 'Refund Failed. The total refund amount must not exceed the net amount. No Sales Transaction Found. Insufficient Balance. Non-refundable transaction status. Please wait at least 30 seconds for another refund. Maximum transaction limit per transaction violated',
145
+ [SipayStatusCode.RECURRING_PAYMENT_VALIDATION_ERROR]: 'There can be no installment sales in recurring payment. Duplicate number cannot be empty. The duplicate number must be an integer. Duplicate number must be greater than 1. The duplicate number must not be greater than 121. The iterative loop cannot be empty. The repeating loop unit is not valid.Must be "D", "M" or "Y". Duplicate range cannot be empty. The repeating range must be an integer. The repeating range must be greater than 0. The repeating range should not be greater than 99. Invalid duplicate webhook key! Please check the key name in Sipay. Duplicate webhook key cannot be empty. Please assign your webhook key to Sipay',
146
+ [SipayStatusCode.INVALID_SALE_WEBHOOK_KEY]: 'Invalid sale webhook key! Please check the key name in Sipay',
147
+ [SipayStatusCode.MERCHANT_CARD_TRANSACTION_NOT_ALLOWED]: 'The merchant is not allowed to make transactions using this card.',
148
+ [SipayStatusCode.HASH_KEY_VALIDATION_ERROR]: 'Total amount mismatch with hash key. Currency mismatch with hash key. Hash key and merchant key mismatch. Installment number mismatch with hash key. Hash key and pos ID mismatch. Invoice ID mismatch with hash key',
149
+ [SipayStatusCode.ORDER_NOT_YET_PROCESSED]: 'Order not yet processed',
150
+ [SipayStatusCode.CARD_PROGRAM_MISMATCH]: 'Card program mismatch',
151
+ [SipayStatusCode.RECURRING_PLAN_UPDATE_FAILED]: 'Recurring plan update failed, Invalid Response or Unknown Error',
152
+ [SipayStatusCode.FAILED_TO_DELETE]: 'Failed to delete, Failed to process old payment',
153
+ [SipayStatusCode.FAILED_TO_ADD_DUPLICATE_PLAN_CARD]: 'Failed to add duplicate plan card, Invalid Response or Unknown Error',
154
+ [SipayStatusCode.FOREIGN_CARDS_NOT_ALLOWED]: 'Foreign Cards Are Not Allowed For This Merchant.',
155
+ [SipayStatusCode.NO_FOREIGN_CARD_COMMISSION]: 'No Foreign Card Commission has been determined for this Merchant.',
156
+ [SipayStatusCode.MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT]: 'The merchant is not allowed to pay with card tokens.',
157
+ [SipayStatusCode.SUB_MERCHANT_NOT_FOUND]: 'Sub-merchant not found',
158
+ [SipayStatusCode.CURRENCY_CONVERSION_FAILED]: 'Currency conversion from API failed',
159
+ [SipayStatusCode.INVALID_CHARACTER]: 'Invalid character',
160
+ [SipayStatusCode.CARD_TOKEN_SAVE_FAILED]: 'Card token save failed',
161
+ [SipayStatusCode.INVALID_TOKEN_OR_CLIENT_NUMBER]: 'Invalid token or client number',
162
+ [SipayStatusCode.FAILED_TO_DELETE_CARD_TOKEN]: 'Failed to delete card token',
163
+ [SipayStatusCode.FAILED_TO_UPDATE_CARD_TOKEN]: 'Failed to update card token',
164
+ [SipayStatusCode.INVALID_HASH_KEY]: 'Invalid Hash key',
165
+ [SipayStatusCode.HASH_KEY_MERCHANT_KEY_MISMATCH]: 'Hash key that does not match the Merchant key',
166
+ [SipayStatusCode.HASH_KEY_CUSTOMER_NUMBER_MISMATCH]: 'Hash key that does not match the customer number',
167
+ [SipayStatusCode.HASH_KEY_CARD_HOLDER_NAME_MISMATCH]: "Hash key that does not match the Card Holder's Name",
168
+ [SipayStatusCode.HASH_KEY_CARD_NUMBER_MISMATCH]: 'Hash key that does not match the Card Number',
169
+ [SipayStatusCode.HASH_KEY_EXPIRY_MONTH_MISMATCH]: 'Hash key that does not match expiration month',
170
+ [SipayStatusCode.HASH_KEY_EXPIRY_YEAR_MISMATCH]: 'Hash key that does not match expiry year',
171
+ [SipayStatusCode.HASH_KEY_CARD_TOKEN_MISMATCH]: 'Hash key that does not match the card token',
172
+ [SipayStatusCode.UNKNOWN_ERROR]: 'Unknown Error',
173
+ [SipayStatusCode.SUCCESSFUL]: 'Successful',
174
+ [SipayStatusCode.REFUND_REQUEST_CREATED]: 'Your refund request has been successfully created. Our team will complete the return process',
175
+ [SipayStatusCode.POS_NOT_DEFINED]: 'Pos not defined, no Pos found for this installment',
176
+ [SipayStatusCode.PAYBY_TOKEN_COMMISSION_NOT_ESTABLISHED]: 'Payby token commission rate not established',
177
+ [SipayStatusCode.RETURN_TRANSACTION_ID_MUST_BE_UNIQUE]: 'Return transaction ID must be unique',
178
+ [SipayStatusCode.TRANSACTION_NOT_APPROVED]: 'The transaction has not been approved',
179
+ [SipayStatusCode.INVALID_MERCHANT_TYPE]: 'Invalid merchant type',
180
+ [SipayStatusCode.FAILED_TO_VERIFY_API_OPT]: 'Failed to verify submitted API opt',
181
+ [SipayStatusCode.INVALID_CARD_NUMBER]: 'Invalid card number',
182
+ [SipayStatusCode.FILE_PROCESSING_ERROR]: 'File processing error',
183
+ [SipayStatusCode.PARTIAL_RETURNS_NOT_ALLOWED]: 'Partial returns are not allowed for this transaction.',
184
+ [SipayStatusCode.PARTIALLY_SUCCESSFUL]: 'Partially successful',
185
+ [SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED_ALT]: 'The invoice id already processed',
186
+ [SipayStatusCode.CANCELLATION_URL_SHOULD_NOT_BE_BLANK]: 'Cancellation URL should not be blank',
187
+ };
188
+ // Status Code Categories
189
+ var SipayStatusCategory;
190
+ (function (SipayStatusCategory) {
191
+ SipayStatusCategory["SUCCESS"] = "success";
192
+ SipayStatusCategory["VALIDATION_ERROR"] = "validation_error";
193
+ SipayStatusCategory["AUTHENTICATION_ERROR"] = "authentication_error";
194
+ SipayStatusCategory["PAYMENT_ERROR"] = "payment_error";
195
+ SipayStatusCategory["MERCHANT_ERROR"] = "merchant_error";
196
+ SipayStatusCategory["CARD_ERROR"] = "card_error";
197
+ SipayStatusCategory["HASH_ERROR"] = "hash_error";
198
+ SipayStatusCategory["RECURRING_ERROR"] = "recurring_error";
199
+ SipayStatusCategory["SYSTEM_ERROR"] = "system_error";
200
+ })(SipayStatusCategory || (exports.SipayStatusCategory = SipayStatusCategory = {}));
201
+ /**
202
+ * Categorize status codes for better error handling
203
+ */
204
+ function getStatusCategory(statusCode) {
205
+ switch (statusCode) {
206
+ case SipayStatusCode.SUCCESSFUL:
207
+ case SipayStatusCode.REFUND_REQUEST_CREATED:
208
+ case SipayStatusCode.PARTIALLY_SUCCESSFUL:
209
+ return SipayStatusCategory.SUCCESS;
210
+ case SipayStatusCode.BASIC_VALIDATION:
211
+ case SipayStatusCode.ITEMS_VALIDATION_ERROR:
212
+ case SipayStatusCode.PRICE_TOTAL_MISMATCH:
213
+ case SipayStatusCode.QUANTITY_MUST_BE_INTEGER:
214
+ case SipayStatusCode.INVALID_INVOICE_ID:
215
+ case SipayStatusCode.INVALID_CHARACTER:
216
+ case SipayStatusCode.INVALID_CARD_NUMBER:
217
+ case SipayStatusCode.CANCELLATION_URL_SHOULD_NOT_BE_BLANK:
218
+ return SipayStatusCategory.VALIDATION_ERROR;
219
+ case SipayStatusCode.INVALID_CREDENTIALS:
220
+ case SipayStatusCode.PAYMENT_INTEGRATION_NOT_ALLOWED:
221
+ case SipayStatusCode.MERCHANT_NOT_ALLOWED_TOKEN_PAYMENT:
222
+ case SipayStatusCode.INVALID_TOKEN_OR_CLIENT_NUMBER:
223
+ return SipayStatusCategory.AUTHENTICATION_ERROR;
224
+ case SipayStatusCode.ORDER_FAILED:
225
+ case SipayStatusCode.PAYMENT_FAILED:
226
+ case SipayStatusCode.PAYMENT_TERM_NOT_SET:
227
+ case SipayStatusCode.REFUND_FAILED:
228
+ case SipayStatusCode.TRANSACTION_NOT_FOUND:
229
+ case SipayStatusCode.ORDER_NOT_YET_PROCESSED:
230
+ case SipayStatusCode.TRANSACTION_NOT_APPROVED:
231
+ return SipayStatusCategory.PAYMENT_ERROR;
232
+ case SipayStatusCode.MERCHANT_NOT_FOUND:
233
+ case SipayStatusCode.MERCHANT_POS_COMMISSION_NOT_SET:
234
+ case SipayStatusCode.MERCHANT_COMMISSION_NOT_DETERMINED:
235
+ case SipayStatusCode.MERCHANT_DAILY_TRANSACTION_LIMIT_EXCEEDED:
236
+ case SipayStatusCode.MERCHANT_DAILY_AMOUNT_LIMIT_EXCEEDED:
237
+ case SipayStatusCode.MERCHANT_MONTHLY_TRANSACTION_LIMIT_EXCEEDED:
238
+ case SipayStatusCode.MERCHANT_MONTHLY_AMOUNT_LIMIT_EXCEEDED:
239
+ case SipayStatusCode.MINIMUM_TRANSACTION_LIMIT_VIOLATED:
240
+ case SipayStatusCode.SUB_MERCHANT_NOT_FOUND:
241
+ case SipayStatusCode.INVALID_MERCHANT_TYPE:
242
+ return SipayStatusCategory.MERCHANT_ERROR;
243
+ case SipayStatusCode.CREDIT_CARD_BLOCKED:
244
+ case SipayStatusCode.MERCHANT_CARD_TRANSACTION_NOT_ALLOWED:
245
+ case SipayStatusCode.CARD_PROGRAM_MISMATCH:
246
+ case SipayStatusCode.FOREIGN_CARDS_NOT_ALLOWED:
247
+ case SipayStatusCode.NO_FOREIGN_CARD_COMMISSION:
248
+ case SipayStatusCode.CARD_TOKEN_SAVE_FAILED:
249
+ case SipayStatusCode.FAILED_TO_DELETE_CARD_TOKEN:
250
+ case SipayStatusCode.FAILED_TO_UPDATE_CARD_TOKEN:
251
+ return SipayStatusCategory.CARD_ERROR;
252
+ case SipayStatusCode.HASH_KEY_VALIDATION_ERROR:
253
+ case SipayStatusCode.INVALID_HASH_KEY:
254
+ case SipayStatusCode.HASH_KEY_MERCHANT_KEY_MISMATCH:
255
+ case SipayStatusCode.HASH_KEY_CUSTOMER_NUMBER_MISMATCH:
256
+ case SipayStatusCode.HASH_KEY_CARD_HOLDER_NAME_MISMATCH:
257
+ case SipayStatusCode.HASH_KEY_CARD_NUMBER_MISMATCH:
258
+ case SipayStatusCode.HASH_KEY_EXPIRY_MONTH_MISMATCH:
259
+ case SipayStatusCode.HASH_KEY_EXPIRY_YEAR_MISMATCH:
260
+ case SipayStatusCode.HASH_KEY_CARD_TOKEN_MISMATCH:
261
+ return SipayStatusCategory.HASH_ERROR;
262
+ case SipayStatusCode.RECURRING_PAYMENT_VALIDATION_ERROR:
263
+ case SipayStatusCode.RECURRING_PLAN_UPDATE_FAILED:
264
+ case SipayStatusCode.FAILED_TO_ADD_DUPLICATE_PLAN_CARD:
265
+ return SipayStatusCategory.RECURRING_ERROR;
266
+ default:
267
+ return SipayStatusCategory.SYSTEM_ERROR;
268
+ }
269
+ }
270
+ /**
271
+ * Check if a status code indicates success
272
+ */
273
+ function isSuccessStatus(statusCode) {
274
+ return getStatusCategory(statusCode) === SipayStatusCategory.SUCCESS;
275
+ }
276
+ /**
277
+ * Check if a status code indicates an error
278
+ */
279
+ function isErrorStatus(statusCode) {
280
+ return !isSuccessStatus(statusCode);
281
+ }
282
+ /**
283
+ * Get human-readable description for a status code
284
+ */
285
+ function getStatusDescription(statusCode) {
286
+ return exports.SipayStatusDescriptions[statusCode] || 'Unknown status code';
287
+ }
288
+ /**
289
+ * Check if status code is retryable (temporary errors)
290
+ */
291
+ function isRetryableStatus(statusCode) {
292
+ const retryableStatusCodes = [
293
+ SipayStatusCode.ORDER_NOT_YET_PROCESSED,
294
+ SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED,
295
+ SipayStatusCode.INVOICE_ID_ALREADY_PROCESSED_ALT,
296
+ SipayStatusCode.MAXIMUM_TRANSACTION_LIMIT_VIOLATED,
297
+ ];
298
+ return retryableStatusCodes.includes(statusCode);
299
+ }
300
+ //# sourceMappingURL=status-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-codes.js","sourceRoot":"","sources":["../../src/types/status-codes.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,gBAAgB,EAEhB,cAAc,EAKf,MAAM,UAAU,CAAC;AAElB,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;IAiB7B,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;IA+BxB,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG9B"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SipayHttpClient = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
+ const types_1 = require("../types");
8
9
  class SipayHttpClient {
9
10
  constructor(config) {
10
11
  this.config = {
@@ -102,10 +103,20 @@ class SipayHttpClient {
102
103
  sipayError.type = 'SipayError';
103
104
  if (error.response?.data) {
104
105
  const errorData = error.response.data;
106
+ const statusCode = errorData.status_code;
105
107
  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;
108
+ errorData.status_description ||
109
+ errorData.message ||
110
+ (0, types_1.getStatusDescription)(statusCode) ||
111
+ 'Unknown Sipay error';
112
+ sipayError.status_code = statusCode;
113
+ sipayError.status_description =
114
+ errorData.status_description || (0, types_1.getStatusDescription)(statusCode);
115
+ // Add status code metadata
116
+ if (statusCode) {
117
+ sipayError.category = (0, types_1.getStatusCategory)(statusCode);
118
+ sipayError.isRetryable = (0, types_1.isRetryableStatus)(statusCode);
119
+ }
109
120
  }
110
121
  else if (error.request) {
111
122
  sipayError.message = 'Network error: No response received from Sipay';
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,8 @@ export declare function maskCardNumber(cardNumber: string): string;
19
19
  export declare function formatAmount(amount: number): string;
20
20
  /**
21
21
  * Format amount specifically for hash key generation
22
- * This should match PHP's format exactly: just the number as-is, no forced decimals
22
+ * This should match PHP's number_format($amount, 2, ".", "") exactly
23
+ * PHP always formats with 2 decimal places: 10.00, 125.50, etc.
23
24
  */
24
25
  export declare function formatAmountForHash(amount: number): string;
25
26
  /**
@@ -35,8 +36,15 @@ export declare function generatePaymentHashKey(total: number, installment: numbe
35
36
  */
36
37
  export declare function generateStatusHashKey(invoiceId: string, merchantKey: string, apiSecret: string): string;
37
38
  /**
38
- * Generate hash key for payment requests based on official Sipay documentation
39
- * This matches exactly the official JavaScript implementation in sipayEn.yaml
39
+ * Generate hash key for payment confirmation requests
40
+ * Order matches PHP SDK: merchant_key|invoice_id|status
41
+ */
42
+ export declare function generateConfirmPaymentHashKey(merchantKey: string, invoiceId: string, status: number, apiSecret: string): string;
43
+ /**
44
+ * Generate hash key for payment requests
45
+ * Exact 1:1 Node.js implementation of PHP's generateHashKey function
46
+ * Matches: $total . '|' . $installment . '|' . $currency_code . '|' . $merchant_key . '|' . $invoice_id
47
+ * with openssl_encrypt('aes-256-cbc') encryption
40
48
  */
41
49
  export declare function generateHashKey(parts: (string | number)[], appSecret: string): string;
42
50
  /**
@@ -69,4 +77,5 @@ export declare function validateHashKey(hashKey: string, secretKey: string): [st
69
77
  * Server expects: status|total|invoiceId|orderId|currencyCode
70
78
  */
71
79
  export declare function generateServerFormatHashKey(status: string, total: number, invoiceId: string, orderId: number, currencyCode: string, appSecret: string): string;
80
+ export * from './status-code-helpers';
72
81
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA0BrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAsCrF;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;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAsD1C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA0BrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA4BrF;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;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAsD1C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,MAAM,CAIR;AAGD,cAAc,uBAAuB,CAAC"}
@@ -1,4 +1,40 @@
1
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
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
2
38
  Object.defineProperty(exports, "__esModule", { value: true });
3
39
  exports.luhnCheck = luhnCheck;
4
40
  exports.validateCreditCard = validateCreditCard;
@@ -7,6 +43,7 @@ exports.formatAmount = formatAmount;
7
43
  exports.formatAmountForHash = formatAmountForHash;
8
44
  exports.generatePaymentHashKey = generatePaymentHashKey;
9
45
  exports.generateStatusHashKey = generateStatusHashKey;
46
+ exports.generateConfirmPaymentHashKey = generateConfirmPaymentHashKey;
10
47
  exports.generateHashKey = generateHashKey;
11
48
  exports.generateInvoiceId = generateInvoiceId;
12
49
  exports.validatePaymentData = validatePaymentData;
@@ -14,7 +51,8 @@ exports.maskCreditCard = maskCreditCard;
14
51
  exports.parseSipayError = parseSipayError;
15
52
  exports.validateHashKey = validateHashKey;
16
53
  exports.generateServerFormatHashKey = generateServerFormatHashKey;
17
- const crypto_1 = require("crypto");
54
+ const crypto = __importStar(require("crypto"));
55
+ const { createHash, createCipheriv, createDecipheriv } = crypto;
18
56
  /**
19
57
  * Utility functions for Sipay SDK
20
58
  */
@@ -70,13 +108,12 @@ function formatAmount(amount) {
70
108
  }
71
109
  /**
72
110
  * Format amount specifically for hash key generation
73
- * This should match PHP's format exactly: just the number as-is, no forced decimals
111
+ * This should match PHP's number_format($amount, 2, ".", "") exactly
112
+ * PHP always formats with 2 decimal places: 10.00, 125.50, etc.
74
113
  */
75
114
  function formatAmountForHash(amount) {
76
- // PHP uses: $total.'|' - which converts number to string without forcing decimal places
77
- // For integer amounts like 10, PHP outputs "10", not "10.00"
78
- // For decimal amounts like 10.5, PHP outputs "10.5", not "10.50"
79
- return amount.toString();
115
+ // Match PHP number_format($amount, 2, ".", "") - always 2 decimal places
116
+ return amount.toFixed(2);
80
117
  }
81
118
  /**
82
119
  * Generate hash key for payment requests
@@ -103,37 +140,40 @@ function generateStatusHashKey(invoiceId, merchantKey, apiSecret) {
103
140
  return generateHashKey(parts, apiSecret);
104
141
  }
105
142
  /**
106
- * Generate hash key for payment requests based on official Sipay documentation
107
- * This matches exactly the official JavaScript implementation in sipayEn.yaml
143
+ * Generate hash key for payment confirmation requests
144
+ * Order matches PHP SDK: merchant_key|invoice_id|status
145
+ */
146
+ function generateConfirmPaymentHashKey(merchantKey, invoiceId, status, apiSecret) {
147
+ const parts = [merchantKey, invoiceId, status.toString()];
148
+ return generateHashKey(parts, apiSecret);
149
+ }
150
+ /**
151
+ * Generate hash key for payment requests
152
+ * Exact 1:1 Node.js implementation of PHP's generateHashKey function
153
+ * Matches: $total . '|' . $installment . '|' . $currency_code . '|' . $merchant_key . '|' . $invoice_id
154
+ * with openssl_encrypt('aes-256-cbc') encryption
108
155
  */
109
156
  function generateHashKey(parts, appSecret) {
110
- try {
111
- // Join parts with pipe separator - exactly like official: data = total + '|' + ...
112
- const data = parts.join('|');
113
- // Generate random IV - exactly like official: crypto.createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 16)
114
- const iv = (0, crypto_1.createHash)('sha1').update(String(Math.random())).digest('hex').slice(0, 16);
115
- // Create password hash from app secret - exactly like official: crypto.createHash('sha1').update(app_secret).digest('hex')
116
- const password = (0, crypto_1.createHash)('sha1').update(appSecret).digest('hex');
117
- // Generate random salt - exactly like official: crypto.createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 4)
118
- const salt = (0, crypto_1.createHash)('sha1').update(String(Math.random())).digest('hex').slice(0, 4);
119
- // Create salt with password - get full 32-byte key
120
- const saltWithPasswordHash = (0, crypto_1.createHash)('sha256')
121
- .update(password + salt)
122
- .digest(); // Get Buffer directly, not hex string
123
- // Encrypt data using AES-256-CBC - exactly like official implementation
124
- const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', saltWithPasswordHash, // Use Buffer directly
125
- Buffer.from(iv, 'ascii'));
126
- // Official uses: cipher.update(padded_data, 'binary', 'base64'); cipher.final('base64');
127
- let encrypted = cipher.update(data, 'binary', 'base64');
128
- encrypted += cipher.final('base64');
129
- // Format the final hash key - exactly like official: iv + ':' + salt + ':' + encrypted
130
- const msgBundle = `${iv}:${salt}:${encrypted}`;
131
- // Replace / with __ - exactly like official: msg_encrypted_bundle.replace('/', '__')
132
- return msgBundle.replace(/\//g, '__');
133
- }
134
- catch (error) {
135
- throw new Error(`Hash key generation failed: ${error}`);
136
- }
157
+ const data = parts.join('|');
158
+ // Generate IV using SHA1 hash of random value
159
+ const iv = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 16);
160
+ // Generate password using SHA1 hash of app secret
161
+ const password = createHash('sha1').update(appSecret).digest('hex');
162
+ // Generate salt using SHA1 hash of random value
163
+ const salt = createHash('sha1').update(String(Math.random())).digest('hex').slice(0, 4);
164
+ // Create encryption key using SHA256 hash of password and salt
165
+ const saltWithPassword = createHash('sha256')
166
+ .update(password + salt)
167
+ .digest('hex')
168
+ .slice(0, 32);
169
+ // Encrypt data using AES-256-CBC
170
+ const cipher = createCipheriv('aes-256-cbc', saltWithPassword, iv);
171
+ let encrypted = cipher.update(data, 'binary', 'base64');
172
+ encrypted += cipher.final('base64');
173
+ // Bundle components and replace forward slashes with double underscores
174
+ let msgEncryptedBundle = `${iv}:${salt}:${encrypted}`;
175
+ msgEncryptedBundle = msgEncryptedBundle.replace(/\//g, '__');
176
+ return msgEncryptedBundle;
137
177
  }
138
178
  /**
139
179
  * Generate a unique invoice ID
@@ -245,21 +285,21 @@ function validateHashKey(hashKey, secretKey) {
245
285
  try {
246
286
  // Replace underscores with forward slashes (PHP compatibility)
247
287
  const normalizedHashKey = hashKey.replace(/_/g, '/');
248
- const password = (0, crypto_1.createHash)('sha1').update(secretKey).digest('hex');
288
+ const password = createHash('sha1').update(secretKey).digest('hex');
249
289
  const components = normalizedHashKey.split(':');
250
290
  if (components.length > 2) {
251
291
  const iv = components[0] || '';
252
292
  const saltHex = components[1] || '';
253
293
  const encryptedMsg = components[2] || '';
254
294
  // Generate salt exactly like PHP: hash('sha256', $password . $salt)
255
- const saltWithPassword = (0, crypto_1.createHash)('sha256')
295
+ const saltWithPassword = createHash('sha256')
256
296
  .update(password + saltHex)
257
297
  .digest('hex');
258
298
  // Create decipher with proper parameters
259
299
  // PHP's openssl_decrypt expects:
260
300
  // - IV as raw ASCII bytes (16-char hex string treated as ASCII)
261
301
  // - Key as binary from hex string (32 bytes for AES-256)
262
- const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', Buffer.from(saltWithPassword, 'hex').slice(0, 32), // 32-byte key from hex
302
+ const decipher = createDecipheriv('aes-256-cbc', Buffer.from(saltWithPassword, 'hex').slice(0, 32), // 32-byte key from hex
263
303
  Buffer.from(iv, 'ascii') // IV: 16-char hex string as ASCII bytes
264
304
  );
265
305
  let decrypted = decipher.update(encryptedMsg, 'base64', 'utf8');
@@ -287,4 +327,6 @@ function generateServerFormatHashKey(status, total, invoiceId, orderId, currency
287
327
  const parts = [status, formatAmountForHash(total), invoiceId, orderId.toString(), currencyCode];
288
328
  return generateHashKey(parts, appSecret);
289
329
  }
330
+ // Export status code helpers
331
+ __exportStar(require("./status-code-helpers"), exports);
290
332
  //# sourceMappingURL=index.js.map