Untitled
unknown
php
a year ago
10 kB
7
Indexable
<?php
require_once 'Response.php';
class ApiFunctions {
private $client_id;
public function __construct($client_id) {
$this->client_id = $client_id;
}
// Bin taksit bilgilerini yazdır
public function installment($bin) {
// Kart Bilgileri
$binlist = DB::queryFirstRow("SELECT * FROM `bank_binlist` WHERE bin = %s", $bin["cardbin"]);
if (!$binlist) {
return Response::json(['status' => 212, 'error' => 'bin_Error', 'message' => 'Bin Numarası Sistemde Bulunamadı'], 212);
}
// Kart Bilgileri Oluştur
$cardinfo = [
'binNumber' => (int)$binlist['bin'],
'issuerBank' => $binlist['bank_name'],
'brand' => $binlist['card_brand'],
'programType' => $binlist['card_program'],
'cardCompany' => (int)$binlist['card_company'],
'cardType' => ($binlist['card_type'] === 'Debit Card') ? 'debitcard' : 'creditcard',
];
// Ana sorgu
$result = DB::query(
"SELECT i.*, m.id AS modulid, m.app_name AS matched_installment, c.default_installment
FROM bank_binlist b
LEFT JOIN installment i ON b.card_program = i.card_program
LEFT JOIN customers c ON c.id = i.customers_id
LEFT JOIN poslist_key m ON m.app_name = JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.ana_pos')) AND m.id = i.modul_id
WHERE b.bin = %s
AND i.card_program = b.card_program
AND i.customers_id = %s
AND i.status = %s
AND JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.ana_pos')) IS NOT NULL
AND m.id IS NOT NULL
ORDER BY i.installment ASC;",
$binlist['bin'], $this->client_id, 1
);
$listArray = [];
// Tetikleyici kontrolü
$trigger = DB::queryFirstRow("SELECT * FROM `triggers` WHERE customers_id = %s AND card_program = %s AND status = %s",
$this->client_id, $binlist['card_program'], 1
);
$triggeredInstallments = $trigger ? json_decode($trigger['installment'], true) : [];
foreach ($result as $var) {
$installment = (int)$var["installment"];
$json = json_decode($var['default_installment'], true);
$tek_cekim = $json["tekcekim"];
$ana_pos = $json["ana_pos"];
// Tetikleyici kontrolü yap
if (in_array($installment, $triggeredInstallments)) {
// Eğer taksit tetikleyicide varsa, tetikleyici pos_name ile ekle
$trigger_set = DB::queryFirstRow("SELECT * FROM `installment` WHERE modul_id = %s AND installment = %s AND card_program = %s",
$trigger["modul_id"], $installment, $trigger["card_program"]
);
$listArray[] = [
'pos_id' => (int)$trigger_set["modul_id"],
'ins_id' => (int)$trigger_set["id"],
'installment' => (int)$trigger_set["installment"],
'commission' => $trigger_set["commission"],
'program' => $trigger_set["card_program"],
'pos' => $trigger['pos_name'],
];
continue; // Tetikleyici devreye girdiği için döngüyü geç
}
// Debit kart için tek çekim POS kullanımı
if ($cardinfo['cardType'] === 'debitcard' && $installment === 1) {
$default_pos = DB::queryFirstRow("SELECT i.*, c.default_installment
FROM customers c
LEFT JOIN poslist_key p ON ( p.app_name = JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) )
LEFT JOIN installment i ON ( i.modul_id = p.id )
WHERE c.id = %s
AND i.card_program = %s
AND i.status = 1
AND i.installment = 1
AND JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) IS NOT NULL LIMIT 1",
$this->client_id, $binlist['card_program']
);
// Eğer default_pos yoksa, genel bir sorgu yap
if (!isset($default_pos)) {
$default_pos = DB::queryFirstRow("SELECT i.*, c.default_installment
FROM customers c
LEFT JOIN poslist_key p ON ( p.app_name = JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) )
LEFT JOIN installment i ON ( i.modul_id = p.id )
WHERE c.id = %s
AND i.status = 1
AND i.installment = 1
AND JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) IS NOT NULL LIMIT 1",
$this->client_id
);
}
$_posv = json_decode($default_pos['default_installment'], true);
// Tek çekim POS'unu ekleyin
$listArray[] = [
'pos_id' => (int)$default_pos["modul_id"],
'ins_id' => (int)$default_pos["id"],
'installment' => (int)$default_pos["installment"],
'commission' => $default_pos["commission"],
'program' => $default_pos["card_program"],
'pos' => $_posv["tekcekim"],
];
continue; // Tek çekim kullanıldıktan sonra döngüyü atla
}
// Debit kartta sadece 1 taksit listelenir, diğer taksitleri atla
if ($cardinfo['cardType'] === 'debitcard' && $installment !== 1) {
continue;
}
// Kredi kartı için tek çekim POS 1 taksit için
if ($cardinfo['cardType'] === 'creditcard' && $installment === 1) {
$default_pos = DB::queryFirstRow("SELECT i.*, c.default_installment
FROM customers c
LEFT JOIN poslist_key p ON ( p.app_name = JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) )
LEFT JOIN installment i ON ( i.modul_id = p.id )
WHERE c.id = %s
AND i.card_program = %s
AND i.status = 1
AND i.installment = 1
AND JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) IS NOT NULL LIMIT 1",
$this->client_id, $binlist['card_program']
);
// Eğer default_pos yoksa, genel bir sorgu yap
if (!isset($default_pos)) {
$default_pos = DB::queryFirstRow("SELECT i.*, c.default_installment
FROM customers c
LEFT JOIN poslist_key p ON ( p.app_name = JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) )
LEFT JOIN installment i ON ( i.modul_id = p.id )
WHERE c.id = %s
AND i.status = 1
AND i.installment = 1
AND JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) IS NOT NULL LIMIT 1",
$this->client_id
);
}
$_posv = json_decode($default_pos['default_installment'], true);
$listArray[] = [
'pos_id' => (int)$default_pos["modul_id"],
'ins_id' => (int)$default_pos["id"],
'installment' => (int)$installment,
'commission' => $default_pos["commission"],
'program' => $default_pos["card_program"],
'pos' => $_posv["tekcekim"],
];
continue; // Tek çekim kullanıldıktan sonra döngüyü atla
}
// Kredi kartı için 1 taksit dışındaki taksitlerde ana POS
if ($cardinfo['cardType'] === 'creditcard' && $installment !== 1) {
$listArray[] = [
'pos_id' => (int)$var["modulid"],
'ins_id' => (int)$var["id"],
'installment' => (int)$installment,
'commission' => $var["commission"],
'program' => $var["card_program"],
'pos' => $ana_pos,
];
}
}
// Eğer binlist varsa ama result içinde POS bulunmadıysa, tek çekim POS'u listele
if (empty($listArray)) {
$default_pos = DB::queryFirstRow("SELECT i.*, c.default_installment
FROM customers c
LEFT JOIN poslist_key p ON ( p.app_name = JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) )
LEFT JOIN installment i ON ( i.modul_id = p.id )
WHERE c.id = %s
AND i.status = 1
AND i.installment = 1
AND JSON_UNQUOTE(JSON_EXTRACT(c.default_installment, '$.tekcekim')) IS NOT NULL LIMIT 1",
$this->client_id
);
if ($default_pos) {
$_posv = json_decode($default_pos['default_installment'], true);
$listArray[] = [
'pos_id' => (int)$default_pos["modul_id"],
'ins_id' => (int)$default_pos["id"],
'installment' => 1,
'commission' => $default_pos["commission"],
'program' => $default_pos["card_program"],
'pos' => $_posv["tekcekim"],
];
}
}
return Response::json(['status' => 200, 'cardInfo' => $cardinfo, 'result' => $listArray]);
}
}
Editor is loading...
Leave a Comment