PHP Implementare Mobilpay

PHP Implementare Mobilpay

           O multime de aplicatii web aleg sa foloseasca serviciile mobilpay.ro. Aceasta are un mare avantaj pentru afacerile mici si mijlocii online, care nu doresc un contract complex cu o companie ce ofera microplati/plati cu cardul online.
           Majoritatea acestor aplicatii web sunt scrise in PHP, si desi mobilpay ofera un exemplu complet de integrare al serviciului intr-o aplicatie PHP, nu este chiar self-explaining iar implementarea in aplicatia proprie este deseori anevoioasa.
           Daca cititi acest articol, cel mai probabil ati cautat pe google "php implementare mobilpay", sau ceva similar.
           
           In continuare voi prezenta un scurt tutorial pentru implementarea completa a serviciului.
  • Pas I
    • verificati daca aveti versiunea de PHP are suport openSSL. Un simplu "" ar trebui sa va dezvaluie aceasta
  • Pas II
    • downloadati exemplul din interfata de admin mobilpay
    • downloadati certificatele (public si privat) din admin mobilpay -> conturi de comerciant -> detalii -> setari securitate
    • tot de acolo copiati intr-un loc sigur semnatura (un cod de forma xxxx-xxxx-xxxx-xxxx-xxxx) si modificati in sms.php linia corespunzatoare (cautare dupa "xxxx") cu acest cod.
    • intrati in admin mobilpay -> conturi de comerciant -> produse si servici -> click pe semnul plus, si trebuie sa gasiti un numar de forma 000000-000000-000000 (semnatura). copiati si acest numar intr-un loc sigur si modificati in sms.php linia corespunzatoare (cautare dupa "0000") cu acest cod.
  • Pas III
    • in sms.php - de aici pleaca user-ul de pe site-ul vostru - trebuie sa schimbati urmatoarele:
      • $x509FilePath = '' cu calea catre ceritifcatul public (e.g. $x509FilePath = "../certs/public.cer";)
      • $orderId este generat ca un uniqid(). veti avea nevoie de acest token - el retine tranzatia curenta (comanda). recomand sa puneti acest token intr-o sesiune PHP ($_SESSION["orderId"] = $orderId;). recomand adaugarea acestui token de asemenea, si intr-o baza de date.
      • evident, trebuie sa integrati formularul in sms.php in adevaratul template pe care il aveti pe site
    • in smsConfirm.php - aceasta pagina va fi accesata de catre sistemul mobilpay cand plata este efectuata - eveniment ASINCRON (se poate intampla DUPA ce utilizatorul a fost redirectat pe site-ul dvs.).
      • modificati $privateKeyFilePath cu calea adevarata catre certificatul privat (e.g. "../certs/private.cer"). RECOMAND ca folder-ul cu certificatele sa contina un .htaccess cu urmatoarele "deny from all". Aceasta va face ca certificatele sa nu fie accesibile de catre cineva neautorizat.
      • in mod normal, ar trebui sa modificati mai multe lucruri in smsConfirm.php. ar trebui sa accesati id-ul tranzactiei (orderId-ul de mai devreme) astfel: $orderId = $this->orderId, sa cautati tranzactia in baza de date si sa o marcati activa (daca este cazul - daca server-ul a postat "confirmed" - exista un switch in smsConfirm.php). acest lucru este totusi optional - vezi mai departe
    • daca plata s-a efectuat, utilizatorul se va intoarce in smsReturn.php cu parametrul orderId in $_GET. puteti accesa astfel: $orderId = $_GET["orderId"]. avand acesta, il puteti compara cu valoarea din sesiune ($orderId == $_SESSION["orderId"] pe care ati setat-o in sms.php. Daca sunt egale, utilizatorul nu avea cum sa stie acest token si sa faca brute force (recomand un token puternic - exemplul lor md5(uniqid(rand())) este destul de bun) - deci inseamna ca a platit pentru serviciul/produsul pe care il oferiti.
      • updatati contul userului (daca e cazul) pentru a oferi serviciul, eventual trimiteti-i un email userului si adminului care notifica efectuarea platii. daca este cazul unui document electronic oferiti-i un link catre acesta (aveti grija ca link-ul sa expire).
      • nu in ultimul rand NU UITATI sa distrugeti sesiunea (unset($_SESSION["orderId"])).

nume: admin
text: Pentru cei interesati de implementarea completa a serviciului, contactati-ma la marius@marius-bucur.ro.




adauga si tu un comentariu
nume:
email:
text:
(emailul este confidential)