انجمن کدایگنایتر فارسی
ارسال مقدار amout به متد دیگه - نسخه‌ی قابل چاپ

+- انجمن کدایگنایتر فارسی (http://code-igniter.ir)
+-- انجمن: کد ایگنایتر 3 (http://code-igniter.ir/forumdisplay.php?fid=4)
+--- انجمن: کتابخانه ها و افزودنی ها (http://code-igniter.ir/forumdisplay.php?fid=7)
+--- موضوع: ارسال مقدار amout به متد دیگه (/showthread.php?tid=108)



ارسال مقدار amout به متد دیگه - amir_76 - 2018/08/15

سلام
من از درگاه پرداخت زرین پال برای سایتم استفاده میکنم
https://github.com/MahdiMajidzadeh/CodeIgniter-Zarinpal-gateway

من به درستی به درگاه پرداخت متصل میشم با کد زیر:

کد php:
   function Payment()
 
   {
 
       $this->load->library('zarinpal');
 
       $merchant_id "134654-44654-5654654";
 
       $amount $this->inout->post('amout');
 
       $desc "تست درگاه پرداخت";
 
       $call_back "https://site.com/Users/VerifyPayment";
 
       $mobile "09121234567";
 
       $email"amir@yahoo.com";
 
       if($this->zarinpal->webgate($merchant_id $amount$desc$call_back$mobile$email)){
 
           $authority $this->zarinpal->getAuthority();
 
           $this->zarinpal->redirect();
 
       }
 
       else{
 
           $error $this->zarinpal->getError();
 
       }
 
   



حالا موقع تابع برگشت من چطور باید مقدار amout رو بگیرم؟ که بدم به تابع Verify ؟؟؟
کد php:
function VerifyPayment()
 
   {
 
       $this->load->library('zarinpal');
 
       $merchant_id "134654-44654-5654654";
 
       $amount = ??;
 
       $authority $_GET['Authority'];
 
       if($_GET['Status'] == 'OK'){
 
           if($this->zarinpal->verify($merchant_id,$amount$authority)){
 
               $refid $this->zarinpal->getRefId();
 
               if($refid == 100)
 
               {
 
                   echo "pay ok";
 
               }

 
           }
 
           else{
 
               $error $this->zarinpal->getError();
 
               echo $error;
 
           }
 
       }
 
       else{
 
           echo 'cancel';
 
       }
 
   



روش های ذخیره مقدار در سشن و this->payment() رو تست کردم جواب نمیده
ممنون میشم دوستانی که به درستی زرین پال رو در کد ایگنایتر استفاده کردن کدهاشو رو اینجا به اشتراک بزارن
ممنون  Heart


RE: ارسال مقدار amout به متد دیگه - admin - 2018/08/15

سلام
به انجمن کدایگنایتر خوش آمدید.
قبل از اینکه کاربر به درگاه زرین پال فرستاده بشه یه رکورد داخل جدول ثبت میکنید و آی دی اون رو داخل سشن نگهداری میکنید بعد از اینکه کاربر پرداخت رو انجام داد بوسیله اون آی دی سشن اطلاعات فاکتور مثل قیمت و موارد دیگه رو بازیابی می کنید و در نهایت درخواست verify رو به زرین پال ارسال می کنید.


RE: ارسال مقدار amout به متد دیگه - amir_76 - 2018/08/16

ممنون از جواب شما
چطور باید آیدی رکورد ذخیره شده رو داخل سشن ذخیره کنم؟


RE: ارسال مقدار amout به متد دیگه - admin - 2018/08/17

بعد از اینکه رکورد رو داخل جدول ذخیره کردی ID اون رکورد رو داخل سشن ذخیره میکنی :
کد php:
$this->session->set_userdata('order_id'$orderId); 
بعد از اینکه کاربر از درگاه برگشت کافیه سشن order_id رو بخونی:
کد php:
$order_id $this->session->userdata('order_id'); 
حالا رکورد رو اطلاعاتش رو میگیری و عدد سفارش رو  verify Ld میکنی.

پروسه خیلی ساده است شما قبل از اینکه کاربر رو ریدایرکت کنی به درگاه داخل جدول سفارشاتت یه رکورد ذخیره میکنی و آی دی اون رکورد رو داخل سشن ذخیره میکنی وقتی کاربر پرداختش رو انجام داد با استفاده از اون سشن اطلاعات سفارش رو بدست میاری


RE: ارسال مقدار amout به متد دیگه - amir_76 - 2018/08/17

با تشکر از شما
بنده الان پرداخت رو که انجام میدم بعد از پرداخت میره صفحه لاگین

در صورتی که سشن نباید destroy بشه و انقضاش برای زمان طولانیه!!

چرا من از داخل پنلم میرم پرداخت کنم بعدش موقع برگشت از درگاه پرداخت میره صفحه لاگین؟


RE: ارسال مقدار amout به متد دیگه - admin - 2018/08/31

این مشکل مربوط به نحوه کدنویسی و منطق اسکریپتی که نوشتید داره و نمیشه همینطوری قطعی نظر داد. اما چند احتمال وجود داره. زمان ست کردن $orderId قبل از ارسال کاربر به درگاه شاید همه سشن ها حذف می شوند و همین باعث میشود کاربر اطلاعاتی که داخل سشن ذخیره کردید از بین بره.
میتونید از متغیر سراسری $_SESSION به جای استفاده از $this->session->userdata استفاده کنید تا مطمئن بشید مشکل از کتابخانه مربوط به سشن کد ایگنایتر نیست.
همچنین زمانی که سشن مربوط به درگاه رو ست میکنید به جای ریدایرکت کردن کاربر به درگاه یه print_r از کل سشن بکنید ببینید چه اطلاعاتی داخل سشن ذخیره شده و ببینید اطلاعات لاگین وجود داره یا حذف شده.