quickpos 1.0.915 → 1.0.916

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 (2) hide show
  1. package/lib/paytr.js +35 -13
  2. package/package.json +1 -1
package/lib/paytr.js CHANGED
@@ -170,7 +170,20 @@ class PayTR {
170
170
  const maxInstallment = params.maxInstallment || '0';
171
171
  const paymentType = params.paymentType || 'card';
172
172
 
173
- const rawString = `${this.merchantId}${userIp}${merchantOid}${email}${paymentAmount}${userBasket}${noInstallment}${maxInstallment}${currency}${this.testMode}`;
173
+ let rawString;
174
+
175
+ // DÜZELTME BURADA YAPILDI:
176
+ if (paymentType === 'eft') {
177
+ // Python örneğindeki EFT Hash yapısı:
178
+ // merchant_id + user_ip + merchant_oid + email + payment_amount + payment_type + test_mode
179
+ rawString = `${this.merchantId}${userIp}${merchantOid}${email}${paymentAmount}${paymentType}${this.testMode}`;
180
+ } else {
181
+ // Standart Kredi Kartı Hash yapısı:
182
+ // merchant_id + user_ip + merchant_oid + email + payment_amount + user_basket + no_installment + max_installment + currency + test_mode
183
+ rawString = `${this.merchantId}${userIp}${merchantOid}${email}${paymentAmount}${userBasket}${noInstallment}${maxInstallment}${currency}${this.testMode}`;
184
+ }
185
+
186
+ // generateToken fonksiyonu sonuna merchantSalt ekleyip şifreler
174
187
  const paytrToken = this.generateToken(rawString);
175
188
 
176
189
  const formData = new URLSearchParams();
@@ -180,22 +193,29 @@ class PayTR {
180
193
  formData.append('email', email);
181
194
  formData.append('payment_amount', paymentAmount);
182
195
  formData.append('paytr_token', paytrToken);
183
- formData.append('user_basket', userBasket);
184
196
  formData.append('debug_on', this.debugOn);
185
- formData.append('no_installment', noInstallment);
186
- formData.append('max_installment', maxInstallment);
187
- formData.append('user_name', params.userName);
188
- formData.append('user_address', params.userAddress);
189
- formData.append('user_phone', params.userPhone);
190
- formData.append('merchant_ok_url', params.merchantOkUrl);
191
- formData.append('merchant_fail_url', params.merchantFailUrl);
192
- formData.append('timeout_limit', params.timeoutLimit || '30');
193
- formData.append('currency', currency);
194
197
  formData.append('test_mode', this.testMode);
195
198
  formData.append('payment_type', paymentType);
199
+
200
+ // timeout_limit parametresi (Python kodunda vardı, ekleyelim)
201
+ formData.append('timeout_limit', params.timeoutLimit || '30');
196
202
 
197
- if (params.bank) formData.append('bank', params.bank);
198
- if (params.lang) formData.append('lang', params.lang);
203
+ // EFT değilse diğer parametreleri de ekleyelim
204
+ if (paymentType !== 'eft') {
205
+ formData.append('user_basket', userBasket);
206
+ formData.append('no_installment', noInstallment);
207
+ formData.append('max_installment', maxInstallment);
208
+ formData.append('user_name', params.userName);
209
+ formData.append('user_address', params.userAddress);
210
+ formData.append('user_phone', params.userPhone);
211
+ formData.append('merchant_ok_url', params.merchantOkUrl);
212
+ formData.append('merchant_fail_url', params.merchantFailUrl);
213
+ formData.append('currency', currency);
214
+ if (params.lang) formData.append('lang', params.lang);
215
+ } else {
216
+ // EFT ise banka parametresi varsa ekle
217
+ if (params.bank) formData.append('bank', params.bank);
218
+ }
199
219
 
200
220
  const response = await axios({
201
221
  method: 'POST',
@@ -208,8 +228,10 @@ class PayTR {
208
228
  if (result.status === 'success') {
209
229
  return { status: 'success', token: result.token };
210
230
  } else {
231
+ // Hata detayını daha net görelim
211
232
  throw new Error(result.reason || 'PayTR Token alma hatası');
212
233
  }
234
+
213
235
  } catch (error) {
214
236
  if (error.response) throw new Error(`PayTR API Error: ${error.response.data.reason || error.response.statusText}`);
215
237
  throw error;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quickpos",
3
- "version": "1.0.915",
3
+ "version": "1.0.916",
4
4
  "main": "app.js",
5
5
  "scripts": {
6
6
  "test": "node test.js"