Paytrail PSP -maksumoduuli tuo Zen Cart -verkkokauppaasi Paytrailin (aiemmin Checkout Finland) maksutavat: verkkopankit, korttimaksut, mobiilimaksut sekä lasku- ja osamaksupalvelut. Sama moduuli toimii Zen Cartin versioissa1.5.6 ja2.2.2.
Asiakkaan puolella moduuli näyttää maksutavat kassalla ja ohjaa asiakkaan maksamaan. Kauppiaan puolella se antaa tilaussivulle oman paneelin, josta hoituvat kolme asiaa:laskun aktivointi,maksulinkin lähettäminen jahyvitys.
Paytrail tilittääeuroina, ja moduuli kertoo Paytrailille sen summan ja sen valuutan, jonka asiakas kaupassa näki. Siksi kaupan omien asetusten on oltava kunnossa. Alla mitä tarvitaan — ja luvussa 4 miten moduuli tekee tämän kaiken puolestasi.
| Asia | Miksi |
|---|---|
| Euro perusvaluutaksi, kurssi 1.000000 Admin → Localization → Currencies |
Zen Cart tallentaa tilaussummat perusvaluutassa ja säilyttää erikseen kurssin, jolla asiakkaalle näytettiin. Jos perusvaluutta on jokin muu, nämä kaksi lukua eroavat toisistaan. |
| Kaupan maa: Suomi Admin → Configuration → My Store → Country |
Lähtömaa vaikuttaa siihen, kummasta osoitteesta arvonlisävero lasketaan. |
| Verovyöhyke Suomelle Admin → Locations / Taxes → Tax Zones |
Ilman vyöhykettä kauppa perii 0 % arvonlisäveroa eikä kerro siitä mitään. |
| Verokannat 25,5 % Admin → Locations / Taxes → Tax Rates |
Suomen yleinen arvonlisäverokanta 1.9.2024 alkaen. Sekä tuotteille että toimitukselle. |
| Hinnat verollisina Configuration → My Store → Display Prices with Tax = true |
Suomessa kuluttajahinnat esitetään arvonlisäveron sisältävinä. |
| Paytrailin kauppiastunnus ja avain | Saat ne Paytraililta. Testaukseen käyvät 375917 ja
SAIPPUAKAUPPIAS. |
Moduuli ei kysy arvonlisäveroprosenttia missään. Se lukee sen kaupan omista verotaulukoista samalla tavalla kuin Zen Cart laskee asiakkaalta perittävän veron. Näin käsin kirjoitettu prosentti ei voi olla ristiriidassa sen kanssa, mitä asiakkaalta oikeasti veloitettiin.
Muut vaatimukset: Zen Cart 1.5.6 (PHP 7.4) tai 2.2.2 (PHP 8.2+),
PHP-laajennukset curl ja json.
Asetukset löytyvät kohdastaAdmin → Modules → Payment → Paytrail PSP → Edit. Alla jokainen asetus, sen merkitys ja oletusarvo.
| Asetus | Oletus | Mitä se tekee |
|---|---|---|
| Lajittelu SORT_ORDER |
0 |
Maksutavan järjestysnumero kassalla. Pienin luku on ylimpänä. |
| Ota käyttöön Paytrail PSP -maksu STATUS |
Kylla |
Näkyykö maksutapa asiakkaalle lainkaan. Ei piilottaa sen
poistamatta asetuksia tai tilaushistoriaa. |
| Myyjä BUSINESS_ID |
375917 |
Paytrailin antama kauppiastunnus. Oletus on Paytrailin julkinen testitunnus —vaihda tämä ennen kuin kauppa avataan asiakkaille. |
| Tarkisteavain BUSINESS_KEY |
SAIPPUAKAUPPIAS |
Paytrailin antama salainen avain. Sillä allekirjoitetaan jokainen Paytrailille lähtevä pyyntö ja tarkistetaan jokainen sieltä palaava vastaus. Vaihda tämä myös. |
| Maksumoduulin voimassaoloalue ZONE |
--none-- | Jos valitset alueen, maksutapa näkyy vain sen alueen asiakkaille. Tyhjänä se näkyy kaikille. |
| Tilauksen tila ORDER_STATUS_ID |
kaupan oletus | Mihin tilaan tilaus siirtyy onnistuneen maksun jälkeen. Sama tila asetetaan myös silloin, kun maksulinkki maksetaan. |
| Tilauksen tila, kun maksettu laskulla INV_ORDER_STATUS_ID |
tyhjä | Tila laskulla maksetulle tilaukselle, joka odottaa laskun aktivointia. Tyhjänä käytetään tavallista tilauksen tilaa, jolloin mikään ei muutu. Katso luku 7 — tämä on se asetus, joka estää lähettämästä tavaraa laskua vastaan jota ei ole lähetetty. |
| Tilauksen tila, kun lasku on aktivoitu INV_ACTIVE_OS_ID |
tyhjä | Tila, johon tilaus siirtyy kun painat Aktivoi lasku. Tyhjänä tilaa ei muuteta. Katso luku 7. |
| Laskun manuaalinen aktivointi MANUAL_INV |
Kylla |
Kun päällä, laskulla maksettua tilaustaei aktivoida automaattisesti: lasku lähtee vasta kun painat tilaussivulla Aktivoi lasku. Katso luku 7. |
| Manuaalisen laskun maksutavat MANUAL_INV_PROVIDERS |
walleyb2c, |
Ne maksutavat, jotka tarjoavat manuaalisen laskun aktivoinnin, pilkulla erotettuna. Lista on asetus eikä kiinteä joukko, koska se on Paytrailin muutettavissa — et tarvitse uutta moduuliversiota jos lista muuttuu. |
| Suomen paikallisuuden tarkistus FINNISH_LOCAL_RUN |
Ei |
Aseta Kylla ja tallenna: moduuli käy luvun 2 kohdat läpi,
korjaa puuttuvat ja palauttaa asetuksen itse arvoon Ei.
Katso luku 4. |
| Tekninen seuranta DEBUG |
Ei |
Kirjoittaa jokaisesta pyynnöstä yksityiskohtaisen lokitiedoston kaupan
logs/-hakemistoon. Pidä pois päältä normaalisti; kytke päälle
kun jotain selvitetään. Katso luku 12. |
Luvun 2 asetukset ovat viidellä eri hallintasivulla, ja jokainen niistä on sellainen, että väärin jäänyt kohta ei näy virheenä vaan rahana. Siksi moduuli osaa tehdä ne puolestasi.
Admin → Modules → Payment → Paytrail PSP → Suomen paikallisuuden tarkistus = Kyllä, ja tallenna. Tarkistus ajetaan seuraavan kerran kun moduuli ladataan — käytännössä heti, koska hallinnan moduulisivu lataa moduulin.
Jokainen askel kysyy kolme kysymystä tässä järjestyksessä: onko edellytykseni kunnossa, onko asia jo oikein, ja vasta sitten tekee. Askel jonka edellytys puuttuu kertoo mikä puuttuu eikä pysäytä niitä askeleita, jotka eivät siitä riipu.
STORE_ZONE on järkeväSe on tavoite eikä sivuvaikutus: kauppias joka ei tiedä toimiko se, painaa sitä uudelleen — eikä siitä saa rangaista. Jokaista kirjoitusta edeltää haku, eikä valmiiksi kunnossa olevaa kosketa mikään.
Kaksoiskappaleet ovat se mikä oikeasti kaataa tämän. Zen Cart laskee verokannat yhteen eikä korvaa niitä toisillaan, joten kaksi kantaa samalle luokalle ja vyöhykkeelle tekee 51 % tai 57,5 %. Sama tapahtuu jos maa on liitetty vyöhykkeeseen kahdesti — eikä siitä näy verokantasivulla mitään. Tarkistus poistaa nämä ennen kuin tekee mitään muuta. Veroluokan kaksoiskappaleista se vain kertoo eikä poista niitä, koska tuotteet voivat viitata niihin.
Ajosta jää tiedosto logs/paytrailpsp-localisation-<aika>.log,
rivi per askel etuliitteellä OK, DONE, SKIP tai FAIL, ja lopuksi yhteenveto:
OK euro on kaupan valuutta (2) OK euron kurssi on jo 1.0 OK STORE_ZONE on 0 eli koko maa — Suomella ei ole osavaltioita OK verovyöhyke "Finland" on olemassa (2) OK Suomi on vyöhykkeessä kertaalleen, koko maa DONE verokanta toimituksen luokalle päivitettiin 25,50 %:iin (oli 24.0000) OK TODENNETTU: kaupan taulut antavat tuotteiden verokannaksi 25,50 % OK TODENNETTU: 100,00 netto + 25,50 vero = 125,50 brutto OK TODENNETTU: kauppa itse vastaa 25,50 % ------------------------------------------------------------ yhteensä: 1 muutettu, 23 oli jo kunnossa, 0 ohitettu, 0 epäonnistui
Nolla muutosta toisella painalluksella on se, miltä kunnossa oleva kauppa näyttää.
Eiennen ajoa, ei sen jälkeen. Jos
ajo jostain syystä keskeytyisi, kauppa ei jää yrittämään samaa jokaisella
sivulatauksella.
Asiakas valitsee kassalla maksutavan Paytrailin logolistasta. Lista tulee suoraan Paytraililta, joten siinä ovat aina ne maksutavat, jotka kauppiastunnuksellesi on avattu.
Valinnan jälkeen asiakas siirtyy Paytrailin sivulle ja sieltä valitsemansa pankin tai palvelun sivulle. Maksun jälkeen hän palaa kauppaan ja tilaus syntyy.
Paytrail ilmoittaa maksusta kaupallekahta reittiä: asiakkaan selaimella ja erikseen palvelimelta palvelimelle. Kumpi ehtii ensin, se luo tilauksen; toinen huomaa työn tehdyksi eikä tee sitä toiseen kertaan. Käytännön merkitys kauppiaalle:tilaus syntyy vaikka asiakas sulkisi selaimen heti maksun jälkeen.
Jos asiakas keskeyttää maksun tai pankki hylkää sen, tilausta ei synny ja asiakkaan kesken jääneet maksuyritykset siivotaan pois. Näin seuraava maksuyritys alkaa puhtaalta pöydältä.
Moduuli lähettää Paytrailille tilauksen rivit eriteltyinä: jokainen tuote omanaan, alennukset omana rivinään, toimituskulut omanaan. Summat ovat verollisia, koska niin Paytrail ne odottaa.
Erittely merkitsee erityisesti lasku- ja osamaksupalveluissa, jotka näyttävät rivit asiakkaalle sellaisenaan.
Kun tilaus on maksettu Paytraililla, tilauksen käsittelysivun alalaidassa onPaytrail PSP -paneeli. Se on sivun lopussa, ennen alatunnistetta, ja auki valmiiksi — sitä ei tarvitse etsiä minkään avattavan takaa.
Ylinnä ovatmaksutapahtuman tiedot: tapahtumatunnus, aika ja tilausnumero. Tunnus on se, jolla maksu löytyy Paytrailin omasta hallinnasta, joten se kannattaa ottaa mukaan jos maksusta joutuu kysymään Paytrailin tuesta.
Sen alla kolme osiota, aina tässä järjestyksessä:
Osa maksutavoista on laskuja eikä maksuja: asiakkaan tilaus on hyväksytty ja raha taattu, muttalaskua ei ole lähetetty. Se lähtee vasta kun sanot että tavara lähtee.
Osio näkyyvain jos tilaus on maksettu maksutavalla, joka tarjoaa
manuaalisen laskun aktivoinnin — oletuksena walleyb2c, walleyb2b ja klarna. Tavallinen korttitilaus ei näytä
tätä osiota lainkaan.
Napit ovat kaksi eri lomaketta, eivät yksi kahdella napilla: eksynyt Enter-painallus lähettäisi muuten sen, kumman selain sattuu katsomaan ensimmäiseksi.
Tämä on se kohta, joka tekee koko ominaisuudesta turvallisen. Laskulla maksettu tilaus ei ole sama asia kuin maksettu tilaus: asiakas on sitoutunut ja Paytrail takaa summan, mutta mitään ei ole laskutettu eikä laskuteta ennen kuin joku painaa Aktivoi.
Jos molemmat päätyvät samaan tilaan, laskutilaus näyttää tilauslistassa selvitetyltä — ja ainoa paikka, jossa asia näkyy, on tämän sivun Paytrail-paneeli, jota kukaan ei avaa tilaukselta joka näyttää jo hoidetulta. Tavara lähtee laskua vastaan, jota ei ole lähetetty.
Admin → Modules → Payment → Paytrail PSP → Tilauksen tila, kun maksettu laskulla. Valitse tila, joka erottuu tavallisesta. Mikä tila se on ja miltä se kuulostaa, on sinun päätöksesi — moduuli tarjoaa vain paikan, johon se kiinnittyy.
Asetus on oletuksena tyhjä, jolloin käytetään tavallista tilaa eikä mikään muutu. Vanhaa kauppaa päivitettäessä käyttäytyminen pysyy siis ennallaan, kunnes kauppias itse valitsee toisin.
Pelkkä odotustila ei vielä riitä. Kun olet painanut Aktivoi lasku, tilauksen pitää myös siirtyä eteenpäin — muuten tilauslistassa näyttää edelleen siltä että jotain on tekemättä, eikä hoidettua erota hoitamattomasta.
Tilauksen tila, kun lasku on aktivoitu on tätä varten. Kun se on asetettu, yksi painallus tekee kolme asiaa:
Kolmas kohta on siellä siksi, että asiakas saa pian laskun eikä mikään muu
tässä kulussa kerro siitä hänelle. Viesti menee asiakkaan omalla kielellä,
kuten maksulinkinkin viesti — sanamuodot ovat tiedostossa
paytrailpsp_invoice_email.php, katso luku 11.
Tilaushistorian rivi merkitään asiakkaalle ilmoitettu vain jos viesti oikeasti lähti. Jos kaupan sähköpostitus on pois päältä, rivi kertoo sen — merkintä joka väittää ilmoittaneensa ilman että mitään lähti olisi valhe juuri siinä paikassa, josta asia tarkistetaan kun asiakas sanoo ettei kuullut mitään.
Moduuli ei luo eikä pakota yhtäkään tilaa. Se ei tiedä miltä sinun prosessisi näyttää, eikä sen kuulu tietää. Se tarjoaa kaksi kohtaa, joissa tilaus voi siirtyä eteenpäin — kun lasku syntyy ja kun se lähetetään — ja jättää sinulle sen, mitä ne kohdat tarkoittavat.
Tilat luodaan kaupan omasta hallinnasta: Admin → Localization → Orders Status. Sen jälkeen ne valitaan moduulin asetuksista. Jos jätät asetukset tyhjiksi, mitään ei tapahdu — ominaisuus on olemassa vasta kun otat sen käyttöön.
Muutama esimerkki siitä mihin näitä on käytetty. Nämä ovat ideoita, eivät ohjeita:
Jos et halua käyttää ominaisuutta lainkaan, asetaLaskun manuaalinen aktivointi = Ei. Silloin Paytrail aktivoi laskut itse, kuten muutkin maksut, eikä osiota näy.
Maksulinkki onmaksupyyntö, ei maksu. Kun lähetät linkin, Paytrailiin ei oteta yhteyttä lainkaan — asiakkaalle lähtee sähköposti, jossa on tilaus, kuvaus, summa ja osoite.
Maksutapahtuma syntyy vasta kun asiakas avaa linkin. Siksiyksi linkki voi tuottaa monta maksutapahtumaa: asiakas joka avaa linkin, miettii ja sulkee välilehden ei ole maksanut mitään, ja voi avata saman linkin huomenna uudelleen.
Paneeli listaa lähetetyt linkit ja jokaisen avauksen sen linkin alla, jolle se kuuluu.Lähetetty mutta ei avattu jaavattu neljästi näyttävät eri asioilta.
Kun jokin linkin maksutapahtumista maksetaan, linkki merkitään maksetuksi ja tilaus siirtyy maksettuun tilaan. Maksettua tai poistettua linkkiä ei voi avata uudelleen.
Paneelissa on lista tehdyistä hyvityksistä ja lomake uudelle.
Summakenttä on täytetty valmiiksi sillä osalla, jota ei ole vielä hyvitetty: koko maksettu summa kun mitään ei ole hyvitetty, ja loppuosa osittaisen hyvityksen jälkeen. Sen voi korvata pienemmällä summalla.
Hyvitys ei ole valmis silloin kun Paytrail vastaa. Rivi ilmestyy listaan tilassaodottaa pankkia, ja pankin vastattua se muuttuu jokohyvitetty taipankki hylkäsi. Hylätty hyvitys ei vähennä hyvitettävissä olevaa summaa — raha jäi kauppaan.
Samaa tapahtumaa voi hyvittääkerran kolmessa minuutissa. Rajoitus on tahallinen: kahdesti painettu nappi on kahdesti lähetetty raha.
Moduuli osaa pyytää Paytraililta maksuraportin, joka luetteloi kauppasi maksutapahtumat halutulta ajanjaksolta. Paytrail ei palauta raporttia heti, vaan lähettää sen kaupalle erikseen, kun se on valmis.
Saapuneet raportit tallennetaan hakemistoon ext/paytrailpsp/payment_reports/. Hakemisto on suojattu
verkkoselailulta, koska raportti nimeää jokaisen maksun.
Moduuli ei sisällä kovakoodattua tekstiä. Kaikki mitä asiakas tai kauppias näkee tulee kielitiedostosta:
includes/languages/english/modules/payment/paytrailpsp.php includes/languages/finnish/modules/payment/paytrailpsp.php
Molemmat määrittelevät täsmälleen samat vakiot. Kolmas kieli syntyy kopioimalla englanninkielinen tiedosto kaupan omaan kielihakemistoon ja kääntämällä arvot.
finnish. Ilman sitä Zen Cart ei koskaan katso siihen hakemistoon,
ja paneeli näyttää englanninkieliset tekstit.
Sähköpostin sanamuodot ovat omassa tiedostossaan paytrailpsp_email.php, jokapalauttaa taulukon sen sijaan
että määrittelisi vakioita. Syy: kauppias painaa nappia hallinnassa omalla
kielellään, mutta sähköposti menee asiakkaalle asiakkaan kielellä. Vakion voi
määritellä vain kerran pyyntöä kohti, joten vakioilla ei voi sanoa "tämä sivu
yhdellä kielellä, tuo sähköposti toisella". Taulukolla voi.
Kieli valitaan tässä järjestyksessä: tilauksen kieli, kaupan senhetkinen kieli, englanti, ja lopuksi moduulin sisäinen varateksti.
Sama järjestely, oma tiedostonsa:
includes/languages/<kieli>/modules/payment/paytrailpsp_invoice_email.php
Neljä avainta — SUBJECT, GREETING,
INTRO, CLOSING — ja sama kielten hakujärjestys.
Ulkoasun voi korvata tiedostolla
email/email_template_paytrailpsp_invoice_activated.html.
Pudottamalla kauppaan tiedoston email/email_template_paytrailpsp_payment_link.html muotoilet juuri
tämän yhden sähköpostin uusiksi koskematta kaikkiin muihin. Kielikohtainen
versio menee email/<kieli>/-hakemistoon.
Tekninen seuranta = Kyllä kirjoittaa jokaisesta pyynnöstä tiedoston kaupan lokihakemistoon:
logs/paytrailpsp-<pvm>-<aika>-<prosessi>.log
Tiedostossa on koko tapahtumaketju: asetukset, lähetetty pyyntö, saatu vastaus ja moduulin omat merkinnät. Yksi tiedosto per pyyntö, jotta maksutapahtuman kulku näkyy yhtenä kokonaisuutena.
Viat kirjataan aina, myös kun seuranta on pois päältä:
logs/paytrailpsp-problem-<pvm>.log
Tänne päätyvät esimerkiksi lokalisoinnin epäonnistuminen, paneelin virheet ja lähettämättä jäänyt maksulinkkisähköposti. Vika jota ei kirjata mihinkään on vika jota ei voi selvittää, ja se on eri asia kuin seuranta: seuranta on kauppiaan valinta, vian kirjaaminen ei ole.
Zen Cartin oma lokihakemisto on logs/ kaupan juuressa, ja
siellä ovat myös kaupan omat myDEBUG-*.log-tiedostot. Jos kauppa
näyttää"WARNING: An Error occurred, please let us know!", vastaus on
siellä.
| Polku | Mitä |
|---|---|
includes/modules/payment/paytrailpsp.php | maksumoduuli |
includes/languages/*/modules/payment/paytrailpsp.php | kaupan ja hallinnan tekstit |
includes/languages/*/modules/payment/paytrailpsp_email.php | maksulinkkisähköpostin tekstit |
ext/paytrailpsp/extra_datafiles/ | taulujen nimet kaupan omalla etuliitteellä |
ext/paytrailpsp/localisation/ | Suomen paikallisuuden tarkistus |
ext/paytrailpsp/lib/ | allekirjoitukset, tietovarasto, paneeli |
ext/paytrailpsp/*.php | kaksitoista sisääntulopistettä |
Kaikki taulut luodaan kaupan omalla etuliitteellä.
| Taulu | Mitä |
|---|---|
..._ahco_checkout_fi_psp | maksuyritykset ja niiden koko API-vaihto |
..._ahco_checkout_fi_validated | tilauksen luonnin lukko |
..._ahco_checkout_fi_callbacks | mitä Paytrail on kertonut |
..._ahco_checkout_fi_psp_refunds | hyvitykset ja niiden tila |
..._ahco_checkout_fi_psp_email_links | lähetetyt maksulinkit |
..._ahco_checkout_fi_psp_manual_invoices | laskut, aktivoinnit ja peruutukset |
Päivitys on tiedostojen kopiointi: kopioi paketin catalog/-
hakemiston sisältö kaupan juureen.Moduulia ei tarvitse poistaa ja asentaa uudelleen — puuttuvat taulut ja puuttuvat asetukset luodaan itse. Se on
tärkeää, koska poistaminen veisi mukanaan kauppiastunnuksen ja
tarkisteavaimen.
ext/-hakemistossaPaytrail palaa asiakkaan selaimella ja kutsuu kauppaa myös suoraan palvelimelta. Näitä osoitteita on useita, joten ne on koottu yhden hakemiston alle sen sijaan että ne olisi ripoteltu kaupan juureen. Ne eivät voi sijaita Zen Cart 2.x:n laajennushakemiston sisällä, koska sieltä tiedostoa ei tarjoilla — kauppa vastaa siihen 404.
Paytrail PSP -maksumoduuli Zen Cartille, versio 1.13.0 · AHCO Oy ·
Käyttöoikeudet laskussa.
Lisätiedot ja asennusohje: README.md ja INSTALL.md
moduulin paketissa. Muutosloki: ChangeLogs.md.