امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ارسال مقدار amout به متد دیگه
#1
سلام
من از درگاه پرداخت زرین پال برای سایتم استفاده میکنم
https://github.com/MahdiMajidzadeh/CodeI...al-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
پاسخ
#2
سلام
به انجمن کدایگنایتر خوش آمدید.
قبل از اینکه کاربر به درگاه زرین پال فرستاده بشه یه رکورد داخل جدول ثبت میکنید و آی دی اون رو داخل سشن نگهداری میکنید بعد از اینکه کاربر پرداخت رو انجام داد بوسیله اون آی دی سشن اطلاعات فاکتور مثل قیمت و موارد دیگه رو بازیابی می کنید و در نهایت درخواست verify رو به زرین پال ارسال می کنید.
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#3
ممنون از جواب شما
چطور باید آیدی رکورد ذخیره شده رو داخل سشن ذخیره کنم؟
پاسخ
#4
بعد از اینکه رکورد رو داخل جدول ذخیره کردی ID اون رکورد رو داخل سشن ذخیره میکنی :
کد php:
$this->session->set_userdata('order_id'$orderId); 
بعد از اینکه کاربر از درگاه برگشت کافیه سشن order_id رو بخونی:
کد php:
$order_id $this->session->userdata('order_id'); 
حالا رکورد رو اطلاعاتش رو میگیری و عدد سفارش رو  verify Ld میکنی.

پروسه خیلی ساده است شما قبل از اینکه کاربر رو ریدایرکت کنی به درگاه داخل جدول سفارشاتت یه رکورد ذخیره میکنی و آی دی اون رکورد رو داخل سشن ذخیره میکنی وقتی کاربر پرداختش رو انجام داد با استفاده از اون سشن اطلاعات سفارش رو بدست میاری
لطفا قبل از ارسال هرگونه پست قوانین سایت را مطالعه کنید.
----
وب سایت میثم محمودی
پاسخ
#5
با تشکر از شما
بنده الان پرداخت رو که انجام میدم بعد از پرداخت میره صفحه لاگین

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

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


پرش به انجمن:


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