وبلاگ شخصی سروش غفاری

نوشته های شخصی و کاری من [سروش غفاری]

وبلاگ شخصی سروش غفاری

نوشته های شخصی و کاری من [سروش غفاری]

سلام. سروش غفاری هستم، برنامه نویس و توسعه دهنده وب. تصمیم دارم مطالب و تجربیاتی که فکر میکنم برای سایر دوستان همکارم مفید باشد را در اینجا منتشر کنم و همچنین از این کانال استفاده کنم تا از نظرات و تجربیات سایر فعالان در زمینه وب هم استفاده کنم.

طبقه بندی موضوعی
بایگانی

کلاس پرداخت آنلاین بانک پارسیان برای CodeIgniter

سلام. کلاسی که در ادامه لینک دانلود آن را قرار دادم برای استفاده از درگاه پرداخت پارسیان در برنامه های نوشته شده با استفاده از فریم ورک CodeIgniter است.

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

اما نحوه استفاده از کلاس. قبل از هرچیز لازم است فایل parsian.php را در بخش کتابخانه های CodeIgniter که به صورت پیشفرض در مسیر /application/libraries قرار داره کپی کنید.
همان طور که حتما میدانید برای ذخیره اطلاعات پرداخت ها باید یک جدول در دیتابیس خود بسازید. فرض میکنیم جدول زیر را برای این کار در نظر گرفته ایم:
payment(OrderID, amount, authority, status)

در این جدول فیلد OrderID باید کلید اصلی باشد. به این ترتیب هیچ دو رکوردی را نخواهیم داشت که OrderID یکسان داشته باشند.
حالا در جایی از برنامه که میخواهیم عملیات پرداخت را شروع کنیم، پیش از آغاز عملیات پرداخت باید یک OrderID برای این عملیات در نظر بگیریم و آن را در دیتابیس ذخیره کنیم.
هنگام فراخوانی کلاس parsian باید پین کدی را که بانک پارسیان به شما داده است را در اندیس pin از یک آرایه برای آن ارسال کنید:
$this->load->library('parsian', array('pin' =>"22j2k2k2k2k2klda"));

به جای رشته نوشته شده در مقابل pin باید پین کدی که بانک به شما داده است را بنویسید. برای انجام عملیات پرداخت و انتقال کاربر به درگاه پرداخت بانک باید از تابع do_payment استفاده کنیم. اما قبل از تشریح ورودی های این تابع و نحوه استفاده از آن توضیح مختصری در رابطه با وب سرویس بانک پارسیان میدهم.
همان طور که مشخص است فرآیند با فراخوانی وب سرویس شروع میشود (مرحله ۰) و پس از فراخوانی وب سرویس متدی با نام PinPaymentRequest را باید فراخوانی کنیم (مرحله ۱). برای فراخوانی این تابع باید پین کد فروشنده ، مبلغ تراکنش و شناسه تراکنش یا همان OrderID و یک آدرس که به آن callback میگوییم را به عنوان ورودی به آن بدهیم. دقت کنید که OrderID باید unique باشد، یعنی نمیتوانیم یک OrderID را دوبار برای وب سرویس بانک ارسال کنیم. خروجی این متد یک کد تصادفی با نام authority و یک عدد با نام status است. کد authority در حقیقت شناسه تراکنش در سیستم بانک میباشد و شما حتما باید آن را نگهداری کنید. برای پیگیری یک تراکنش در بانک لازم است این کد را داشته باشد. کد status هم وضعیت فرآیند پرداخت را مشخص میکند. در این مرحله اگر به هر دلیلی بانک کد authority را برای شما نفرستد عملیات ناموفق به پایان رسیده است. تنها در صورتی که مقدار کد status برابر با ۰ باشد درخواست شما برای عملیات پرداخت با موافقت بانک مواجه شده است و میتوانید فرآیند را ادامه دهید. سایر مقادیر status نشان دهنده وقوع خطایی در انجام تراکنش میباشند که در پایان همین مطلب لیست کدهای خطا را خواهم نوشت. در صورتی که status در این مرحله برابر با ۰ بود باید کد authority را در جدول مربوط به پرداخت ها برای این پرداخت ذخیره کنیم و سپس کاربر را به درگاه پرداخت بانک هدایت کنیم. (مرحله ۲). در اینجا کاربر اطلاعات حساب خود را وارد میکند و بانک پس از بررسی صحت این اطلاعات وجه تراکنش را از حساب کاربر کسر میکند. شما هیچ دخالتی در این مرحله ندارید. پس از انجام عملیات پرداخت در این مرحله کاربر مجددا به سایت شما هدایت میشود. مسیر بازگشت کاربر همان مسیری است که در مرحله اول با عنوان callback در ورودی متد PinPaymentRequest قرار داده بودیم. در این مرحله (مرحله ۳) پول از حساب کاربر کم شده است اما به حساب شما منتقل نشده است. در اینجا بانک با استفاده از روش get کد authority را برای شما ارسال کرده است. شما باید مجددا مقدار status را چک کنید. در صورتی که این بار هم مقدار ۰ به آن اختصاص داده شده بود، پرداخت با موفقیت انجام شده است و پول به حساب شما انتقال یافته است. در غیر این صورت عملیات rollback خواهد شد و وجه کسر شده، به حساب کاربر بازخواهد گشت.
فکر میکنم این مطلب بسیار طولانی تر از آنکه فکر میکردم شده و ضمنا حالا که متوجه نحوه عملکرد سیستم شده اید درک چگونگی فعالیت این کلاس هم برایتان بسیار ساده خواهد بود.باقی توضیحات را در فایل parsian guide.pdf مطالعه کنید. اگر هم سوالی داشتید و یا متوجه اشکالی در کلاس شدید به من اطلاع دهید.

کلاس parsian را از اینجا دانلود کنید.

نظرات  (۱)

  • مرتضی رحمانی
  • سلام بزرگوار
    لینک دانلود این مطلب مشکل داره.
    آیا امکانش هست جای دیگه ای آپلود کنید؟
    سپاس.
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    تجدید کد امنیتی