آموزش اتصال idpay در php (ویدیویی + سورس)

اتصال idpay در php – با استفاده از api که آیدی پی به ما می دهد صفحه پرداختی را خواهیم ساخت که امکان پرداخت مبلغ تا سقف 50 میلیون تومان را به ما می دهد .
این نوع درگاه هم همانند دیگر درگاه ها 2 دارای 2 بخش :
- request شامل ( index.php و header.php )
- verify شامل ( idpay.php )
می باشد .
ویدیو آیدی پی در php
لینک یوتیوب .
1- request در idpay
فایل index.php :
<?php $GLOBALS['title'] = "رپید کد - آموزش اتصال به idpay در PHP"; require_once $_SERVER['DOCUMENT_ROOT'] ."/parts/header.php"; ?> <form class="col-6 m-auto" action="" method="post"> <?php if(!empty($err_idpay)): ?> <p class="text-center p-2 rounded fw-bold bg-warning text-dark"><?= $err_idpay ?></p> <?php endif; ?> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text" id="basic-addon1">ریال</span> </div> <input type="number" class="form-control text-center mb-3" name="amount" placeholder="قیمت ..."> </div> <input type="hidden" name="ref" value="idpay_request"> <center><input type="submit" class="btn btn-success shadow ps-3 pe-3" value="خرید"></center> </form> <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/parts/footer.php"; ?>
بخش بالا header.php :
<?php if (!empty($_POST['ref'])) { if ($_POST['ref'] == "idpay_request") { if (!empty($_POST['amount']) && is_numeric($_POST['amount'])) { $res = requestIdPay($_POST['amount'] , "400" , "خرید از رپید کد"); $link = $res ?: false; if ($link) { $url = payIdPay($link); header("Location: {$url}"); } else { $err_idpay = "خطا در اتصال به آیدی پی"; } } } } ?>
2- verify در idpay
فایل idpay.php
<?php $GLOBALS['title'] = "رپید کد - آموزش اتصال به آیدی پی در PHP"; require_once $_SERVER['DOCUMENT_ROOT'] . "/parts/header.php"; $payment_id = $_GET['id'] ?? null; $order_id = $_GET['order_id'] ?? null; $message = [ "text" => "", "css_class" => "" ]; if ($payment_id && $order_id) { $res = verifyIdPay($payment_id,$order_id); /* 100 پرداخت تایید شده است 101 پرداخت قبلا تایید شده است 200 به دریافت کننده واریز شد */ if (!empty($res['status']) && ($res['status'] == 100 || $res['status'] == 101 || $res['status'] == 200)) { $amount = $res['amount'] ?? false; $amount_currency = $amount ? " به مبلغ " . $amount/10 . " تومان" : ""; $order_id_message = $order_id ? " و شماره سفارش {$order_id}" : ""; $message['text'] = "خرید موفق{$amount_currency}{$order_id_message}"; $message['css_class'] = "bg-success text-white"; } else { $message['text'] = "خرید ناموفق"; $message['css_class'] = "bg-danger"; } } else { $message['text'] = "پارامتر نامعتبر"; $message['css_class'] = "bg-danger"; } ?> <p class="text-center p-2 rounded fw-bold <?= $message['css_class'] ?>"><?= $message['text'] ?></p> <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/parts/footer.php"; ?>
خروجی پرداخت در idpay

قبل از استفاده از سورس در فایل functions.php وارد شده :
1- مقدار IDPAY_API_KEY مطابق با api key خود وارد کنید .
2- در تابع requestIdPay به جای example.com دامنه خود را وارد کنید .
لیست نظرات
سلام و خسته نباشید ابتدا تشکر میکنم از کد و آموزشی که ارائه دادی در قسمتی از کد اعداد 100 و 101 و 200 استفاده کردید که برای تراکنش موفق هستش در راهنمای وبسایت idpay کد عددی 7 رو برای "انصراف از پرداخت" در نظر گرفته در کدی که شما دادید وقتی شرط res['status'] == 7 قرار میدم که وضعیت "انصراف از پرداخت" رو هم دریافت کنم ، هیچ مقداری بهم نمیده حتی res['status'] را هم در بخش "خرید ناموفق" در message قرار میدم تا مقدارش رو ببینم ، هیچ مقداری درونش قرار نمیگیره ممنون میشم راهنمایی بفرمایید که چطوری "انصراف از پرداخت" رو هم میشه دریافت کرد
درود ، برای حل این مشکل می تونید از
کمک بگیرید در فایل idpay.php اما بهتر هست برای امنیت بیشتر با https://api.idpay.ir/v1.1/payment/inquiry استعلام جزییات رو دریافت کنید که status هم بخشی از این جزییات هستسلام مهندس جان شما یه زحمت میتونید بکشید سورس درگاه https://nextpay.org/ نسکت پی هم ایجاد کنید. ممنون از طف شما
سلام میخام درگاه واقعی باشه ولی همش میره در sandbox کدوم رو باید بردارم تا درگاه واقعی باشه 'header' => "Content-Type: application/json\r\n" . "Content-Length: {$body_length}\r\n" . "X-API-KEY: {$api_key}\r\n" . "X-SANDBOX: 1\r\n", ممنون میشم خط رو برام تصحیح کنید
بخش
رو در تابع httpRequestPost حذف کنیدطبق فرمایش شما حذف کردم ولی خطا در اتصال به آیدی پی میده اینجوری شد کدش header' => "Content-Type: application/json\r\n" . "Content-Length: {$body_length}\r\n" . "X-API-KEY: {$api_key}\r\n",
متن خطا رو بفرستید .
متن فارسی داده میتونید چک کنید footballes.ir
اگر اطلاعات حساسی در وبسایت تون ندارید اطلاعات ورود به هاست رو ارسال کنید تا بررسی بشه .