این آموزش فقط برای لاراول نیست و شما با هر فریم ورک php یا بدون فریم ورک میتونید از این پکیچ استفاده کنید
برای فهمیدن این آموزش شما باید آشنایی نسبی با لاراول یا php و شئ گرایی داشته باشید و درواقع این برای مرحله ای هست که کاربر سفارش ثبت کرده و فاکتور صادر شده حالا میخواید به درگاه پرداخت متصل بشید
برای ایجاد قابلیت درگاه پرداخت آیدیپی توی سایت یا اپ شما اول نیاز دارید که توی سایت آیدیپی اکانت داشته باشید و سایت یا اپلیکیشنتونو ثبت کنید و تایید بشید
توی حالت sandbox بدون داشتن اکانت کدتون رو بنویسید و بعدش درگاه بگیرید
ما اینجا تصور میکنیم که شما همه ی مراحلو انجام دادین و API KEY هم گرفتین
و API KEY توی آیدیپی یه همچین چیزیه 6a7f99eb-7c20-4412-a972-6dfb7cd253a4
که توی سایت آیدیپی توی اکانتتون هست و ازونجا باید کپیش کنید
خب میریم توی پروژه ی لاراولمون
اول از همه پکیچ زیر باید نصب کنید , توی کامند لاین از طریق کامپوزر این دستور اجرا کنید :
composer require shopid/idpay
سورس : https://github.com/shopid-dev/idpay-php
این پکیج خیلی سبکه و راحت نصب میشه
تمام مقادیر بازگشتی و خطا ها به صورت json هست
خب حالا باید اینو توی کنترلرمون استفاده کنیم
روش استفاده هم خیلی راحته اول باید ایمپورتش کنیم
use shopid\idPay;
بعد توی متد مورد نظرمون یه شئ ازش ایجاد میکنیم
ایجاد شئ :
$idpay = new idPay(["apiKey" => "6a7f99eb-7c20-4412-a972-6dfb7cd253a4", "sandbox" => true]);
پارامتر apiKey که همونه که بالا توضیح دادیم
پارامتر sandbox حالت تست هست که اگه true باشه شما میتونید بدون داشتن درگاه هم کدتون رو تست کنید
try { $req = $idpay->apiRequest([ "order_id" => "1123", "amount" => 2000, "callback" => "https://www.mywebsite.com/", "name" => "shopid", "phone" => "09120000000", "mail" => "aa@gmail.com", "desc" => "order 1123", ]); print_r(json_decode($req)); } catch (Exception $error) { print_r(json_decode($error->getMessage())); }
پارامتر order_id همون شماره فاکتور یا سفارشه توی سایت شما
پارامتر amount مبلغ سفارشه به ریال
پارامتر callback آدرسی هست که کاربر بعد از پرداخت چه موفق چه ناموفق به سایت یا اپ برمیگرده و باید وضیعت پرداخت مشخص بشه
پارامتر های name و phone و mail هم که مشخصه باید از یوزر بگیرید
پارامتر desc توضیح تراکنش
تموم شد !
اگه خطایی توی روند درخواست پیش نیاد به شما یک url برگشت داده میشه که کاربر باید به اون هدایت کنید حالا با هدر یا اگه برنامتون فقط api هست اونو به فرانت بفرستید و ازش استفاده کنید همچنین مقدار id هم جداگانه دارید که توی دیتابیس ذخیره کنید و بعد از بازگشت برای صحت پرداخت ازش استفاد کنید
خب حالا کاربر بعد از پرداخت موفق یا نا موفق دوباره به سایت شما برمیگرده و شما باید بررسی کنید که پرداخت انجام شده یا نه و عملیات مربوط به سفارش انجام بدین و همچنین تراکنشو تایید کنید
چیزی که به شما برمیگرده json هست که داکیومنت مقادیر و توضیحاتشون اینجا هست
https://idpay.ir/web-service/v1.1/
try { $verify = $idpay->verify( [ "order_id" => "1123", "id" => "350130d9fc8b5b569fecb600538f7e72", ] ); var_dump(json_decode($verify)); } catch (Exception $error) { print_r(json_decode($error->getMessage())); }
پارامتر id همون id درخواست پرداخته که آیدیپی میده و شما باید از دیتابیس فراخوانی کنید (قبلا توی قسمت ایجاد درخواست ذخیرش کردید)
اینجا هم اگه خطایی دریافت نکنید یعنی پرداخت انجام شده و تایید شده و تمام
کد های خطا ها هم اینجا میتونید ببنید
https://idpay.ir/web-service/v1.1/#ad39f18522
همچنین کد خطای 9999 مربوط به خطای شبکه هست