Untitled
unknown
php
5 months ago
10 kB
4
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