آموزش اتصال 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
اگر اطلاعات حساسی در وبسایت تون ندارید اطلاعات ورود به هاست رو ارسال کنید تا بررسی بشه .