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.
- package/lib/paytr.js +35 -13
- 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
|
-
|
|
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
|
-
|
|
198
|
-
if (
|
|
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;
|