furkankadioglu / efatura Goto Github PK
View Code? Open in Web Editor NEWeArşiv üzerinden Fatura Oluşturucu
Home Page: https://furkankadioglu.github.io/efatura/
License: MIT License
eArşiv üzerinden Fatura Oluşturucu
Home Page: https://furkankadioglu.github.io/efatura/
License: MIT License
Test sunucusundan çıkıp normal sunucuya geçmeyi yapamayanlar için $client->setDebugMode(true)->setTestCredentials();
kodu test aşamasını sağlarken bu satırı yorum satırına çevirip yeni satırda $client->setDebugMode(false);
ekleyerek test sunucusundan çıkıp ana işleme geçebilirsiniz.
faturaları tarih aralığıyla elde edebiliyoruz veya bizde fatura kodu olan bir faturayı API'den sorgulayabiliyoruz fakat fatuanın iptal, onaylı veya taslak olduğu bilgisini nasıl öğrenebileceğimi bulamadım.
Cevabınız için şimdiden teşekkürler.
$client->getInvoicesFromAPI("01/01/2020", "19/05/2020") fonksiyonu kendi içerisinde çalışmıyor. InvoiceManager.php'ye de baktım fakat ekrana bir hata yazdırmıyor ve kendinden sonraki satırları da çalıştırmıyor. Ör; https://prnt.sc/sk8wue görselinde koddan sonraki test yazısı ve devamındaki kodlar çalışmıyor. Php uyumluluğu vb olabilir mi? Sıfırdan güncel şekilde şuan kurulum yaptım. PHP Sürüm; 7.2.24
Merhaba,
Gib portala fatura bilgisini gönderdikten sonra URL adresi alıyoruz , ama url adresi her seferinde zaman aşımına uğradı hatası veriyor sorun çözümü nasıl olabilir ?
2. Bir konu ise "Var Olan" bir faturayı sorgulama yaptığımda aşağıdaki hatayı alıyorum. Sebebi nedir ?
İşlem :
$oldInvoice = new Invoice();
$oldInvoice->setUuid("XXXXX");
$sovc= $client->setInvoice($oldInvoice)->getInvoiceFromAPI();
Cevap :
Array
(
[hata] => Düzenlenmek üzere fatura bilgileri getirilemedi. Hata kodu: 1-1775
)
Konu ile ilgili yardımlarınızı rica ediyorum, Özellikle pdf olarak almak veya html olarak alma konusunda (Var olan fatura için)
Merhaba,
aşağıdaki method ile sms kodunu ve operasyon numarasını gönderiyorum sonuç true dönmesine rağmen fatura onaylanmıyor. Daha önce bu sorunla karşılaşan oldu mu?
$client->verifySMSCode($request->code, $invoice->operation_id);
NOT: Kendi özel projemde kullanacağım yasal mevzuatta bir problem oluşturur mu ? Herhangi bir yerden izin almam gerekiyor mu ?
Merhaba, elinize sağlık
Projenin PHP 7.4.15 üstü desteği geldimi? Çünkü komik sorunlar yaşıyorum. Sunucum 7.2.24 ile çalışıyor ve bu kütüphaneye uygun ancak bu durumda Composer autoload kullandığımda hata veriyor.
Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0". You are running 7.2.24. in /home/dev/public_html/vendor/efatura-furkankadioglu/composer/platform_check.php on line 24
Bu durumda kütüphaneyi kullanacağım küçük bir versiyon aralığı kalıyor oda 7.3 :)
Öncelikle bu ince işçilik için teşekkür ederim.
Ancak aşağıdaki imzalama aşamasında "Bu işlem için yetkiniz yok" diye hata dönüyor.
$client->signDraftInvoice();
İmzalamadan önce sms onayı yapmak mı gerekiyor? Eğer öyleyse telefona gelen sms kodunu ekrana girmek gerekeceği için fatura oluşturma ve imzalama aşamalarının tamamı sunucu tarafında otomatik yapılamayacak anlamına mı geliyor?
merhaba gib kullanıcı adı şifre ile bu yapı üzerinden adıma kesilen faturaların görünümlerini görmek indirmek mümkünmü?
söyle söyleyeyim interaktif vergi dairesinde adımıza kesilen 1 haftalık tarih aralığı ile faturalar görüntüleniyor ancak sadece tutar kdv vs. içerik vb kalemler görünmüyor bunu görüntüleme mümkünmü? yada seçilen faturanın içerigine nasıl erişilir. bir örnek varmıdır.? teşekkürler
Merhaba,
Sms gönderiminde "sunucu kaynaklı bir hata oluştu" hata mesajını alıyorum. sanırım daha önce de vardı fakat düzeltilmişti. Yine aynı problem mi var acaba?
Gerçek user ile giriş yaptığımda fatura oluşturulamadı hatası alıyorum.
Fakat test kullanıcıda bu hatayı alıyorum.
Bu sorunu yaşayanlar var mı ?
Merhaba,
Bu sorunun çözümünü bulan var mı arkadaşlar? verifySMSCode fonksiyonu 1 sonucu veriyor ama faturayı yine de onaylamıyor.
1.9.4 e güncelledim yine aynı...
Faturaları onay için topladığımız getInvoicesFromAPI fonksiyonu maalesef silinmiş faturaları da getirdiği için onaya giden faturalar arasında silinmiş faturalar da gönderilip onaylanıyor. Burada tabii ki silinmiş faturayı onaylayan GİB'i sorgulamak lazım ancak ben çözümü aşağıdaki gibi bir fonksiyon daha ekleyerek, dönen faturalardan sadece "Onaylanmadı" olanları geri gönderiyorum. API erişimim olmadığı için daha nitelikli bir çözüm bulamadım. Belki daha istek aşamasında sadece onaylanmayanları da getirebiliriz.
public function getNotDeletedInvoicesFromAPI($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;
}
$oldInvoice = new Invoice();
$oldInvoice->setUuid("e8277cfa-4ac9-11ea-a5b5-acde48001122");
$client->setInvoice($oldInvoice)->getInvoiceFromAPI();
Bu şekilde 1 adet faturayı rahatlıkla çekebiliyoruz, peki bundan 50-100 adet olsa nasıl çekebilirdik?
Yardımcı olur musunuz, iyi çalışmalar dilerim :)
Bu yazılım için çok teşekkürler. Fakat aşamadığım bir sıkıntı faturanın nasıl imzalanacağı?
Örnek bir kodla yardımcı olabilirseniz çok sevinirim.
toplu için denediğim :
$client = new InvoiceManager();
$client->setCredentials("xxx", "xxx");
$client->getCredentials();
$client->connect();
$veri = $client->getInvoicesFromAPI("25/12/2021", "25/12/2021");
echo $client->sendSMSVerification("xxx");
tekil için denediğim:
$client = new InvoiceManager();
$client->setCredentials("xxx", "xxxx");
$client->getCredentials();
$client->connect();
$oldInvoice = new Invoice();
$oldInvoice->setUuid($fatura_id);
$client->setInvoice($oldInvoice)->getInvoiceFromAPI();
echo $client->sendSMSVerification("xxx");
sms onaylamak için yaptığım:
$sms = post("kod"); // sms kodu
$opi = post("id"); // operasyon id
$client = new InvoiceManager();
$client->setCredentials("xxx", "xxx");
$client->getCredentials();
$client->connect();
echo $client->verifySMSCode($sms, $opi);
hocam merhaba;
index.php'den aşağıdaki hatayı almaktayım. Sebebini bulamadım. Yardımlarınız ricasıyla
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: self signed certificate in certificate chain (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\wamp64\www\efatura-master\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 201
İyi Çalışmalar
html olarak görüntüleme yaptığımda gayet güzel iken pdf olarak açmak istediğimizde barkod kısmı yok ve fatura düzgün gözükmüyor. Bunun için ne yapabiliriz.
Merhaba,
Fatura kestik ve taslaklarda duruyor , kestiğimiz faturayı düzenleme yapabiliyormuyuz ?
Merhaba, serbest meslek makbuzu göndermek için bir yol varmıdır bu yapıda. teşekkürler
Merhabalar,
Fatura oluşturma işlemi başarıyla tamamladım ama çok önemli bir yerde takıldım kaldım sizlerden acil destek bekliyorum
Lütfen kod paylaşarak cevap vermenizi rica ediyorum.
Fatura oluşturduktan sonra o faturayı sms ile onay kısmını yapamadım bir türlü
faturaları tek tek onaylamak istiyorum ama ettn ile eşitledikten sonramı onaya vermemiz gerekiyor nasıl olacak bu :)
Warning: require(C:\xampp\htdocs\efatura\example/../vendor/autoload.php): Failed to open stream: No such file or directory in C:\xampp\htdocs\efatura\example\index.php on line 7
Fatal error: Uncaught Error: Failed opening required 'C:\xampp\htdocs\efatura\example/../vendor/autoload.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\efatura\example\index.php:7 Stack trace: #0 {main} thrown in C:\xampp\htdocs\efatura\example\index.php on line 7
Bu hatayı alıyorum bu konuda yardımcı olabilirmisiniz?
Arkadaşlar daha önce de sormuştum kusura bakmayın ama paket çok güzel çalışıyor. Normal entegratörden daha iyi valla. Mali mühür var, efatura mükellefiyim bunu kullanamam değil mi?
Test modunda fatura kesmeye çalışınca token bulunamadı hatası vermektedir. Sorgu detaylarına bakıldığında token null gelmektedir. Ama Normalede connect medhodu ile giriş yapıp faturaları listelemektedir. Yardımlarınızı rica ederim
Nedendir bilmiyorum ama sadece bu bağılılıkta bir sorun var, composer update ile güncelleme yapmıyor ve hep eski kodlar kalıyor. Sizce sorun nedir? Başka yol ile update var mıdır?
Adıma düzenlenen fatuaralar kısmında listelenen faturalar Nasıl Çekilebilir?
Ekran görüntüsü; https://prnt.sc/skexn3
öncelikle kodlamanız için tşkler.. eksiklerimi de yapabilirsem çok işime yarayacaktır..
sms dogrulama kısmını yapamadım.. telefon numarasına sms gönderimi sağlatıyorum ama verdiği kod ile gelen kodu gönderiyorum sunucu hatası diyor sürekli..
birde hangi faturayı onaylıyacağımızı nasıl ayarlıyoruz. çözemedim..
yardımcı olursanız sevinirim.. tşkler..
İndirme linki nasıl kullanılıyor? İşlemi yapınca link oluşuyor tıklayınca yetki hatası veriyor. Müşteriye indirme url sini mail atmak istiyorum. Nasıl yqpmalıyım
Hocam sunucu tarafında bir logout sınıfı var mı acaba ? Sunucudan 1 defa giriş yapınca portalda giriş görülüyor başka yerden giriş sağlanamıyor. İşlem bitişinde logout versek başka yerlerden de bağlatılar açılsa ?
Taslaklara kaydedilmiş faturayı sms doğrulaması için kod gönderdikten sonra gelen kodu giriyorum ancak,
genel Sistem Hatası:java.lang.NullPointerException
şeklinde bir hata dönüyor.
@furkankadioglu Bey merhaba,
Projenin composer ayarlarında php sürümü olarak 8 desteklememesinin bir sebebi var mı? Eğer yok ise bir PR göndereceğim
Merhaba
Öncelikle kodlar için teşekkür ederim. Aşağıda birkaç sorum bulunuyor cevaplarsanız çok mutlu olurum.
Teşekkür ederim.
İyi çalışmalar
Arkadaşlar herkese iyi çalışmalar.
Ürün bazlı değil de faturanın en altındaki
Ara Toplam
KDV
Genel Toplam
kısmına İskonto da ekleniyor. Hangi paremetreyle yapılıyor bilgisi olan var mı acaba?
Düzenleme: Çok basit gözümden kaçmış kusura bakmayın. "toplamIskonto" => "0", tabiki :)
Öncelik çalışmalarınızda başarı dilerim aklıma takılan bir kaç şey var
1- Uygulama fonksiyonunda bulunan getCompanyInfo() test kullanıcısı ile çalıştırdığımda
Array ( [data] => Array ( [unvan] => [adi] => [soyadi] => [vergiDairesi] => ) [metadata] => Array ( [optime] => 20210526164754+0300 ) ) dize geliyor ama bilgiler boş dönüyor. Test kullanıcısı ile ilgili olabilirmi
2- Bize kesilen fatura bilgilerini nasıl çekebiliyoruz
3- sendSMSVerification() fonsiyonunda sms doğrulaması için dönen oid bilgisi bir uuid ile ilişkilimi yoksa herhangi bir taslak fatura için kullanılabiliyormu Ayrıca earsivportal entegrasyonu için teknik bir bülten varmıdır ????
Yeni bir fatura taslağı oluşturmaya çalıştığım zaman sunucudan teknik bir hata oluştu mesajı alıyordum.
$fatura_detaylari["malHizmetTable"] dizide bulunan iskontoArttm anahtarı olmaz ise iskontolu bir fatura oluştururken sıkıntı oluyormu bilmiyorum ancak iskontosuz fatura taslağı oluştururken bu değeri kaldırdım ve iskontoNedeni isminde başka bir boş key oluşturarak problemi çözdüm.
@furkankadioglu 2.00 yeni version için tek ve/veya çoklu seçipte fatura onaylama ekleyebilir misiniz?
Merhaba hocam. ben bu apiyi sistemime kurdum. bütün fonksiyonlar aktif çalışıyor. fakat yeni fatura oluşturmak isteyince Teknik bir hata oluştu diye bir hata mesajı dönüyor. fatura değişkenlerini defalarca kontrol ettim. number karakterleri string e çevirdim bu kez string array uyarısı aldım. toplamlarda vs hiçbir sorun yok. aynı faturayı portaldan kesiyorum kayıt yapıyor. ama api ile gönderince Hata veriyor. neden olabilir. nerede hata yapıyoruz sizce.
1 | 0.0012 | 408520 | {main}( ) | ...\index.php:0
2 | 0.0066 | 440760 | furkankadioglu\eFatura\InvoiceManager->setTestCredentials( ) | ...\index.php:19
3 | 0.0066 | 440856 | GuzzleHttp\Client->post( ) | ...\InvoiceManager.php:181
4 | 0.0066 | 440856 | GuzzleHttp\Client->request( ) | ...\ClientTrait.php:95
5 | 0.1025 | 629200 | GuzzleHttp\Promise\RejectedPromise->wait( ) | ...\Client.php:187
bu şekilde hata alıyorum yardımcı olurmusun
Merhaba Furkan,
Öncelikle bu paketi bizimle paylaştığın için teşekkür ederim.
Aşağıdaki ApiException metodunda print_r fonksiyonuna true parametresi gönderilmediği için exceptionlar yakalansa bile print_r datayı response ediyor. Dolayısıyla exceptionun yakalanmasının bir anlamı kalmıyor.
efatura/src/InvoiceManager.php
Line 327 in 0aa05ac
Teşekkür ederim, iyi çalışmalar.
Merhabalar, 2 gün önce çalışan yazılım artık çalışmıyor, earsiv portala girince değiştiğini görüyorum, değişiklik sebebiyle kodlar yerlerine oturmuyor, hatayı çözmek için çok fazla gezindim ancak bir yola varamadım, lütfen yardımcı olur musunuz çok acil ? :/
#Sorun Çözüldü - Pdf çıktısını , html olarak düzelttim anlamsızca sorunsuz çalıştı :) Sanırım mpdf te sorun oluştu.
Başlıkda ki hatayı veriyor iki gündür çözemedim yardımcı olursanız sevinirim.
Merhaba Furkan,
Banka entegrasyonuna vs gerek kalmamış sanırım. Gerçekten harika iş çıkarmışsın. Tebrik ederim :) Oluşturulan PDF dosyasının fatura UUID dosya adı ile sunucuya kaydedilme özelliğini bulamadım. Bu özellik yoksa eklediğinde benim çok bir eksiğim kalmayacak :)
Şimdilik şöyle bir çözüm düşünülebilir sanırım:
public function getInvoicePDF(Invoice $invoice = null, $signed = true, $savePath = null)
{
$data = $this->getInvoiceHTML($invoice, $signed);
$mpdf = new Mpdf();
$mpdf->WriteHTML($data);
$fileName = $invoice->getUuid();
return empty($savePath) ? $mpdf->Output() : $mpdf->Output($savePath . "/" . $fileName . ".php", "F");
}
Çok teşekkürler.
Hocam Merhabalar,
Öncelikle paylaşımınız için çok teşekkürler. Laravel içerisine kurmaya çalıştığımda ramsey/uuid 2.9 sürümünü kuramıyor. bu nedenle projeme dahil edemiyorum. bununla alakalı bir güncelleme yapma durumunuz olur mu veya bu konuda farklı türden öneriniz varsa yardımcı olursanız çok memnun olurum. Şimdiden teşekkürler...
Merhaba hayırlı akşamlar kardeşim, https://github.com/furkankadioglu/efatura bu apin için öncelikle teşekkür ederim ellerine sağlık güzel bir çalışma olmuş.
Şuan test ve canlı mod farketmiyor aynı hatayı alıyoruz. Canlı modda aynı hatayı veriyor ama taslak olarak kayıt işlemi gerçekleşmiş oluyor.
verifySMSCode fonskiyonunda dönen verinin checkError ile hata kontrolüne ek olarak $body["data"]["sonuc"] alanının da kontrolü gerekiyor.
Şu anki sistemde SMS şifresi hatalı girilse bile array üzerinde bir error kümesi dönmediği için işlem başarılı kabul edilip bağlı diğer işlemler devam ediyor. Şu sıralar pek vaktim olmadığı için pull request gönderemedim, kusura bakmayın.
$body ile gelen dönüşler hatalı ve başarılı sonuçlar için aşağıdaki şekilde:
Array ( [data] => Array ( [msg] => SMS şifrenizi yanlış girdiniz [sonuc] => 0 ) [metadata] => Array ( [optime] => 20210116133633+0300 ) )
Array ( [data] => Array ( [msg] => SMS şifreniz doğrulandı, işlem başarılı. [sonuc] => 1 ) [metadata] => Array ( [optime] => 20210116133544+0300 ) )
merhaba bir sorum olacaktı ama ?
Merhabalar satış yaptığımız sektör'de özel matrah olarak fatura kesmemiz gerekiyor. Bu alt yapıyı kullanmak istiyoruz fakat " Özel Matrah Nedeni " seçimi gerçekleştiremiyoruz. Fatura tipi = Özel Matrah.
sms göndermede deyince bu şekilde hata veriyor 3-4 gündür..
kullanılan fonksiyon bu şekilde ?
public function sendSMSVerification($phoneNumber)
{
$data = [
"CEPTEL" => $phoneNumber,
"KTEL" => false,
"TIP" => ""
];
$parameters = [
"cmd" => "EARSIV_PORTAL_SMSSIFRE_GONDER",
"callid" => Uuid::uuid1()->toString(),
"pageName" => "RG_SMSONAY",
"token" => $this->token,
"jp" => "" . json_encode($data) . "",
];
$body = $this->sendRequestAndGetBody(self::DISPATCH_PATH, $parameters);
print_r($body);
$this->checkError($body);
$this->oid = $body["data"]["oid"];
return $this->oid;
}
Array ( [error] => 1 [messages] => Array ( [0] => Genel Sistem Hatası:java.lang.NullPointerException ) [metadata] => Array ( [optime] => 20210528010707+0300 ) )
Fatal error: Uncaught exception 'furkankadioglu\eFatura\Exceptions\ApiException' with message 'Sunucu taraflı bir hata oluştu!' in
/domains/public_html/panelv20/vendor/efatura/furkankadioglu/efatura/src/InvoiceManager.php:335 Stack trace: #0
/domains/public_html/panelv20/vendor/efatura/furkankadioglu/efatura/src/InvoiceManager.php(750): furkankadioglu\eFatura\InvoiceManager->checkError(Array) #1
/domains/public_html/panelv20/faturaimzala.php(82): furkankadioglu\eFatura\InvoiceManager->sendSMSVerification('05057099335') #2 {main} thrown in
/domains/public_html/panelv20/vendor/efatura/furkankadioglu/efatura/src/InvoiceManager.php on line 335
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.