رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
وریفای و ستل کردن پرداخت با درگاه ملت
#1
سلام خسته نباشید
من برای یه سایتی درگاه پرداخت بانک ملت رو گذاشتم bpPayRequest انجام میشه و پول هم از حساب مشتری کم میشه ولی به حساب صاحب درگاه واریز نمیشه و برگشت داده میشه به حساب مشتری!
من اول یه تابع استاتیک با محتوای زیر داخل کامپونتام تعریف کردم


public static function verifyRequest($orderId, $saleorderid, $salerefrenceid) {
       $client = new nusoap_client(self::$webservice);
       if($client->getError()) {
           echo 'error: '.$client->getError();
       }
       else {
           $terminal_id = self::$terminalId;
           $username = self::$username;
           $password = self::$password;
           $orderID = $orderId;
           $saleorderID = $saleorderid;
           $verifyorderid = $salerefrenceid;

           $params = array(
               'terminalId' => $terminal_id,
               'userName' => $username,
               'userPassword' => $password,
               'orderId' => $orderID,
               'saleOrderId' => $saleorderID,
               'saleReferenceId' => $verifyorderid
           );
       }
       $result = $client->call('bpVerifyRequest', $params, self::$namespace);
       if($client->fault) {
           echo '<h2>Fault</h2><pre>';
           print_r($result);
           echo '</pre>';
           die();
       }
       $err = $client->getError();
       if($err) {
           // Display the error
           echo '<h2>Error</h2><pre>'.$err.'</pre>';
           die();
       }
       else {
           $terminal_id = self::$terminalId;
           $username = self::$username;
           $password = self::$password;
           $orderID = $orderId;
           $saleorderID = $saleorderid;
           $verifyorderid = $salerefrenceid;

           $params = array(
               'terminalId' => $terminal_id,
               'userName' => $username,
               'userPassword' => $password,
               'orderId' => $orderID,
               'saleOrderId' => $saleorderID,
               'saleReferenceId' => $verifyorderid
           );
           $result = $client->call('bpInquiryRequest', $params, self::$namespace);
           if($client->fault) {
               echo '<h2>Fault</h2><pre>';
               print_r($result);
               echo '</pre>';
               die();
           }
           $err = $client->getError();
           if($err) {
               // Display the error
               echo '<h2>Error</h2><pre>'.$err.'</pre>';
               die();
           }
           else {
               $terminal_id = self::$terminalId;
               $username = self::$username;
               $password = self::$password;
               $orderID = $orderId;
               $saleorderID = $saleorderid;
               $verifyorderid = $salerefrenceid;

               $params = array(
                   'terminalId' => $terminal_id,
                   'userName' => $username,
                   'userPassword' => $password,
                   'orderId' => $orderID,
                   'saleOrderId' => $saleorderID,
                   'saleReferenceId' => $verifyorderid
               );
               $result = $client->call('bpReversalRequest', $params, self::$namespace);
               if($client->fault) {
                   echo '<h2>Fault</h2><pre>';
                   print_r($result);
                   echo '</pre>';
                   die();
               }
               $err = $client->getError();
               if($err) {
                   // Display the error
                   echo '<h2>Error</h2><pre>'.$err.'</pre>';
                   die();
               }
               else {
                   $terminal_id = self::$terminalId;
                   $username = self::$username;
                   $password = self::$password;
                   $orderID = $orderId;
                   $saleorderID = $saleorderid;
                   $verifyorderid = $salerefrenceid;

                   $params = array(
                       'terminalId' => $terminal_id,
                       'userName' => $username,
                       'userPassword' => $password,
                       'orderId' => $orderID,
                       'saleOrderId' => $saleorderID,
                       'saleReferenceId' => $verifyorderid
                   );
                   $result = $client->call('bpSettleRequest', $params, self::$namespace);
                   if($client->fault) {
                       echo '<h2>Fault</h2><pre>';
                       print_r($result);
                       echo '</pre>';
                       die();
                   }
                   $err = $client->getError();
                   if($err) {
                       // Display the error
                       echo '<h2>Error</h2><pre>'.$err.'</pre>';
                       die();
                   }
                   else {
                       return true;
                   }
               }
           }
       }
   }
که همونطور که مشخصه وقتی که وریفای ..... ستل درست اگه انجام بشه true بر میگردونه حالا من توی صفحه ی callback به شکل زیر چک کردم که اگه متدم true داد عملیاتو تو دیتابیس انجام بده و فاکتور رو هم نشون بده هم برای فرد اس ام اس کنه که انجام میشه ولی باز پول به حساب مشتری برگشت داده میشه!!!! می خواستم بدونم مشکلی تو کدام وجود داره؟!


public function actionFacture() {
       $RefId = $_POST['RefId'];
       $ResCode = $_POST['ResCode'];
       $SaleOrderId = $_POST['SaleOrderId'];
       $SaleReferenceId = $_POST['SaleReferenceId'];
$pay = Pay::model()->findByPk($SaleOrderId);
if(!$pay) {
                throw new CHttpException('500', 'فاکتور مورد نظر یافت نشد.');
            }
            else {
                if($pay->refid == $RefId) {
if(Payment::verifyRequest($pay->id, $SaleOrderId, $SaleReferenceId)) {
.
.
.
}
}

Huh  Idea
پاسخ
تشکر شده توسط:
#2
شما بعد از وریفای حتماً باید Settle رو هم صدا بزنید وگرنه تراکنش کامل نشده محسوب میشه. این سیستم رو برای وقتی گذاشتن که شما چک میکنید پول درست واریز شده ولی متوجه میشین موجودی کالا تمام شده و میخواین پول مشتری رو پس بدین.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان