PHP Efatura api kurmaya calisiyorum
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?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
Ö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);
}
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"
});