Implementare mobilpay api card

Editoare, compilatoare, acceleratoare sau alte aplicaţii realizate cu/pentru PHP

Moderatori: cristi, Moderatori

wayn3
Average Member
Mesaje: 64
Membru din: Sâm Iun 12, 2010 2:13 pm

Implementare mobilpay api card

Mesajde wayn3 » Joi Feb 04, 2016 2:33 am

Salut baieti!
Am cateva proiecte la care lucrez si am ajuns la final. Acestea reprezinta platforme de comert si acum sunt in puncul in care trebuie implementate metodele de plata iar ceea ce mie imi da batai de cap este api-ul pentru plata prin card a celor de la MobilPay.
Sunt sigur sau cel putin cred ca l-am configurat cum trebuie. Ei bine, pot efectua o plata, insa dupa efectuarea acesteia, mobilpay nu acceseaza adresa de callback.. Iar singura variabila ce mi-o returneaza in return url este orderId de tip 'get' care nu ma ajuta cu nimic.
S-a mai confruntat cineva cu asa ceva? Cum ati trecut peste ea? Sau poate imi scapa mie ceva..
Sunt cam presat de timp si de sef si as aprecia putin ajutor din partea voastra. Mersi

LE: imi pare rau dar abia acum am realizat ca am postat unde nu trebuie.



pont
PHPRomania Supporter
Mesaje: 26
Membru din: Lun Apr 12, 2010 3:45 pm

Re: Implementare mobilpay api card

Mesajde pont » Sâm Feb 06, 2016 1:29 pm

Cu siguranta iti scapa ceva. Daca ai setat callback-ul corect iti trimite informatiile dorite. Poti loga sa vezi daca se apeleaza fisierul de callback. Daca nu se apeleaza ar trebui sa apelezi la suportul lor

Poti folosi fisierul lor exemplu pentru callback:

Cod: Selectaţi tot

<?php
require_once 'Mobilpay/Payment/Request/Abstract.php';
require_once 'Mobilpay/Payment/Request/Card.php';
require_once 'Mobilpay/Payment/Request/Notify.php';
require_once 'Mobilpay/Payment/Invoice.php';
require_once 'Mobilpay/Payment/Address.php';

$errorCode       = 0;
$errorType      = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_NONE;
$errorMessage   = '';

if (strcasecmp($_SERVER['REQUEST_METHOD'], 'post') == 0)
{
   if(isset($_POST['env_key']) && isset($_POST['data']))
   {
      #calea catre cheia privata
      #cheia privata este generata de mobilpay, accesibil in Admin -> Conturi de comerciant -> Detalii -> Setari securitate
      $privateKeyFilePath = 'i.e: /home/certificates/private.key';
      
      try
      {
      $objPmReq = Mobilpay_Payment_Request_Abstract::factoryFromEncrypted($_POST['env_key'], $_POST['data'], $privateKeyFilePath);
      #uncomment the line below in order to see the content of the request
      //print_r($objPmReq);
      $errorCode = $objPmReq->objPmNotify->errorCode;
      // action = status only if the associated error code is zero
      if ($errorCode == "0") {
             switch($objPmReq->objPmNotify->action)
             {
            #orice action este insotit de un cod de eroare si de un mesaj de eroare. Acestea pot fi citite folosind $cod_eroare = $objPmReq->objPmNotify->errorCode; respectiv $mesaj_eroare = $objPmReq->objPmNotify->errorMessage;
            #pentru a identifica ID-ul comenzii pentru care primim rezultatul platii folosim $id_comanda = $objPmReq->orderId;
         case 'confirmed':
               #cand action este confirmed avem certitudinea ca banii au plecat din contul posesorului de card si facem update al starii comenzii si livrarea produsului
            //update DB, SET status = "confirmed/captured"
            $errorMessage = $objPmReq->objPmNotify->errorMessage;
             break;
            case 'confirmed_pending':
               #cand action este confirmed_pending inseamna ca tranzactia este in curs de verificare antifrauda. Nu facem livrare/expediere. In urma trecerii de aceasta verificare se va primi o noua notificare pentru o actiune de confirmare sau anulare.
            //update DB, SET status = "pending"
            $errorMessage = $objPmReq->objPmNotify->errorMessage;
             break;
            case 'paid_pending':
               #cand action este paid_pending inseamna ca tranzactia este in curs de verificare. Nu facem livrare/expediere. In urma trecerii de aceasta verificare se va primi o noua notificare pentru o actiune de confirmare sau anulare.
            //update DB, SET status = "pending"
            $errorMessage = $objPmReq->objPmNotify->errorMessage;
             break;
            case 'paid':
               #cand action este paid inseamna ca tranzactia este in curs de procesare. Nu facem livrare/expediere. In urma trecerii de aceasta procesare se va primi o noua notificare pentru o actiune de confirmare sau anulare.
            //update DB, SET status = "open/preauthorized"
            $errorMessage = $objPmReq->objPmNotify->errorMessage;
             break;
            case 'canceled':
               #cand action este canceled inseamna ca tranzactia este anulata. Nu facem livrare/expediere.
            //update DB, SET status = "canceled"
            $errorMessage = $objPmReq->objPmNotify->errorMessage;
             break;
            case 'credit':
               #cand action este credit inseamna ca banii sunt returnati posesorului de card. Daca s-a facut deja livrare, aceasta trebuie oprita sau facut un reverse.
            //update DB, SET status = "refunded"
            $errorMessage = $objPmReq->objPmNotify->errorMessage;
             break;
         default:
            $errorType      = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT;
             $errorCode       = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_ACTION;
             $errorMessage    = 'mobilpay_refference_action paramaters is invalid';
             break;
             }
      }
      else {
      //update DB, SET status = "rejected"
      $errorMessage = $objPmReq->objPmNotify->errorMessage;
         }
      }
      catch(Exception $e)
      {
         $errorType       = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_TEMPORARY;
         $errorCode      = $e->getCode();
         $errorMessage    = $e->getMessage();
      }
   }
   else
   {
      $errorType       = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT;
      $errorCode      = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_POST_PARAMETERS;
      $errorMessage    = 'mobilpay.ro posted invalid parameters';
   }
}
else
{
   $errorType       = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT;
   $errorCode      = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_POST_METHOD;
   $errorMessage    = 'invalid request metod for payment confirmation';
}

header('Content-type: application/xml');
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
if($errorCode == 0)
{
   echo "<crc>{$errorMessage}</crc>";
}
else
{
   echo "<crc error_type=\"{$errorType}\" error_code=\"{$errorCode}\">{$errorMessage}</crc>";
}
?>

wayn3
Average Member
Mesaje: 64
Membru din: Sâm Iun 12, 2010 2:13 pm

Re: Implementare mobilpay api card

Mesajde wayn3 » Dum Feb 07, 2016 3:40 pm

Am rezolvat, problema era de fapt de la providerul de hosting pe care efectuam testele, care are protectie impotriva botilor, prin urmare nu permitea site-ului mobilpay sa imi citeasca pagina de callback..
In contul de admin, la detaliile tranzactiei primeam statusul "confirmed" dar nu mi se citea pagina de callback.. Prin urmare primeam eroarea "IDS_Model_Purchase_Sms_Online_INVALID_RESPONSE_BODY". Ma bucur ca am reusit sa ii dau de capat si multumesc pentru sugestie pont.

Sper sa ii fie cuiva de ajutor pe viitor acest post iar daca nu, voi incerca sa ajut personal la wayn3_008@yahoo.com pentru ca stiu cat de enervanta poate fi implementarea daca nu ai mai facut-o.


Înapoi la “Software”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 3 vizitatori