Git Product home page Git Product logo

Comments (14)

metin71 avatar metin71 commented on September 26, 2024 1

sms dogrulama sorunu güncellemeniz ile giderilmiş. uzun süredir bekleyince dosyalar eski kalmış...

yanlız sms dogrulama onaylıyor şifreyi doğruluyor fakat. gib kendi üzerinden fatura imzasız görünüyor.? sistem hatada vermiyor..

from efatura.

brkygncn avatar brkygncn commented on September 26, 2024 1

@metin71 Metin Bey kusura bakmayın, normalde yazıyı ** içerisinde koyarsanız GitHub'ın style markdowna göre yazıyı kalın yapar, vurgu amaçlı kullanmıştım, ama kod içerisinde kalınca çalışmıyormuş. Furkan Bey güncelleme yapıncaya kadar geçici olarak aşağıdaki kodları kullanabilirsiniz.

@furkankadioglu Furkan Bey, pull requesti en yakın zamanda göndereceğim. Ancak sonradan filtreleme yerine jp üzerindeki table'da ETTN verisini göndererek de filtreye ihtiyaç duymadan halledebilir miyiz? Bende maalesef dokümantasyon yok, eğer linkini paylaşabilirseniz ben de inceleyebilirim.

Bu fonksiyon Onaylanmamış ve Silinmemiş tüm faturaları tek seferde onaylar

public function getUndeletedInvoicesFromAPI($startDate, $endDate)
    {
        $parameters = [
            "cmd" => "EARSIV_PORTAL_TASLAKLARI_GETIR",
            "callid" => Uuid::uuid1()->toString(),
            "pageName" => "RG_BASITTASLAKLAR",
            "token" => $this->token,
            "jp" => '{"baslangic":"' . $startDate . '","bitis":"' . $endDate . '","hangiTip":"5000/30000", "table":[]}'
        ];

        $body = $this->sendRequestAndGetBody(self::DISPATCH_PATH, $parameters);
        $this->checkError($body);

        // Array tipinden verilen tarih aralığında yer alan faturalar dönüyor
		$data = $body['data'];
		$dataFiltered = array();
		foreach($data as $item){
			if($item["onayDurumu"] == "Onaylanmadı"){
				array_push($dataFiltered, $item);
			}
		}
        $this->invoices = $dataFiltered;

        return $dataFiltered;
		//return $this->invoices;
    }

Bu fonksiyon Onaylanmamış ve ETTN'i belirtilen faturayı onaylar, ek olarak $ettn verisini paslamanız gerekir. Bu kodu henüz denemedim syntax hatası verebilir, ben tek seferde hepsini gönderdiğim yukarıdaki fonksiyonu kullanıyorum.

public function getEttnInvoiceFromAPI($startDate, $endDate, $ettn)
    {
        $parameters = [
            "cmd" => "EARSIV_PORTAL_TASLAKLARI_GETIR",
            "callid" => Uuid::uuid1()->toString(),
            "pageName" => "RG_BASITTASLAKLAR",
            "token" => $this->token,
            "jp" => '{"baslangic":"' . $startDate . '","bitis":"' . $endDate . '","hangiTip":"5000/30000", "table":[]}'
        ];

        $body = $this->sendRequestAndGetBody(self::DISPATCH_PATH, $parameters);
        $this->checkError($body);

        // Array tipinden verilen tarih aralığında yer alan faturalar dönüyor
        $data = $body['data'];
        $dataFiltered = array();
        foreach($data as $item){
	        if($item["onayDurumu"] == "Onaylanmadı" AND $item["ettn"] == $ettn ){
		        array_push($dataFiltered, $item);
	        }
        }

        $this->invoices = $dataFiltered;

        return $dataFiltered;
		//return $this->invoices;
    }

Verileri fonksiyona iletme tarafında da ben aşağıdaki şekilde bir yapı kullanıyorum,

$client = new InvoiceManager();

$client->setUsername($gibk)->setPassword($gibs);

$client->setDebugMode(false);
$client->connect();

$dateStart = "23/01/2021";
$dateEnd = date("d/m/Y");
$client->getUndeletedInvoicesFromAPI($dateStart, $dateEnd);

$result = $client->verifySMSCode($_POST["sifre"] , $_POST["id"]);
$client->logOutFromAPI();		

from efatura.

furkankadioglu avatar furkankadioglu commented on September 26, 2024

Test sunucusunda deniyorsanız eğer orada SMS doğrulama modülü yok dolayısıyla gerçek hesapta denemeniz gerekiyor. Sorun burda olabilir mi?

Faturanın idsini belirtiyorsunuz. Şu örnek işinize yarayacaktır:
$oldInvoice = new Invoice(); $oldInvoice->setUuid("e8277cfa-4ac9-11ea-a5b5-acde48001122"); $client->setInvoice($oldInvoice)->getInvoiceFromAPI();

from efatura.

metin71 avatar metin71 commented on September 26, 2024

dediğiniz gibi yapıyorum.. gerçek serverda deniyorum... bu hatayı alıyorum bu seferde..

Array
(
[error] => 1
[messages] => Array
(
[0] => Genel Sistem Hatası:java.lang.NullPointerException
)

[metadata] => Array
    (
        [optime] => 20210206164929+0300
    )

)

Fatal error: Uncaught exception 'furkankadioglu\eFatura\Exceptions\ApiException' with message 'Sunucu taraflı bir hata oluştu!' in
/public_html/admin/vendor/efatura/furkankadioglu/efatura/src/InvoiceManager.php:324 Stack trace: #0 public_html/admin/vendor/efatura/furkankadioglu/efatura/src/InvoiceManager.php(783): furkankadioglu\eFatura\InvoiceManager->checkError(Array) #1
/public_html/admin/faturaimzala.php(48): furkankadioglu\eFatura\InvoiceManager->verifySMSCode('IR17U9', '3dkksgpzma1u5y', '4c27efb2-6803-1...') #2 {main} thrown in /public_html/admin/vendor/efatura/furkankadioglu/efatura/src/InvoiceManager.php on line 324

from efatura.

furkankadioglu avatar furkankadioglu commented on September 26, 2024

Acaba projeyi güncelleyip son halini atar mısınız sorun yaşadığınız yeri anlayalım ona göre bir çözüm üretelim.

from efatura.

metin71 avatar metin71 commented on September 26, 2024

furkan bey.. güncel halini attım.. imza için uuid leri gönderiyorum sms geliyor onaylıyorum.. onaylandı diye 1 sonucu alıyorum.. ama gibin sitesinde imzasız görünüyor halen herhangi bir hata almıyorum..
imza token ve onaylama tokenları değişiyor onlar ile alakalı olabilir mi ?

from efatura.

metin71 avatar metin71 commented on September 26, 2024

İmzalama için kullandığım kodlar bu şekilde.. yanlış bir durum varmı anlamayamadım.. sistemde kayıtlı telefon numara ve kayıtlı olmayan telefon numarasında imzalama deniyorum.. sonuç hep başarılı diyor ama gib in sitesinden baktığımda onaylı görünmüyor anlayamadım sorunu..

<?
$client = new InvoiceManager();
$client->setUsername($gibk)->setPassword($gibs);
$client->connect();

$rsbul = mysql_query("select * from fatura where id='$id' order by id desc");
$rssay = mysql_num_rows($rsbul);
if($rssay > 0){
	while($rs = mysql_fetch_array($rsbul)){
		
$oldInvoice = new Invoice(); 
$oldInvoice->setUuid($rs["c16"]); 
$client->setInvoice($oldInvoice)->getInvoiceFromAPI();

if(@$sonuc=="ok"){
	$sonuc = $client->verifySMSCode($_POST["sifre"],$_POST["id"]);
	if($sonuc=="1"){
		echo "SMS şifreniz doğrulandı, işlem başarılı.";
		$client->logOutFromAPI();
	}else{
		echo "SMS şifrenizi yanlış girdiniz";
	}
}else{
	
$ids = $client->sendSMSVerification("5057099335");
?>
<form action="" method="post">
<input type="hidden" name="sonuc" value="ok"/>
<input type="hidden" name="id" value="<?=$ids?>"/>
<input type="text" name="sifre" placeholder="Sms Şifresi"/>
<input type="submit" value="Gönder"/>
</form>
<?
}

	}
}
?>

from efatura.

brkygncn avatar brkygncn commented on September 26, 2024

@furkankadioglu Bey, Invoice Manager üzerinde aşağıda bahsettiğiniz kodu tanımlamak maalesef bir işe yaramıyor. Çünkü verifySMSCode ile gönderilen veri 'DATA' => $this->**invoices**, ancak getInvoiceFromAPI ile çağırdığınız veriler $this->**invoice**'e set ediliyor.

$oldInvoice = new Invoice(); $oldInvoice->setUuid("e8277cfa-4ac9-11ea-a5b5-acde48001122"); $client->setInvoice($oldInvoice)->getInvoiceFromAPI();

Ben sorunu getInvoicesFromAPI'yi kopyalayıp, bir ETTN filtresi koyarak aştım sorunu. getInvoicesFromAPI'yi kullanmanın güzel yanı ise tüm faturaları tek seferde onaya göndermenize de izin veriyor :)

  public function verifySMSCode($code, $operationId)
  {
      $data = [
          "SIFRE" => $code,
          "OID" => $operationId,
          'OPR' => 1,
          'DATA' => $this-> **invoices**,
      ];
     ...
}
    public function getInvoiceFromAPI(Invoice $invoice = null)
    {
        if ($invoice != null) {
            $this-> **invoice** = $invoice;
        }
        ...
    }
    public function getInvoicesFromAPI($startDate, $endDate)
        ...
        $this-> **invoices** = $body['data'];

        return $body;
    }

from efatura.

furkankadioglu avatar furkankadioglu commented on September 26, 2024

@brkygncn Paylaştığınız için çok teşekkür ederim, pull request gönderme imkanınız olur mu acaba?

from efatura.

metin71 avatar metin71 commented on September 26, 2024

paylaşımınız içn tşkler.. bu şekilde hata veriyor bende.. gönderdiğiniz gibi kodlamaları düzenledim ama.. bu hatayı alıyorum.. normalde php 5.6 ya göre çalışıyorum düzenlemeleri o şekilde yapyıroum.. ama bu düzeltme 5.6 ve 7.3 hata veriyor.. anlayamadım malesef.. sizin kullandıgınız invoicemanager.php dosyasını tüm paylaşırsanız.. hatamızı görelim..

Parse error: syntax error, unexpected '**' (T_POW), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in www\admin\vendor\efatura\furkankadioglu\efatura\src\InvoiceManager.php on line 581

from efatura.

metin71 avatar metin71 commented on September 26, 2024

tşkler.. burak bey.. gönderdiğiniz fonksiyonlar ile ettn ve tarih aralığına göre imzalama işlemi yapıyor.. şuan için önemli bir sorunum kalmadı sayenizde...

from efatura.

ibrcan avatar ibrcan commented on September 26, 2024

@furkankadioglu Başta sizlere çok teşekkür etmek istedim. Projeniz çok işime yaradı.
@brkygncn vermiş olduğunuz fonksiyon çok işime yaradı. projeye dahil edilmesi gerektiğini düşünüyorum. Ancak filtreleme yaptığımızda sadece 1 fatura onaylayabiliyoruz. Ben filtrelemeyi dizi şeklinde kullandım. Dizi şeklinde gönderdiğimizde istediğimiz faturayı onaylayabiliyoruz.
Bu fonksiyonun projeye dahil edilebileceğini düşünüyorum.

public function getEttnInvoiceFromAPIArray($startDate, $endDate, $ettn)
    {
        $parameters = [
            "cmd" => "EARSIV_PORTAL_TASLAKLARI_GETIR",
            "callid" => Uuid::uuid1()->toString(),
            "pageName" => "RG_BASITTASLAKLAR",
            "token" => $this->token,
            "jp" => '{"baslangic":"' . $startDate . '","bitis":"' . $endDate . '","hangiTip":"5000/30000", "table":[]}'
        ];
        $body = $this->sendRequestAndGetBody(self::DISPATCH_PATH, $parameters);
        $this->checkError($body);
        $data = $body['data'];
        $dataFiltered = array();
        foreach($data as $item){
	        if($item["onayDurumu"] == "Onaylanmadı" AND in_array($item["ettn"], $ettn)){
		        array_push($dataFiltered, $item);
	        }
        }
        $this->invoices = $dataFiltered;
        return $dataFiltered;
    }

from efatura.

furkankadioglu avatar furkankadioglu commented on September 26, 2024

@ibrcan ben teşekkür ederim, hem kullandığınız hem katkıda bulunduğunuz için. @brkygncn gibi katkıda bulunan, ilgilenenler olduğu için çok memnunum ve kendisine de ayrıca teşekkür ederim.

getEttnInvoiceFromAPIArray fonksiyonunu ekledim, lütfen birdaha ki sefere PR gönderin ki katkıda bulunanlara sizi de ekleyebiliyim.

Kolay gelsin 🙂

from efatura.

SahinOzden avatar SahinOzden commented on September 26, 2024

@furkankadioglu Öncelikle elinize emeğinize sağlık. Katkı veren arkadaşlara da ayrıca teşekkürler... getEttnInvoiceFromAPIArray ekledim demişsiniz ben de nerde bu metod diye arıyorum. Composer ile indirdiğim için dosyalar eskide kalmış. şimdi zip ile indirdim composer ile indirilenlerin üzerine kaydettim teşekkürler... composerdan indirilen dosyalarla arasında çok fark var. 3 gündür çalışmayan kısımları çalıştırmaya çabalıyorum. Bir çok yerini düzeltmiştim ki bu issuelere bakmak sonradan aklıma geldi. Composer güncellemesi de yaparsanız süper olur naçizane tavsiyem...

from efatura.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.