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

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

اتصال idpay در php – با استفاده از api که آیدی پی به ما می دهد صفحه پرداختی را خواهیم ساخت که امکان پرداخت مبلغ تا سقف 50 میلیون تومان را به ما می دهد .

این نوع درگاه هم همانند دیگر درگاه ها 2 دارای 2 بخش :

  1. request شامل ( index.php و header.php )
  2. 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

idpay در PHP


قبل از استفاده از سورس در فایل functions.php وارد شده :
1- مقدار IDPAY_API_KEY مطابق با api key خود وارد کنید .
2- در تابع requestIdPay به جای example.com دامنه خود را وارد کنید .

دانلود سورس آیدی پی در php

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

لیست نظرات

  1. امید ابراهیمی
    امید ابراهیمی

    سلام و خسته نباشید ابتدا تشکر میکنم از کد و آموزشی که ارائه دادی در قسمتی از کد اعداد 100 و 101 و 200 استفاده کردید که برای تراکنش موفق هستش در راهنمای وبسایت idpay کد عددی 7 رو برای "انصراف از پرداخت" در نظر گرفته در کدی که شما دادید وقتی شرط res['status'] == 7 قرار میدم که وضعیت "انصراف از پرداخت" رو هم دریافت کنم ، هیچ مقداری بهم نمیده حتی res['status'] را هم در بخش "خرید ناموفق" در message قرار میدم تا مقدارش رو ببینم ، هیچ مقداری درونش قرار نمیگیره ممنون میشم راهنمایی بفرمایید که چطوری "انصراف از پرداخت" رو هم میشه دریافت کرد

    03 شهریور 1402 | 09:06:14
  • حسین باقری
    حسین باقری

    درود ، برای حل این مشکل می تونید از

    @$_GET['status'] == 7
    کمک بگیرید در فایل idpay.php اما بهتر هست برای امنیت بیشتر با https://api.idpay.ir/v1.1/payment/inquiry استعلام جزییات رو دریافت کنید که status هم بخشی از این جزییات هست
    03 شهریور 1402 | 13:14:35
  • حسن حیدریان
    حسن حیدریان

    سلام مهندس جان شما یه زحمت میتونید بکشید سورس درگاه https://nextpay.org/ نسکت پی هم ایجاد کنید. ممنون از طف شما

    06 خرداد 1402 | 07:00:14
  • حسن حیدریان
    حسن حیدریان

    سلام میخام درگاه واقعی باشه ولی همش میره در 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", ممنون میشم خط رو برام تصحیح کنید

    29 اردیبهشت 1402 | 18:03:51
    • حسین باقری
      حسین باقری

      بخش

      . "X-SANDBOX: 1\r\n"
      رو در تابع httpRequestPost حذف کنید
      29 اردیبهشت 1402 | 19:22:45
      • حسن حیدریان
        حسن حیدریان

        طبق فرمایش شما حذف کردم ولی خطا در اتصال به آیدی پی میده اینجوری شد کدش header' => "Content-Type: application/json\r\n" . "Content-Length: {$body_length}\r\n" . "X-API-KEY: {$api_key}\r\n",

        29 اردیبهشت 1402 | 20:32:13
        • حسین باقری
          حسین باقری

          متن خطا رو بفرستید .

          29 اردیبهشت 1402 | 22:24:15
          • حسن حیدریان
            حسن حیدریان

            متن فارسی داده میتونید چک کنید footballes.ir

            29 اردیبهشت 1402 | 22:35:01
          • حسین باقری
            حسین باقری

            اگر اطلاعات حساسی در وبسایت تون ندارید اطلاعات ورود به هاست رو ارسال کنید تا بررسی بشه .

            30 اردیبهشت 1402 | 00:11:44
    contact us