آموزش نحوه راه اندازی درگاه پی لاین در php
0 0

آموزش نحوه راه اندازی درگاه پی لاین در php


آموزش نحوه راه اندازی درگاه پی لاین در php

در پست های قبلی نحوه راه اندازی درگاه پرداخت پی لاین در Asp.Net و  Asp.Net MVC 5 را بررسی کردیم. و در این قسمت به صورت کامل نحوه راه اندازی درگاه پرداخت پی لاین در Php می پردازیم.

درگاههای پرداخت زیادی در اینترنت وجود دارند مانند: پی لاین ، زرین پال ، جهان پی و ... این درگاهها ، درگاههای واسط هستند که عمل پرداخت را بین سایت شما و بانک انجام می دهند.

استفاده از این درگاهها خیلی راحت و بی دردسر می باشند. در کنار این درگاهها درگاه مستقیم مانند: درگاه بانک ملت،پارسیان،سامان و... وجود دارند. که باید خودتان از بانک مورد نظر درخواست درگاه کنید.

پیاده سازی این درگاه ها کمی سخت تر و دردسر خود را دارند. نحوه راه اندازی درگاه بانک ملت با  php را می توانید در سایت کارکو مشاهده کنید.

برای راه اندازی درگاه پی لاین ما به چهار صفحه نیاز داریم. که شامل صفحات index.php ، send.php ، return.php و sender.php که به ترتیب این چهار صفحه را توضیح خواهیم داد.

فایل sender.php : کدهای فایل sender.php به صورت زیر می باشند.

<?php
function send($url,$api,$amount,$redirect){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POSTFIELDS,"api=$api&amount=$amount&redirect=$redirect");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $res = curl_exec($ch);
    curl_close($ch);
    return $res;
}
function get($url,$api,$trans_id,$id_get){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POSTFIELDS,"api=$api&id_get=$id_get&trans_id=$trans_id");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $res = curl_exec($ch);
    curl_close($ch);
    return $res;
}

در این فایل دو تابع send و get وجود دارند که از تابع send برای ارسال اطلاعات به درگاه پی لاین استفاده می شود که از این تابع در فایل send.php استفاده کرده ایم.

تابع دیگر که تابع get می باشد برای دریافت اطلاعات از طرف پی لاین استفاده می شود. که شماره تراکنش ، کد پیگیری و پیغام مورد نظر که آیا پرداخت موفق بوده یاخیر را بر می گرداند.

فایل index.php : کدهای فایل index.php به صورت زیر می باشند.

<?php
session_start();
?>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>درگاه پی لاین-ایران گنج</title>
    <meta charset="UTF-8">
    <link href="Content/style.css" rel="stylesheet"/>
</head>
<body>
<?php
$url = "";
$message = "";
if (isset($_POST['submit'])) {
    $price = $_POST['amount'];

    if ($price != "") {
        if (is_numeric($price)) {
            //ثبت اطلاعات در پایگاه داده
            $url = "send.php";
            $_SESSION['price'] = $price;
            header("Location: $url");
        } else {
            $message = "مبلغ وارد شده معتبر نیست";
        }
    } else {
        $message = "شما مبلغی را وارد نکرده اید";
    }
}
?>

<div class="main">

    <form name="pay" action="index.php" method="post">
        <table class="tbl">
            <tr>
                <td colspan="2">
                    <h2>درگاه پی لاین</h2>
                </td>
            </tr>
            <tr>
                <td>مبلغ:</td>
                <td>
                    <input type="text" id="amount" name="amount"/>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: left;">
                    <input type="submit" name="submit" value="پرداخت"/>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <?php
                    if (isset($message)) {
                        echo $message;
                        $message="";
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <a href="http://iranganj.ir" target="_blank">www.iranganj.ir</a>
                </td>
            </tr>
        </table>
    </form>
</div>
</body>
</html>

در این صفحه ما یک فرم ساده داریم که کاربر مبلغ تراکنش را وارد کرده و بر روی دکمه پرداخت کلیک می کند. بعد از اینکه کاربر بر روی دکمه پرداخت کلیک کرد اطلاعات به فایل send.php ارسال می شود و بقیه مراحل از این فایل ادامه پیدا می کند.

فایل send.php : کدهای فایل send.php به صورت زیر می باشند.

<?php
session_start();
?>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8">
    <title>درگاه پی لاین-ایران گنج</title>
    <link href="Content/style.css" rel="stylesheet"/>
</head>
<?php
include_once("sender.php");
$url = 'http://payline.ir/payment-test/gateway-send';
$api = 'adxcv-zzadq-polkjsad-opp13opoz-1sdf455aadzmck1244567';
$message = "";
if (isset($_SESSION['price'])) {
    $amount = $_SESSION['price'];
    unset($_SESSION['price']);
    $redirect = urlencode('http://localhost:8080/payline/return.php');
    $result = send($url, $api, $amount, $redirect);
    if ($result > 0 && is_numeric($result)) {
        $go = "http://payline.ir/payment-test/gateway-$result";
        header("Location: $go");
    }
    switch ($result) {
        case '-1':
            $message = 'api ارسالی با نوع api تعریف شده در payline سازگار نیست';
            break;
        case '-2':
            $message = 'مقدار مبلغ کمتر از 1000 ریال می باشد';
            break;
        case '-3':
            $message = 'آدرس بازگشتی خالی می باشد';
            break;
        case '-4':
            $message = 'درگاهی با درگاه ارسالی شما یافت نشد';
            break;
    }
}else{
    $message="تراکنش شما معتبر نمی باشد";
}

?>
<body>
<div class="main">
    <table class="tbl">
        <tr>
            <td colspan="2">
                <h2>درگاه پی لاین</h2>
            </td>
        </tr>

        <tr>
            <td> پیام خطا</td>
            <td>
                <?php
                echo $message;
                ?>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <a href="http://iranganj.ir" target="_blank">www.iranganj.ir</a>
            </td>
        </tr>
    </table>
</div>
</body>
</html>

در فایل send.php ابتدا فایل sender.php را اینکلود کرده ایم چون می خواهیم از تابع send.php استفاده کنیم.

ما در صفحه index.php مبلغ مورد نظر را توسط سشن به صفحه send.php ارسال کرده ایم و در این صفحه چک می کنیم که آیا سشن وجود دارد یا نه ، سپس مبلغ مورد نظر را دریافت کرده و سشن را خالی می کنیم. سپس اطلاعات مورد نظر که شامل آدرس درگاه پرداخت پی لاین ، api مورد نظر ، مبلغ تراکنش و آدرس برگشتی از بانک می باشد را توسط تابع send ارسال می نماییم. سپس مقدار برگشتی تابع send را در متغیر result ذخیره می کنیم. سپس مقدار برگشتی را چک می کنیم که بزرگتر از صفر و همچنین عدد باشد در این صورت کاربر به صفحه پرداخت هدایت می شود. و اگر شرط درست نباشد حتما خطایی رخ داده است که در بخش switch آن را چک کرده ایم و خطای مورد نظر را چاپ می کنیم.

فایل return.php : کدهای فایل return.php به صورت زیر می باشند.

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8">
    <title>درگاه پی لاین-ایران گنج</title>
    <link href="Content/style.css" rel="stylesheet"/>
</head>
<?php

include_once("sender.php");
$url = 'http://payline.ir/payment-test/gateway-result-second';
$api = 'adxcv-zzadq-polkjsad-opp13opoz-1sdf455aadzmck1244567';
if (isset($_POST['trans_id']) && isset($_POST['id_get'])) {
    $trans_id = $_POST['trans_id'];
    $id_get = $_POST['id_get'];
    $result = get($url, $api, $trans_id, $id_get);
    switch ($result) {
        case '-1' :
            $message = 'api ارسالی با نوع api تعریف شده در payline سازگار نیست';
            break;
        case '-2' :
            $message = 'شماره تراکنش نامعتبر است';
            break;
        case '-3' :
            $message = 'id_get نانعتبر است';
            break;
        case '-4' :
            $message = 'چنین تراکنشی در سیستم وجود ندارد یا تراکنش نامعتبر است';
            break;
        case '1' :
            $message = 'تراکنش موفقیت آمیز بوده است';
            break;
    }
}
?>
<body>
<div class="main">
    <table class="tbl">
        <tr>
            <td colspan="2">
                <h2>درگاه پی لاین</h2>
            </td>
        </tr>
        <tr>
            <td>شماره تراکنش</td>
            <td>
                <?php
                if (isset($id_get)) {
                    echo $id_get;
                }
                else{
                    echo "شماره تراکنش نامعتبر است";
                }
                ?>
            </td>
        </tr>
        <tr>
            <td>کد پیگیری</td>
            <td>
                <?php
                if (isset($trans_id)) {
                    echo $trans_id;
                }else{
                    echo "کد پیگیری نامعتبر است";
                }
                ?>
            </td>
        </tr>
        <tr>
            <td>وضعیت پرداخت</td>
            <td>
                <?php
                if (isset($message)) {
                    echo $message;
                }else{
                    echo "پرداختی صورت نگرفته است";
                }
                ?>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <a href="http://iranganj.ir" target="_blank">www.iranganj.ir</a>
            </td>
        </tr>
    </table>
</div>
</body>
</html>

بعد از اینکه کاربر به درگاه پرداخت هدایت شد بر روی بازگشت به سایت مبدا کلیک می کند که در این صفحه ما اطلاعات برگشتی را از درگاه دریافت می کنیم.

در این صفحه ابتدا چک می کنیم که trans_id وid_get وجود دارد یا نه اگر وجود نداشت پیغام خطا را صادر می کنیم. سپس از تابع get استفاده کرده و مقادیر را دوباره به درگاه پرداخت ارسال می کنیم. سپس خروجی تابع get را در متغیر result ذخیره می کنیم. و با توجه به مقدار برگشتی result پیغام مناسب را به کاربر نمایش می دهیم.

نکته بسیار مهم: ما از آدرس تست درگاه پی لاین استفاده کردیم و شما باید در سایت خود  در آدرس های ارسالی به جای payment-test فقط payment را بنویسید.

در پست بعدی نحوه راه اندازی درگاه پی لاین در PHP با ثبت اطلاعات در پایگاه داده خواهیم پرداخت.

 

دانلود

نویسنده حسین فتحی
گروه مطلب PHP
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۶ بهمن ۱۳۹۴
منبع ایران گنج
تعداد نظرات ۰
قیمت کاربران مهمان
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha