v2.5.2
Giriş yap

PHP Efatura api kurmaya calisiyorum

spleidanger
198 defa görüntülendi

Merhaba arkadaslar efatura php api kurmaya calisiyorum github üzerinden buldugum bir proje, fakat bu tür hazir paketlerin kurulumunu veya isleyis mantigini daha önce cok görmedigim icin mantigini anlayamadim. Yol gösterebilir misiniz?

https://github.com/furkankadioglu/efatura

Cevap yaz
Cevaplar (3)
emmir2
73 gün önce

hocam ilettiğiniz github linkinde gerekli bilgiler mevcut hiç bir şey anlamadıysanız gpt sorarak bile kolayca halledebilirdiniz

trsherlock
73 gün önce

Önce bir form yardımı ile aşağıdaki örnek js değişkeni oluştur.
Sonra UUID (ETTN) isteği atıp fatura.faturaUuid değerini gelen data ile değiştir.
En sonda post parametresini fetch isteği ile sunucuya gönder. Fatura hazır. Bir tek onaylaması kalır.

Adet * Birim Fiyat üzerine sade bir fatura json yapısı:

const fatura = {
    "faturaUuid":"",
    "belgeNumarasi":"",
    "faturaTarihi":"09/09/2024",
    "saat":"19:03:11",
    "paraBirimi":"TRY",
    "dovzTLkur":"0",
    "faturaTipi":"SATIS",
    "hangiTip":"5000/30000",
    "vknTckn":"1234567890",
    "aliciUnvan":"",
    "aliciAdi":"Potansiyel",
    "aliciSoyadi":"Tüketici",
    "binaAdi":"",
    "binaNo":"",
    "kapiNo":"",
    "kasabaKoy":"",
    "vergiDairesi":"???E VERGİ DAİRESİ MÜD.",
    "ulke":"Türkiye",
    "bulvarcaddesokak":"??? Mah.",
    "irsaliyeNumarasi":"",
    "irsaliyeTarihi":"",
    "mahalleSemtIlce":"",
    "sehir":" ",
    "postaKodu":"",
    "tel":"",
    "fax":"","eposta":"",
    "websitesi":"",
    "iadeTable":[],
    "vergiCesidi":" ",
    "malHizmetTable":[
        {
            "malHizmet":"Test",
            "miktar":10,
            "birim": "C62",
            "birimFiyat":"500",
            "fiyat":"5000",
            "iskontoOrani":0,
            "iskontoTutari":"0",
            "iskontoNedeni":"",
            "malHizmetTutari":"5000",
            "kdvOrani":"10",
            "vergiOrani":0,
            "kdvTutari":"500",
            "vergininKdvTutari":"0",
            "ozelMatrahTutari":"0",
            "hesaplananotvtevkifatakatkisi":"0"
        }
    ],
    "tip":"İskonto",
    "matrah":"5000",
    "malhizmetToplamTutari":"5000",
    "toplamIskonto":"0",
    "hesaplanankdv":"500",
    "vergilerToplami":"500",
    "vergilerDahilToplamTutar":"5500",
    "odenecekTutar":"5500",
    "not":"",
    "siparisNumarasi":"",
    "siparisTarihi":"",
    "fisNo":"",
    "fisTarihi":"",
    "fisSaati":" ",
    "fisTipi":" ",
    "zRaporNo":"",
    "okcSeriNo":""
}

const params = {
    cmd: 'EARSIV_PORTAL_FATURA_OLUSTUR',
    pageName: 'RG_BASITFATURA',
    token: token,
    jp: JSON.stringify(fatura);
}
trsherlock
73 gün önce

https://earsivportal.efatura.gov.tr/intragiris.html

adresi fetch isteği kabul ediyor aslında.
Yani bir localhost sunucusunda html ve js yeterli aslında. Bir de gerekli şablona uygun fatura json yapısı.

Sunucuya atılan genel istekler:

  • Oturum açma
  • Fatura Oluşturma ve UUID (diğer adı ile ETTN) al ve depola
  • Vergi veya TC numarasından şirket/şahıs sorgula ve depola

Kullanıcı tarafından girilecek veriler:

  • Şirket/Şahıs bilgilerini (Sunucuya sorgulama yaptırmak istemezseniz)
  • Adres bilgisi
  • Fatura satır bilgileri dizi
  • Satır toplam bilgileri

Oturum açtıktan sonra ETTN(UUID) değeri alma isteği:

const params = {
    cmd:'EARSIV_PORTAL_UUID_GETIR',
    token: token,
    jp: JSON.stringify({})
}
    fetch("https://earsivportal.efatura.gov.tr/earsiv-services/dispatch", {
  "headers": {
    "accept": "application/json, text/javascript, */*; q=0.01",
    "accept-language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin"
  },
  
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": new URLSearchParams(params),
  "method": "POST",
  "mode": "cors",
  "credentials": "omit" // localhost üzerinden atınca include falan olabiliyor net hatırlamıyorum.
});

Vergi/TC Sorgulama

const params = {
    cmd: '',
    token: token,
    pageName: 'RG_BASITFATURA',
    jp: JSON.stringify({vknTcknn: 'vergi/tcno'})
}
fetch("https://earsivportal.efatura.gov.tr/earsiv-services/dispatch", {
  "headers": {
    "accept": "application/json, text/javascript, */*; q=0.01",
    "accept-language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin"
  },
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": new URLSearchParams(params),
  "method": "POST",
  "mode": "cors",
  "credentials": "omit"
});