pavelevap / ceske-sluzby

České služby pro WordPress
56 stars 25 forks source link

WooCommerce a EET #122

Open pavelevap opened 7 years ago

pavelevap commented 7 years ago

Teoreticky by to nemělo být extra složité, ale ještě jsem to detailně nestudoval :-)

Bude potřeba zprovoznit certifikát a při každé platbě kartou nebo v hotovosti odeslat příslušné informace Velkému bratrovi :-) Společně s fakturou to pak chce také vytisknout EET účtenku a při odeslání přidat do balíčku.

https://www.souki.cz/jak-eet-skutecne-dopadne-na-eshopy http://www.etrzby.cz/assets/cs/prilohy/EET_popis_rozhrani_v3.0.pdf

Pokud to někdo upřesní, tak to uvítám...

pavelevap commented 7 years ago

Bude nakonec EET pro eshopy nebo ne?

Zajímavý článek s dostupnými PHP knihovnami: https://www.evid.cz/open-source-implementace-eet-v-php/

Knihovna pro PHP 5.3: https://github.com/zdenekgebauer/eet

novetrendy commented 7 years ago

Takže EET bude pro platby kartou. Nepochopitelné. Teď jak to řešit?

První možnost by asi byla lepší, odchytit placenou částku a poslat Babišovi.

pavelevap commented 7 years ago

Asi by to neměl být žádný zásadní problém, udělal bych to asi tak, že tam bude políčko, kde si uživatel zvolí pro jaké platby se to bude posílat ze všech dostupných plateb (např. platba na pobočce, libovolná platba kartou, atd). A po úspěšně provedené platbě (nezajímá nás o jakou šlo konkrétně platební bránu) už bude jenom stačit doplnit do emailu/faktury kód EET (nevím, jestli musí být vůbec vytištěný). Už jsem viděl několik PHP implementací, které by šlo asi vcelku snadno použít (jen se zavolají po provedené platbě). Problém bude spíše s případnými změnami objednávek (na základě telefonátu), vrácení zboží do 30 dnů, atd :-)

pavelevap commented 7 years ago

Pokud někoho napadne něco dalšího, tak sem s tím, usnadní to budoucí možnosti :-) Uvítám pomoc i případné připomínky.

Ano, pokud se to podaří včas dokončit, tak bude i EET součástí pluginu České služby, a to zcela zdarma.

Albycz commented 7 years ago

Zdravím Pavle, chtěl jsem se zeptat, bude funkcionalita k EET hotová do 1.3.? Díky moc za Vás plugin!

pavelevap commented 7 years ago

@Albycz: Doufám, že se během příštího týdne podaří zveřejnit testovací verzi. Pro jaké účely ji budete chtít používat a jaké by se nejvíce hodilo řešení? Pro platební karty to nakonec nebude potřeba (řešit to budou přímo provozovatelé), takže bude priorita pro platby v hotovosti evidované v rámci WooCommerce. Když bude chtít někdo zaplatit v hotovosti, tak budete mít možnost u objednávky zaškrtnout, zda chcete odeslat i EET (a přidat na fakturu, vytisknout či poslat emailem). Nebo máte i nějaký další příklad, jak by to šlo používat?

pavelevap commented 7 years ago

Testovací verzi budu posílat do speciální branche. Jakmile to bude ve stavu vhodném k otestování, tak to sem napíšu...

Albycz commented 7 years ago

@pavelevap díky moc! Nakonec se nám podařilo odesílání EET vyřešit jinak. Nakonec to bude řešit účetní sw u klienta. Ale rád to vyzkouším na jiných projektech.

pavelevap commented 7 years ago

Přesně tak, naprostá většina lidí to ani nebude potřebovat :-) Buď to řeší účetní software nebo platební brána. Pokud se nepletu, tak pro plugin zbývá použití u hotovostních plateb a ještě k tomu pouze v případě, že nemá na fyzické prodejně dodatečnou pokladnu. Takže vlastně jen v případě, že si můžete zboží vyzvednout na provozovně eshopu a zaplatit za něj v hotovosti. Potom to chce při předávání zboží nějak získat i účtenku (email, přidat na fakturu). A další možností je pak ještě PayPal. Nic dalšího mě ale nenapadá nebo máte někdo nějaký další příklad?

Albycz commented 7 years ago

Kdyby České služby řešily EET a PayPal, tak by to hodně lidem vytrhlo trn z paty :) Ale i na to již jsou placené alternativy.

pavelevap commented 7 years ago

Tak nakonec jsem zatím žádnou knihovnu nepoužil, protože jsou většinou funkční od PHP 5.6, což bohužel zatím není standard :-(

image

Ještě bude potřeba dodělat mnoho drobností, ale odesílání funguje :-)

image

Začátkem příštího týdne začneme testovat. Sice už existuje několik placených pluginů, ale to vůbec nevadí, třeba se to bude někomu hodit a alespoň jsem trochu prozkoumal protokol SOAP a podepisování pomocí certifikátů :-)

novetrendy commented 7 years ago

Certifikát bohužel nešlo nahrát, musel jsem přidat do wp-config.php define( 'ALLOW_UNFILTERED_UPLOADS', true ); Taky nepomohlo do function.php

function my_myme_types($mime_types){
    $mime_types['p12'] = 'application/application/x-pkcs12'; 
    return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);

Všiml jsem si, že tam máte na to funkci, ale bohužel nefunguje (čistá instalace WP+WC) I když jsem nahrál testovací certifikát EET_CA1_Playground-CZ00000019.p12 a zadal DIČ CZ00000019 ID provozovny 11 ID pokladny 111 Heslo eet tak se mi u objednávek žádné EET nezobrazí (ani metabox)

pavelevap commented 7 years ago

@novetrendy: Díky za otestování! Zkoušel jsem to před chvílí na dvou webech a nahrávání mi funguje bez problémů. Máte zaškrtnuté povolení EET v hlavním nastavení? Mohlo by to být také v konfliktu s přidanou funkcí ve functions.php. Případně prosím o přístupy, prověřím...

Metabox se nezobrazuje, protože jsem ještě neodeslal související soubor :-) Trochu ho ještě předělávám, k dispozici bude během zítřka.

novetrendy commented 7 years ago

@pavelevap Ano EET mám povolené (jinak bych neměl aktivní nastavení EET). Tu funkci jsem tam přidal, protože mi to nechtělo certifikát nahrát. Super, zítra vyzkouším, pokud bude problém, můžu Vám přístupy poslat, je to ještě rozpracovaný web.

pavelevap commented 7 years ago

V nové verzi je ta funkce trochu přesunutá, což by teoreticky mohlo nějak ovlivnit, uvidíme. P.S. Testovací certifikát je v nové verzi také součástí pluginu, takže stačí v nastavení zadat DIČ CZ1212121218 a bude automaticky použit pro testování (doplnil jsem to i do nápovědy na stránce s nastavením).

novetrendy commented 7 years ago

Super, je to v tomto branchi - https://github.com/pavelevap/ceske-sluzby/tree/122-eet ? Nebo již součásti master ?

pavelevap commented 7 years ago

Ještě to tam není, pořád to trochu ladím :-) Ještě během dneška to ale snad bude (spíše večer)... Je tam ještě pár věcí k diskuzi (co všechno ukládat - request i response, v původní XML podobě nebo pouze potřebná data, kam to nejlépe ukládat), sice jsem to nějak udělal, ale pořád o tom ještě trochu přemýšlím...

pavelevap commented 7 years ago

Mělo by to být v branchi, můžete zkoušet. Zatím není povoleno produkční prostředí, takže se nemusíte bát zkoušet ani vlastní DIČ a certifikát, nikam by se to oficiálně nemělo dostat :-) V rámci testovacího prostředí je možné účtenky vytvářet i mazat, v produkčním prostředí mazat nepůjde (kvůli evidenci), pouze stornovat (v podstatě další účtenka se zápornou částkou). U objednávek je informační metabox, v případě odeslané účtenky se objeví detaily pod produkty a dopravou v rámci objednávky. Odeslat a mazat účtenky je možné pomocí akcí objednávky (rozevírací menu s akcemi u každé objednávky). Další informace jsem doplnil na stránku s hlavním nastavením. Ještě zkouším storna a produkční prostředí, to už pak jenom zapneme. Následně bude možné odesílat účtenky i automaticky (např. PayPal), ale nevím, kam dát nejlépe nastavení (většinou se to bude používat pouze pro platby v hotovosti a PayPal, karty to většinou řeší samy).

novetrendy commented 7 years ago

@pavelevap Když dám Akce objednávky -> Získat EET účtenku, tak mě to přesměruje na /post.php a bohužel nic se neděje, jen white screen.

pavelevap commented 7 years ago

Našlo by se něco v logu? Bílá obrazovka je fatal error, který se nezobrazuje (vypnuté zobrazování chyb). Vypadá to na nějaký problém s chybějící PHP knihovnou (soap, SimpleXML, OpenSSL - ještě není hotová automatická detekce a většinou je to vždy dostupné), jaký máte hosting? Ale může to být cokoli jiného, chtělo by to konkrétní chybovou hlášku...

novetrendy commented 7 years ago

V logu nic není, zapnul jsem wpdebug, ale taky nic. Webhosting máme vlastní. (PHP 7.0.7, memory limit 256 MB, OpenSSL/1.0.1t, SimpleXML, SOAP ... )

pavelevap commented 7 years ago

Tak teď se mi to na jednom z webů objevilo také, zkoumám to...

novetrendy commented 7 years ago

Super!

pavelevap commented 7 years ago

@novetrendy: Hloupá chyba :-( Mělo by to být opraveno.

novetrendy commented 7 years ago

@pavelevap Vyzkoušeno, funguje, díky! FIK asi v testovacím prostředí není ?

pavelevap commented 7 years ago

image

Fik by tam měl být (pokud je vše v pořádku, v testovacím prostředí má koncovku -ff). Ještě tam nemám zapnuté zobrazování chyb místo účtenky (za chvíli doplním), ale pokud používáte testovací DIČ, tak je asi potřeba mít i správnou (zaregistrovanou) provozovnu (273)?

Co nahrávání certifikátu?

novetrendy commented 7 years ago
EET_CA1_Playground-CZ1212121218.p12
Tento typ souboru bohužel není z bezpečnostních důvodů povolen.
Elektronická účtenka (EET):
DIČ: CZ1212121218 - Číslo účtenky: 1
Provozovna: 273 - Pokladna: 1
Datum: 24.2.2017 - Čas: 13:46:06
Celková částka: 100Kč - Režim tržby: běžný
FIK: 
BKP: 530a3bc3-3fafb9e0-57f5d906-d36ed956-e81b087d

A jak se prosím dají účtenky mazat?

pavelevap commented 7 years ago

Na nahrávání se ještě podívám, ale zatím se nepovedlo nikde nasimulovat. Mazat účtenky lze zase v menu Akce - Objednávky.

Pokud tam není FIK, tak tam asi po cestě došlo k nějaké chybce (možná formát zprávy). Až účtenku smažete, tak se v horním metaboxu objeví kontrolní údaje pro odeslání, jak tam máte naformátovanou částku tržby? Tady je formát 100Kč trochu podivný (měla by tam být asi mezera, ale asi to nehraje roli, počítá se s tím). Nemohl bych to vyzkoušet?

novetrendy commented 7 years ago

Poslal jsem Vám přístupy na email. Po odeslání EET, již nemám v menu Akce objednávky nic k EET.

novetrendy commented 7 years ago

Tak @pavelevap vše zprovoznil, v testovacím prostředí funguje jak má. Díky ! :+1:

pavelevap commented 7 years ago

Díky, už jsem přišel i na to, proč nejdou certifikáty nahrávat :-) Jde o chybu WordPressu, která by měla být brzy opravena (nová verze má vyjít 6. března 2017). Asi s tím tedy nic dělat nebudeme, dosavadní zájemci mohou zatím nainstalovat plugin, který tuto chybu provizorně řeší: https://wordpress.org/plugins/disable-real-mime-check/

pejtrik commented 7 years ago

Mě šel nahrát certifikát.

pejtrik commented 7 years ago

Můžu poprosit o radu? Nahrál jsem plugin nastavil jsem si EET, ale žádná účtenka mi nepřišla. Ale..

Kdy by měla dorazit ta účtenka? - status objednávky (v mém případě mám čeká na vyřízení) - stačí to takhle nebo se odešle až když je objednávka dokončená. Bere to v potaz i platbu kartou?

Když dám akce - objednávky - získat účtenku EET, tak mi vylítne fatal error

Tak nevím, jestli jsem třeba něco nenastavil špatně. Moc děkuju za radu.

pavelevap commented 7 years ago

@pejtrik: Jakou verzi WP používáte? Zatím certifikát skoro nikde nahrát nešel :-) Ale možná to bylo kvůli tomu, že šlo o ten testovací stažený z webu, pokud jste zkoušel vlastní, tak to třeba mohlo projít, ale je to určitě dost podivné...

Zatím je možnost získat účtenku pouze ručně (Akce - Objednávky - Získat účtenku EET), automatické generování zprovozním asi až zítra, dnes ještě ladím storna a následné aktualizace účtenek.

Pro jaké účely chcete plugin konkrétně používat? Chcete posílat účtenky pro všechny objednávky nebo třeba jen platby kartou (většinou EET řeší přímo provozovatel karty)?

Jaký Fatal error se konkrétně objeví?

pejtrik commented 7 years ago

@pavelevap: mám WP 4.6.1 použil jsem vlastní certifikát a vypadá to v pořádku. Mám i nějaké základní informace na stránce objednávky.

Právě, že od provozovatele jsme dostali informaci, že si to musíme zajistit sami. Takže bychom to potřebovali na každou metodu, jak převod tak i karty.

Fatal error posílám v příloze. fatal_error

pavelevap commented 7 years ago

@pejtrik: Vypadá to na problém s certifikátem, opravdu se ho podařilo správně nahrát? Nemohl bych se na to podívat?

pavelevap commented 7 years ago

Tak chybky jsou snad opraveny, doplněna byla možnost stornování a dodatečné účtenky (při změně objednávky). Chybí poslední věc: zapnout produkční prostředí (plugin zatím neobsahuje URL produkčního prostředí), což si necháme na ráno. Pokud zkusíte svůj certifikát a DIČ a budete zkoušet testovací režim, tak to zatím skončí chybou o SOAP podpisu, takže spíše zatím testovat s doporučeným testovacím DIČ.

pejtrik commented 7 years ago

OK testoval jsem to ted a je to jak říkáte dostal jsem chybu o SOAP podpisu. Ted nevím co dělat dál, mám čekat nebo se mi na to podíváte?

Když tak mě kontaktujte na mail jak sme si psali včera děkuju

pavelevap commented 7 years ago

Zkuste nejnovější verzi s aktivním produkčním prostředím, měla by být funkční. Pokud máte nastavené testovací prostředí, tak bude automaticky použit testovací certifikát. Pokud zvolíte produkční prostředí, tak už musíte mít nastaven svůj certifikát a heslo a účtenky budou oficiálně odesílány a evidovány, takže opatrně. Před odesláním zběžně zkontrolujte kontrolní údaje, které budou odeslány (vpravo nahoře). Pokud budete chtít účtenku následně stornovat, tak opět klikněte na získání další účtenky, měla by být odeslána se zápornými hodnotami. Jakmile to vyzkoušíme, tak doplním nastavení pro jednotlivé platební metody, už by neměl být problém generovat účtenky automaticky např. během platby.

pejtrik commented 7 years ago

Tak účtenky fungují v produkčním prostředí. Ale když dám znovu získat účtenku tak žádné záporné hodnoty nedostávám - takže ted mám pro jednu objednávku 3 účtenky :)

To automatické generování by bylo fajn :)

pavelevap commented 7 years ago

@pejtrik: Ano, koukám na to, máte tam u jedné objednávky tři účtenky, ale první má plusovou hodnotu, druhá minusovou a třetí zase plusovou (uvidíte dole pod objednávkou), takže je to v pořádku a platí vlastně až ta poslední třetí (první byla stornovaná). Storno probíhá tak, že se pošle další účtenka s minusovou hodnotou tržby. Možnost posílat více účtenek jsem ponechal, aby byly možné změny v objednávce. Příklad: Někdo nakoupí za 1000 Kč a zaplatí, ale následně chce produkt za 200 Kč vrátit. Takže vyrobíte účtenku na 1000 Kč a následně proběhne další účtenka na -200 Kč. Celkem tedy bude evidovaná tržba 800 Kč (peníze, které z objednávky opravdu máte).

pavelevap commented 7 years ago

Trocha inspirace pro přidání administračních políček s nastavením :-)