درگاههای مختلف،
یک مسیر پرداخت.
درگاههای پرداخت ایران را با یک رابط یکپارچه در PHP به برنامه خود وصل کنید. مبلغ را با واحد مشخص بسازید، کاربر را به درگاه بفرستید و نتیجه پرداخت را تایید کنید.
purchase → verifycomposer require eram/pardakht:^1.0@betaهمراه یک پرداخت
یک سفارش، دو مسیر.
DEMO-AUTHORITYpurchase()سفارش و پاسخ درگاه، هر دو نمونهاندیک درخواست پرداخت ساخته میشود.
مبلغ و شناسه سفارش را مشخص کنید. شناسه مرجع دریافتی را همراه سفارش و نام درگاه در پایگاه داده نگه دارید.
use Eram\Abzar\Money\Amount;
use Eram\Pardakht\Http\PurchaseRequest;
$response = $gateway->purchase(new PurchaseRequest(
amount: Amount::fromToman(50_000),
callbackUrl: 'https://example.com/payment/callback',
orderId: '1042',
description: 'Demo order',
));
// Save the reference with your payment attempt.
$response->getReferenceId();GETسفارش و پاسخ درگاه، هر دو نمونهاندکاربر به درگاه پرداخت میرود.
زرینپال نشانی صفحه پرداخت را برمیگرداند. RedirectResponse مشخص میکند که انتقال با روش GET انجام میشود.
if ($response->isPost()) {
echo $response->renderAutoSubmitForm();
} else {
header('Location: ' . $response->getUrl());
exit;
}verify()سفارش و پاسخ درگاه، هر دو نمونهاندنتیجه را از درگاه تایید بگیرید.
بازگشت کاربر به سایت بهتنهایی نشانه پرداخت موفق نیست. درخواست ذخیرهشده را بازیابی کنید، داده مورد نیاز درگاه را آماده کنید و verify() را فراخوانی کنید.
// Restore the saved payment attempt first.
// Amount comes from your database, not the browser.
$callbackData['amount'] = $storedAmount->inRials();
$transaction = $gateway->verify($callbackData);
$transaction->getStatus()->value; // 'verified'
$transaction->getTrackingCode(); // '9001042' (sample)verifiedسفارش و پاسخ درگاه، هر دو نمونهاندنتیجه تاییدشده، برای برنامه شما.
زرینپال در این کتابخانه به فراخوانی جداگانه settle() نیاز ندارد. با نتیجه تاییدشده، سفارش را بهروز کنید و تکرار callback را در برنامه خود مدیریت کنید.
use Eram\Pardakht\Contracts\SupportsSettlement;
if ($gateway instanceof SupportsSettlement) {
$transaction = $gateway->settle($transaction);
}
$transaction->getStatus()->value; // 'verified'DEMO-REFpurchase()سفارش و پاسخ درگاه، هر دو نمونهاندیک درخواست پرداخت ساخته میشود.
مبلغ و شناسه سفارش را مشخص کنید. شناسه مرجع دریافتی را همراه سفارش و نام درگاه در پایگاه داده نگه دارید.
use Eram\Abzar\Money\Amount;
use Eram\Pardakht\Http\PurchaseRequest;
$response = $gateway->purchase(new PurchaseRequest(
amount: Amount::fromToman(50_000),
callbackUrl: 'https://example.com/payment/callback',
orderId: '1042',
description: 'Demo order',
));
// Save the reference with your payment attempt.
$response->getReferenceId();POSTسفارش و پاسخ درگاه، هر دو نمونهاندفرم به درگاه بانک ارسال میشود.
ملت به ارسال فرم با روش POST نیاز دارد. RedirectResponse روش انتقال و فیلدهای مورد نیاز را در اختیار شما میگذارد.
if ($response->isPost()) {
echo $response->renderAutoSubmitForm();
} else {
header('Location: ' . $response->getUrl());
exit;
}verify()مرحله بعد: تسویهنتیجه را از درگاه تایید بگیرید.
بازگشت کاربر به سایت بهتنهایی نشانه پرداخت موفق نیست. درخواست ذخیرهشده را بازیابی کنید، داده مورد نیاز درگاه را آماده کنید و verify() را فراخوانی کنید.
// Restore the saved payment attempt first.
// Amount comes from your database, not the browser.
$callbackData['FinalAmount'] = $storedAmount->inRials();
$transaction = $gateway->verify($callbackData);
$transaction->getStatus()->value; // 'verified'
$transaction->getTrackingCode(); // '9001042' (sample)settle()سفارش و پاسخ درگاه، هر دو نمونهاندیک مرحله دیگر: تسویه.
ملت از SupportsSettlement پشتیبانی میکند. پس از تایید، settle() را فراخوانی کنید تا تراکنش با وضعیت settled برگردد.
use Eram\Pardakht\Contracts\SupportsSettlement;
if ($gateway instanceof SupportsSettlement) {
$transaction = $gateway->settle($transaction);
}
$transaction->getStatus()->value; // 'settled'تنظیمات درگاهها چه تفاوتی دارند؟
متدها مشترکاند، اما اطلاعات اتصال و فیلدهای callback برای هر درگاه متفاوت است. ابتدا درگاه را تنظیم کنید و بعد مراحل بالا را دنبال کنید. اطلاعات اتصال را در سرور نگه دارید.
use Eram\Pardakht\Pardakht;
use Eram\Pardakht\Gateway\Zarinpal\ZarinpalConfig;
use Eram\Pardakht\Gateway\Mellat\MellatConfig;
$pardakht = new Pardakht();
// Choose a gateway with your own credentials.
$gateway = $pardakht->create('zarinpal',
new ZarinpalConfig(merchantId: $merchantId)
);
// Or use your Mellat terminal.
$gateway = $pardakht->create('mellat',
new MellatConfig(
terminalId: $terminalId,
username: $username,
password: $password,
)
);این نمونهها با Pardakht 1.0.0-beta.4 و پاسخ شبیهسازیشده درگاه اجرا شدهاند. دکمهها خروجی ذخیرهشده را نشان میدهند؛ PHP اجرا نمیشود، ارتباطی با بانک برقرار نمیشود و پرداختی انجام نمیگیرد.
واحد، بخشی از مبلغ است
تومان در برنامه شما،
ریال برای درگاهی که ریال میخواهد.
Amount را با واحدی که منظورتان است بسازید. مبلغ بهصورت عدد صحیح ریال نگه داشته میشود و هر رابط، واحد مورد نیاز درگاه را میخواند. محاسبات هم مبلغ تازهای برمیگردانند.
کار با مبلغ و واحد پولAmount::fromToman(50_000)$amount->inRials()درگاههای پشتیبانیشده
درگاه خودتان را انتخاب کنید.
بهپرداخت ملت
SOAP · تسویه جداگانه
سامان
SOAP
پارسیان
SOAP · تسویه جداگانه
سداد
REST
پاسارگاد
REST
زرینپال
REST
آیدیپی
REST
زیبال
REST
جیبیت
کد رابط
پیاستار
کد رابط
پیداتآیآر
REST
نکستپی
REST
وندار
REST
سیزپی
REST
این فهرست، رابطهای موجود در همین نسخه کتابخانه است. دریافت درگاه، اطلاعات اتصال و الزامات هر سرویس همچنان لازم است. برای جیبیت و پیاستار، چون راهنمای جداگانهای در این نسخه وجود ندارد، لینک کد منبع را گذاشتهایم.
در کنار منطق برنامه شما
ارتباط با درگاه، یکپارچه.
منطق سفارش، در اختیار شما.
از PHP ساده یا فریمورک خودتان استفاده کنید. پرداخت، ارتباط با درگاه را مدیریت میکند؛ سفارش و چرخه آن در اختیار برنامه شماست.
درخواست درست را بازیابی کنید
شناسه مرجع، درگاه، سفارش و مبلغ را نگه دارید. callback را با همان رکورد تطبیق دهید و از پردازش دوباره سفارش جلوگیری کنید.
نتیجههای مختلف را مدیریت کنید
برای خطای اتصال، خطای درگاه و تایید ناموفق، از استثناهای مشخص کتابخانه استفاده کنید.
به زیرساخت خودتان وصل کنید
برای هماهنگی با برنامه و آزمونها، کلاینت ارتباطی، ثبتکننده لاگ یا مدیریت رویداد خودتان را به کتابخانه بدهید.
با یک درگاه شروع کنید.
نسخه بتا را نصب کنید، اطلاعات اتصال را تنظیم کنید و راهنمای درگاه خودتان را دنبال کنید. پیش از دریافت پرداخت واقعی، اتصال را آزمایش کنید.
- محیط اجرا
- PHP 8.1+
- افزونههای PHP
- curl · json · openssl · soap
- وابستگی Composer
- eram/abzar
- مجوز
- MIT